ไม่สามารถตั้งค่า DYLD_FALLBACK_LIBRARY_PATH ในเชลล์บน OSX 10.11.1


11

ในเชลล์สคริปต์ที่ใช้สำหรับการทดสอบหน่วยด้วยไลบรารีแบบไดนามิกในไดเรกทอรีอื่นที่ไม่ใช่ @rpath ทั่วไปก่อนหน้านี้ฉันสามารถตั้งค่า DYLD_FALLBACK_LIBRARY_PATH ก่อนหน้านี้เพื่อตั้งค่าไดเรกทอรีที่มีไลบรารี ภายใต้ 10.11.1, bash ดูเหมือนจะไม่สนใจความพยายามในการตั้งค่าตัวแปรสภาพแวดล้อมนี้:

$ 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 หรือไม่ ฉันไม่พบการเปลี่ยนแปลงนี้ที่บันทึกไว้ใน man pages หรือ online


จะinstall_name_toolความช่วยเหลือ?
Saaru Lindestøkke

แน่นอนว่า install_name_tool เป็นโซลูชันถาวร (และฉันได้เขียนสคริปต์เพื่อตั้งค่าสภาพแวดล้อมการสร้าง) สำหรับการทดสอบและการดีบักอย่างรวดเร็วในสภาพแวดล้อมการพัฒนาเป็นเรื่องยุ่งยากที่จะต้องทำสำเนาไลบรารีชั่วคราวแฮ็คในการเปลี่ยนแปลง @rpath แล้วอาจลืมเกี่ยวกับการเปลี่ยนแปลงด้วยตนเอง DYLD_FALLBACK_LIBRARY_PATH และ DYLD_LIBRARY_PATH นั้นมีประโยชน์สำหรับรอบ dev / ทดสอบเหล่านี้เป็นครั้งคราว
Guy

คำตอบ:


8

นี่คือการป้องกันความถูกต้องของระบบที่แนะนำใน El Capitan

เอกสารนี้มาจาก Apple

โดยพื้นฐานแล้วไฟล์ปฏิบัติการ OS X ของ Apple ที่ได้รับการปกป้อง และ (จากเอกสารก่อนหน้า)

การวางกระบวนการลูกกระบวนการที่ จำกัด โดย System Integrity Protection เช่นโดยการเรียกใช้กระบวนการผู้ช่วยเหลือในบันเดิลด้วย NSTask หรือเรียกคำสั่ง exec (2) รีเซ็ตพอร์ตพิเศษ Mach ของกระบวนการลูกนั้น ตัวแปรสภาวะแวดล้อม dynamic linker (dyld) ใด ๆ เช่น DYLD_LIBRARY_PATH จะถูกลบทิ้งเมื่อเรียกใช้กระบวนการที่ได้รับการป้องกัน

ในกรณีนี้ sh ได้รับการคุ้มครอง


ขอบคุณสำหรับตัวชี้! ฉันมุ่งเน้นไปที่เคอร์เนลและการป้องกันระบบไฟล์อื่น ๆ ใน SIP ไม่ได้สังเกตเห็นการเปลี่ยนแปลงนี้
Guy

2
ตกลงนี่อธิบายถึงที่มาของปรากฏการณ์ แต่ตอนนี้เราควรทดสอบ heck เพื่อทดสอบห้องสมุดที่ไม่ได้ติดตั้งอย่างไร ฉันหมายถึงเราจะเขียนmake checkบน El Capitan เมื่อต้องการ libs ที่แชร์ได้อย่างไร
คิม

การทำผ่าน autoconf ส่วนใหญ่ควรลงท้ายด้วย / usr / local ซึ่งยังสามารถเขียนได้ - หากพวกเขาลองทำที่อื่นภายใต้ / usr ฉันจะถามความรู้ของผู้เขียนเกี่ยวกับ OS X (หรือ Unix)
user151019

หากใครพบสิ่งนี้หลังจากเสียเวลาพยายามที่จะเข้าใจว่าทำไมสภาพแวดล้อม dyld vars จึงหายไปให้ลองยื่นบั๊กกับ Apple เพื่อให้พวกเขาจัดทำเอกสารการโต้ตอบของ dyld / SIP ฉันทำไปแล้วและข้อผิดพลาดก็มีหมายเลข rdar: // 30755019 (ฉันหวังว่าพวกเขาจะคิดเอกสารอื่น ๆ กับดัก ... )
hmijail mourns ลาออก

1
(ฉันหมายถึงเอกสารการมีปฏิสัมพันธ์ SIP ใน manld dyld ซึ่งในขณะที่เขียนนี้เป็นแม่ทั้งหมดเกี่ยวกับมัน)
hmijail mourns ลาออก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.