Неможливо встановити 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 немає у вихідних даних принтену.

Це хакер, пов’язаний із безпекою, в оболонці 10.11? Мені не вдалося знайти цю зміну задокументовано на сторінках man або в Інтернеті.


Чи допоможе install_name_tool ?
Saaru Lindestøkke

Звичайно, install_name_tool - це постійне рішення (і я насправді написав його для налаштування середовища збирання). Для швидкого тестування та налагодження в середовищі розробки потрібне робити тимчасові копії бібліотек, зламати зміни @rpath, а потім, можливо, забути про зміни вручну. DYLD_FALLBACK_LIBRARY_PATH та DYLD_LIBRARY_PATH були зручні для цих випадкових циклів розробки / тестування.
Хлопець

Відповіді:


8

Це захист цілісності системи, запроваджений в El Capitan

Документація знаходиться в цьому від Apple

В основному будь-які виконувані файли ОС OS X захищені. і (з попереднього документа)

Нерестування дітей процесів, обмежених захистом цілісності системи, таких як запуск допоміжного процесу в комплекті з NSTask або виклик команди exec (2), скидає спеціальні порти Маха цього дочірнього процесу. Будь-які змінні середовища (дилд) динамічного середовища (наприклад, DYLD_LIBRARY_PATH) очищаються під час запуску захищених процесів.

У цьому випадку sh захищено


Дякуємо за вказівник! Я був зосереджений на захисті ядра та інших файлових систем у SIP. Не помітили цієї зміни.
Хлопець

2
Гаразд, це пояснює походження явища, але як, напрошу, ми зараз перевіряємо невстановлені бібліотеки? Я маю на увазі, як ми можемо писати make checkна Ель-Капітан, коли потрібні спільні лайки?
акім

Більшість зробити через autoconf має закінчитися в / usr / local, що все ще може бути написано - якщо вони намагатимуться ще десь під / usr, я б поставив під сумнів знання автора про OS X (або Unix)
user151019

Якщо хтось виявить це, витрачаючи час, намагаючись зрозуміти, чому зникає мінливе середовище dild, спробуйте подати помилку в Apple, щоб змусити їх документувати взаємодію dyld / SIP. Я вже зробив, і помилка отримала номер rdar: // 30755019. (Я сподіваюся, що вони потім подумають задокументувати інші подібні пастки ...)
hmijail сумує у відставці

1
(Я мав на увазі задокументувати взаємодію SIP у програмі dild manpage, яка з цього приводу є абсолютно мамою про це)
hmijail сумує у відставці
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.