Forzar una versión específica de un marco para un proceso

Así que creo que se sabe que OS X 10.10.5 rompe el servidor de calendario debido a las incompatibilidades entre la versión de Python en 10.10.5 y una parte específica del servidor de calendario. Funciona en 10.10.3 y 10.10.4. He determinado que al reemplazar la versión de Python.framework en /System/Library/Frameworks que viene con 10.10.5 con una versión de otra máquina (mi computadora portátil) que ejecuta 10.10.3, ¡el servidor de calendario vuelve a funcionar mágicamente! Sin embargo, dudo un poco acerca de permitir que todo el sistema 10.10.5 use Python.framework de 10.10.3.

¿Hay alguna manera de obligar solo al proceso de Calendar Server a usar el marco Python 10.10.3, mientras que el resto del sistema puede usar el nuevo que viene con 10.10.5?

Actualicé el servidor hace unos días y ninguna de las personas que dependen de esos calendarios puede acceder a ellos ahora mismo. La solución ofrecida por varios otros lugares fue actualizar a 10.11, pero tengo algunas otras aplicaciones que deben ejecutarse en este servidor que solo funcionan en 10.10 y no funcionan en 10.11. Estoy seguro de que no hay manera de hacer que funcionen en 10.11, por lo que la única opción para mí en este momento es quedarme con 10.10.

¿Es este el servidor de calendario de Apple?
Sí. Este es el servidor de calendario incorporado en OS X Server

Respuestas (1)

Una forma peligrosa de avanzar es usar la variable de entorno DYLD_INSERT_LIBRARIES para cambiar el marco de Python que usa el servidor de calendario. Deberá editar la plist de lanzamiento para el servidor de calendario dentro del paquete Server.app para agregar su variable de entorno. Busque en Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/ el archivo.

Las páginas man para launchd.plist(5) y dyld(1) serán útiles. Además, el otool -Lcomando puede ayudarlo a rastrear las dependencias.

No estoy seguro de qué tan bien funcionará el servidor de calendario con estos cambios.