18 votes

Comment puis-je empêcher Homebrew d'installer une copie d'un logiciel que j'ai installé par d'autres moyens ?

J'aime utiliser Homebrew pour installer des logiciels Unix sur mon Mac, et j'apprécie qu'il n'essaie pas d'installer plusieurs copies de choses comme Python. Il y a cependant certains paquets que j'ai déjà installés manuellement, et je ne veux pas que Homebrew installe ses propres copies de ces paquets.

Dans ma situation actuelle, j'ai installé OCaml en utilisant le programme d'installation standard. Maintenant, je veux installer Coq via Homebrew. Je vois que via brew deps coq qu'il dépend d'OCaml. Je sais que je peux lui dire de ne pas installer OCaml cette fois-ci via brew install --ignore-dependencies coq . Cependant, je préférerais ne pas avoir à le faire à chaque fois que j'installe un paquet Homebrew qui nécessite OCaml.

Comment puis-je faire croire à Homebrew qu'il a installé un logiciel que j'ai installé par d'autres moyens, afin qu'il n'essaie pas d'installer une copie en double ?

16voto

Bryson Points 1644

Prenez le chemin que vous avez utilisé pour --prefix= pendant votre ./configure et faire un lien symbolique avec le Cellar/ que Homebrew utilise. Homebrew verra ces répertoires et considérera les dépendances comme satisfaites (sauf si vous avez besoin de les faire compiler avec ou sans certaines fonctionnalités pour que les formules de Homebrew se compilent correctement). Si vos dépendances compilées manuellement ne sont pas compilées correctement, vous obtiendrez probablement des erreurs de la part de Homebrew.

ln -s /path/from/prefix/ /usr/local/Cellar/path/from/prefix

(Notez la barre oblique de fin sur le premier chemin, et l'absence de barre oblique de fin sur le second. OS X peut être pointilleux sur ces slashs lors de la création de liens symboliques).

C'est la mauvaise façon de faire, vous devriez simplement utiliser --ignore-dependencies coq - c'est pour ça qu'il est là.

0voto

Tony Points 101

Un point de vue légèrement différent, qui aboutit à une solution similaire à la réponse de @Bryson, mais la façon d'y parvenir peut être plus générale et utile à un plus grand nombre de personnes. De plus, je ne suis pas d'accord avec l'affirmation selon laquelle la bonne façon de procéder est d'utiliser la fonction --ignore-dependencies drapeau. Lorsque vous utilisez ce drapeau, il est dit

Attention : --ignore-dependencies est un drapeau de développeur Homebrew non supporté ! Ajustez votre PATH pour mettre toute version préférée d'applications plus tôt dans le PATH plutôt que d'utiliser ce drapeau non supporté !

De plus, je n'aime pas cette solution parce que vous devez vous rappeler de vérifier manuellement les dépendances de tout ce que vous installez à l'avenir, et faire manuellement le travail d'installation de toutes ces dépendances autres que celle que vous voulez éviter. Je pense que c'est une très mauvaise solution. L'avertissement contient en fait une suggestion pour résoudre le problème : ajustez votre variable de chemin. J'ai rencontré ce problème avec Java, pas avec OCaml, mais la solution devrait être la même pour tous les logiciels. brew met les exécutables dans /usr/local/bin/ Le répertoire contenant l'exécutable de la dépendance que vous voulez utiliser doit donc se trouver plus tôt dans votre chemin que /usr/local/bin/ . Je vérifie donc quel est l'exécutable Java utilisé.

$ which java
/usr/bin/java

Et je vérifie mon chemin pour voir où il est relatif à /usr/local/bin/

$ echo $PATH | tr ':' '\n'
...
/usr/local/bin
/usr/bin
...

Je pourrais changer l'ordre de ceux-ci dans mon .bashrc o .bash_profile mais je veux en fait garder cet ordre, donc à la place je vais créer un lien symbolique dans /usr/local/bin pour pointer vers l'exécutable de la dépendance en /usr/bin alors brew sera capable de voir ma version de la dépendance au même niveau que toutes les autres dépendances de brew.

$ ln -s /usr/bin/java /usr/local/bin/java

Désormais, Brew n'essaiera pas d'installer une autre version de Java, ou toute autre dépendance.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X