Comprender las dependencias de cerveza casera y solo barriles

120

Recientemente comencé a usar homebrew, y estoy un poco confundido sobre lo que sucede cuando preparo algo en mi sistema, pero sus dependencias elaboradas son solo de barril, lo que significa que están vinculadas bajo /usr/local .

Por ejemplo, estoy instalando vips (una biblioteca de procesamiento de imágenes). Una de sus muchas dependencias es pixman. Pixman se instala solo como barril porque aparentemente Mac OSX (Snow Leopard en este caso) ya viene con él (o una versión).

¿Significa esto que los vips usarán la versión del sistema de pixman? Si es así, ¿no existen posibles problemas de control de versiones relacionados con el uso de la versión del sistema en lugar de la versión de dependencia (suponiendo que sean diferentes)?

cgat
fuente

Respuestas:

197

Para un software para ser "barril de sólo" medios estuviera instalado en /usr/local/Cellar, pero no vinculados en lugares como /usr/local/bin, /usr/local/lib, etc. Eso significa otro software que depende de lo que tiene que ser compilado con instrucciones específicas para utilizar los archivos de /usr/local/Cellar. Eso se hace automáticamente brew installcuando una fórmula especifica dependencias solo de barril.

Las fórmulas que especifican dependencias exclusivas de barriles garantizan que no se utilicen las bibliotecas del sistema equivalentes. Su instalación de vips está vinculada a una versión específica de pixman en /usr/local/Cellar/pixman/<version>, por lo que no se ve afectada por la versión del sistema de pixman o cualquier otra versión de Homebrew de pixman que pueda instalar.

Echristopherson
fuente
9
¡Buena explicación! A menudo puede verificar con otool -L /usr/local/Cellar/vips/???/lib/*.dylibqué otras bibliotecas se vincula.
Samuel John
Tengo un openssl 1.0.2s instalado por homebrew y mi mac os tiene LibreSSL 2.6.5 Cuando lo hago openssl version, siempre muestra el de os (LibreSSL) pero cuando ejecuto mi python en modo interactivo, en realidad está usando openssl. ¿Puedes ayudarme a entender cómo Python recogió el openssl correcto? @echristopherson
Alex
1
@Alex Like echristopherson dijo: Está vinculado a una versión específica de openssl(durante la instalación). Eche un vistazo a pythonBrew Formula ; allí puede ver que la ruta (prefijo de preparación) de la [email protected]fórmula se usa como arg, que a su vez se usa para configure.
einjohn