2016-03-09 6 views
6

मैं एक CentOS 6.7 पर epel रेपो से वार्निश स्थापित है, और यह निम्न त्रुटि के साथ शुरू करने के लिए विफल रहता है:वार्निश शुरू करने के लिए के साथ विफल कार्रवाई की अनुमति नहीं

Compiled VCL program failed to load: 
    ./vcl.1P9zoqAU.so: failed to map segment from shared object: Operation not permitted 
VCL compilation failed 

अगर मैं strace varnishd द्विआधारी, मैं अंत तक निम्नलिखित लाइनों मिल

chdir("/var/lib/varnish/myserver.foo.bar") = 0 
open("./vcl.1P9zoqAU.c", O_RDWR|O_CREAT|O_EXCL, 0600) = 3 

तो मैं जाँच की है कि अनुमतियाँ सही इस निर्देशिका पर थे (प्लस मैं जड़ के साथ चल रहा हूँ), मैं विकलांग SELinux, रिबूट, पुनर्स्थापित ... सबसे पहले यह वार्निश 2.1.15 के साथ हुआ, लेकिन वही है 4.0.3 के साथ हो रहा है (आधिकारिक वार्निश रेपो का उपयोग कर)।

क्या आपको पता है कि मेरे सिस्टम पर क्या चल रहा है?

+0

क्या आप यह सुनिश्चित करने के लिए जांच सकते हैं कि फ़ाइल सिस्टम 'नोएक्सैक' के साथ आरोहित नहीं है? – Petesh

+0

ओमग, यही कारण था ... क्या आप समझा सकते हैं (एक विषय में जवाब) क्यों एक नोएक्सक विकल्प का मूल खुला() ऑपरेशन पर असर पड़ता है? जो मैं समझता हूं उससे, वार्निश अब सी में वीसीएल कॉन्फ़िगरेशन बनाने की कोशिश कर रहा है ताकि इसे स्मृति में लोड किया जा सके। मुझे यकीन नहीं है कि यहाँ नोएक्सैक हस्तक्षेप कर रहा था। आपकी मदद के लिए धन्यवाद –

उत्तर

6

वार्निश के स्टार्टअप के हिस्से के रूप में, यह configuration of it's behaviour की लोड करने योग्य लाइब्रेरी उत्पन्न करता है। यह वार्निश द्वारा रन-टाइम पर संकलित और लोड हो जाता है।

Compiled VCL program failed to load: 
    ./vcl.1P9zoqAU.so: failed to map segment from shared object: Operation not permitted 
VCL compilation failed 

अर्थात यह एक dlopen कॉल कि नाकाम रहने है: इस बात की है कि त्रुटि के साथ के बारे में शिकायत की जा रही है। नए संस्करण a slightly more obvious message है जहां यह कहते हैं:

dlopen(vcl_boot/vgc.so) = failed to map segment from shared object: Operation not permitted 

इस मामले में, निर्देशिका कि .so एक फाइल सिस्टम कि noexec विकल्प है, जो dlopen विफल का कारण बनता है के साथ रखा जाता है पर रहता है में रखा गया है।

इसे संबोधित करने के लिए इस फ़ाइल सिस्टम को exec विकल्प के साथ पुन: समायोजित करने की आवश्यकता है।

+0

आप इसे/etc/fstab कॉन्फ़िगरेशन को बदलकर उबंटू पर कर सकते हैं:/tmp \t \t ext4 \t डिफ़ॉल्ट, निष्पादन, nosuid, nodev –

संबंधित मुद्दे