Comprendre les dépendances homebrew et keg uniquement

120

J'ai récemment commencé à utiliser l'homebrew, et je suis un peu confus quant à ce qui se passe lorsque je brasse quelque chose sur mon système, mais ses dépendances brassées sont uniquement en fût, ce qui signifie qu'elles sont liées sous /usr/local.

Par exemple, j'installe vips (une bibliothèque de traitement d'image). L'une de ses nombreuses dépendances est pixman. Pixman est installé en tant que fût uniquement car apparemment Mac OSX (Snow Leopard dans ce cas) est déjà livré avec (ou une version de celui-ci).

Cela signifie-t-il que les vips utiliseront la version système de pixman? Si tel est le cas, n'y a-t-il pas des problèmes de version potentiels liés à l'utilisation de la version du système plutôt que de la version des dépendances (en supposant qu'ils soient différents)?

cgat
la source

Réponses:

198

Pour un logiciel pour être « keg-seulement » signifie qu'il est installé dans , /usr/local/Cellarmais non liés dans des endroits comme /usr/local/bin, /usr/local/lib, etc. Cela signifie que d' autres logiciels qui en dépend doit être compilé avec des instructions spécifiques pour utiliser les fichiers /usr/local/Cellar. Cela se fait automatiquement brew installlorsqu'une formule spécifie des dépendances uniquement pour le fût.

Les formules qui spécifient des dépendances de fût uniquement garantissent que les bibliothèques système équivalentes ne sont pas utilisées. Votre installation de vips est liée à une version spécifique de pixman dans /usr/local/Cellar/pixman/<version>, elle n'est donc pas affectée par la version système de pixman ou par toute autre version Homebrew de pixman que vous pourriez installer.

echristopherson
la source
9
Bonne explication! Vous pouvez souvent vérifier avec otool -L /usr/local/Cellar/vips/???/lib/*.dylibquelles autres bibliothèques il est lié.
Samuel John
J'ai un openssl 1.0.2s installé par homebrew et mon mac os a LibreSSL 2.6.5 Quand je le fais openssl version, il montre toujours celui d'os (LibreSSL) mais quand j'exécute mon python en mode interactif, il utilise en fait openssl. Pouvez-vous m'aider à comprendre comment python a choisi l'openssl correct? @echristopherson
Alex
1
@Alex Comme echristopherson a dit: Il est lié à une version spécifique de openssl(pendant l'installation). Jetez un œil à la pythonformule Brew ; là, vous pouvez voir que le chemin (préfixe de brassage) de la [email protected]formule est utilisé comme arg, qui à son tour est utilisé pour configure.
einjohn