OSX 10.11.1 पर शेल में DYLD_FALLBACK_LIBRARY_PATH सेट करने में असमर्थ


11

विशिष्ट @rpath के अलावा किसी डाइरेक्टरी में डायनेमिक लाइब्रेरीज़ के साथ यूनिट टेस्टिंग के लिए उपयोग की जाने वाली शेल स्क्रिप्ट्स में, मैं पहले लायब्रेरी वाले डायरेक्टरी को सेट करने के लिए DYLD_FALLBACK_LIBRARY_PATH सेट करने में सक्षम रहा हूँ। 10.11.1 के तहत, बैश इस पर्यावरण चर को सेट करने के प्रयासों की उपेक्षा करता है:

$ sh -x testscript.sh
+ DYLD_FALLBACK_LIBRARY_PATH=/Users/something/testinglibs
+ export DYLD_FALLBACK_LIBRARY_PATH
+ exec printenv

और DYLD_FALLBACK_LIBRARY_PATH Printenv के आउटपुट में मौजूद नहीं है।

क्या यह 10.11 के शेल में सुरक्षा से संबंधित हैक है? मैं इस बदलाव को मैन पेज या ऑनलाइन में दर्ज नहीं कर पाया हूं।


क्या install_name_tool मदद करेगा?
सारू लिंडस्टोक

ज़रूर, install_name_tool एक स्थायी समाधान है (और मैंने वास्तव में इसे बिल्ड पर्यावरण को सेटअप करने के लिए स्क्रिप्ट किया है)। विकास के माहौल में त्वरित परीक्षण और डिबगिंग के लिए, पुस्तकालयों की अस्थायी प्रतियां बनाना, @rpath परिवर्तनों में हैक करना और फिर संभवतः मैन्युअल परिवर्तन के बारे में भूलना एक परेशानी है। DYLD_FALLBACK_LIBRARY_PATH और DYLD_LIBRARY_PATH इन सामयिक देव / परीक्षण चक्रों के लिए उपयोगी थे।
गाइ

जवाबों:


8

यह एल कैपिटान में पेश सिस्टम इंटीग्रिटी प्रोटेक्शन है

प्रलेखन में है यह एप्पल से

मूल रूप से किसी भी Apple आपूर्ति किए गए OS X निष्पादक सुरक्षित हैं। और (पहले के दस्तावेज़ से)

सिस्टम इंटिग्रिटी प्रोटेक्शन द्वारा प्रतिबंधित प्रक्रियाओं की प्रक्रिया के बच्चों को पैदा करना, जैसे NSTask के साथ एक बंडल में एक सहायक प्रक्रिया शुरू करना या निष्पादन (2) कमांड को कॉल करना, उस बच्चे की प्रक्रिया के माच के विशेष बंदरगाहों को रीसेट करता है। किसी भी डायनेमिक लिंकर (डाइल्ड) पर्यावरण चर, जैसे कि DYLD_LIBRARY_PATH, को संरक्षित प्रक्रियाओं को लॉन्च करते समय शुद्ध किया जाता है।

इस मामले में श संरक्षित है


सूचक के लिए धन्यवाद! मैं SIP में कर्नेल और अन्य फाइलसिस्टम सुरक्षा पर केंद्रित था। इस बदलाव पर ध्यान नहीं दिया।
गाय

2
ठीक है, यह घटना की उत्पत्ति की व्याख्या करता है, लेकिन हम अब गैर-स्थापित पुस्तकालयों का परीक्षण कैसे करने वाले हैं? मेरा मतलब है, make checkजब साझा देयताओं की आवश्यकता होती है, तो हम एल कैपिटन पर कैसे लिख सकते हैं?
अकीम

अधिकांश ऑटोकॉन्फ़ के माध्यम से / usr / स्थानीय में समाप्त होना चाहिए जो अभी भी लिखने योग्य है - अगर वे / usr के तहत कहीं और के लिए प्रयास करते हैं तो मैं लेखक के ओएस एक्स (या यूनिक्स) के ज्ञान पर सवाल
उठाऊंगा

यदि किसी को यह समझने में समय बर्बाद करने के बाद लगता है कि डाईल्ड पर्यावरण संस्करण क्यों गायब हो रहे थे, तो ऐप्पल के साथ बग दर्ज करने पर विचार करें ताकि उन्हें डाइल्ड / एसआईपी इंटरैक्शन का दस्तावेज बनाया जा सके। मैंने पहले ही किया था, और बग को नंबर rdar मिला: // 30755019। (मैं उम्मीद कर रहा हूं कि वे फिर ऐसे अन्य जालों का दस्तावेजीकरण करने की सोचेंगे ...)
हमीज ने इस्तीफा दे दिया

1
(मेरा मतलब था कि डाइल्ड मैनपेज में SIP इंटरैक्शन का दस्तावेज़, जो इस लेखन के बारे में पूरी तरह से
मम है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.