Принудительно использовать определенную версию фреймворка для процесса

Итак, я думаю, известно, что OS X 10.10.5 ломает сервер календаря из-за несовместимости между версией Python 10.10.5 и определенной частью сервера календаря. Это работает в 10.10.3 и 10.10.4. Я определил, что, заменив версию Python.framework в /System/Library/Frameworks, поставляемую с 10.10.5, версией с другой машины (моего ноутбука), на которой работает 10.10.3, сервер календаря волшебным образом снова заработал! Однако я несколько сомневаюсь, стоит ли разрешать всей системе 10.10.5 использовать Python.framework из 10.10.3.

Есть ли способ заставить только процесс Calendar Server использовать 10.10.3 Python.framework, в то время как остальная часть системы может использовать новый, поставляемый с 10.10.5?

Я обновил сервер несколько дней назад, и никто из тех, кто зависит от этих календарей, не может получить к ним доступ прямо сейчас. Исправление, предложенное в нескольких других местах, заключалось в обновлении до 10.11, но у меня есть некоторые другие приложения, которые должны работать на этом сервере, которые работают только на 10.10 и не работают на 10.11. Я уверен, что нет никакого способа заставить их работать на 10.11, поэтому единственный вариант для меня сейчас — придерживаться 10.10.

Это сервер календаря Apple?
Да. Это встроенный сервер календаря в OS X Server.

Ответы (1)

Опасный способ двигаться вперед — использовать переменную среды DYLD_INSERT_LIBRARIES, чтобы изменить структуру Python, используемую сервером календаря. Вам нужно будет отредактировать список запуска для сервера календаря внутри пакета Server.app, чтобы добавить переменную среды. Найдите файл в Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/.

Будут полезны справочные страницы для launchd.plist(5) и dyld(1) . Также otool -Lкоманда может помочь вам отследить зависимости.

Я не уверен, насколько хорошо сервер календаря будет работать с этими изменениями.