11 votes

L'exécution de "homebrew upgrade [formules spécifiques] a mis à jour beaucoup plus de choses, pourquoi ?

J'ai donc dû mettre à niveau youtube-dl et a couru brew upgrade youtube-dl . Pendant qu'il fonctionnait, homebrew a décidé qu'il devait mettre à jour beaucoup d'autres choses, y compris toutes les versions de PHP que j'ai installées... Et maintenant, aucun d'entre eux ne fonctionne comme il le devrait (messages d'erreur dans le cli, modules non chargés, etc.).

Je vais continuer et probablement reformater ma machine pour avoir une ardoise propre, mais je me demande pourquoi en cours d'exécution brew upgrade tout en donnant explicitement le paquet pour mettre à jour les autres. Je comprends les dépendances, mais je doute fortement que youtube-dl dépend de PHP 7.4 et PHP 8.0, et autres.

Y a-t-il un drapeau que j'ai manqué ? Quelque chose d'autre ?

10voto

nohillside Points 82672

Pour voir l'arbre des dépendances d'un paquet Homebrew, utilisez brew deps --tree <package> :

$ brew deps --tree --include-build youtube-dl
youtube-dl
 python@3.9
     pkg-config
     gdbm
     mpdecimal
     openssl@1.1
     readline
     sqlite
        readline
     xz

youtube-dl , php y php@7.4 dépendent tous de python@3.9 . I pourrait imaginez que la mise à jour youtube-dl a déclenché une mise à jour de python@3.9 qui était incompatible avec les versions installées de php / php@7.4 ce qui déclenche une mise à jour de ces paquets également.

10voto

JBallin Points 8187

FAQ Homebrew :

Pourquoi la mise à jour de la bière met aussi à jour un tas d'autres choses ?

Homebrew ne supporte pas les mélanges arbitraires de formules. donc tout ce dont une formule dépend, et tout ce que les versions de la et tout ce qui en dépend à son tour, doit être mis à jour à la dernière version car c'est la seule combinaison de formules que nous testons. En conséquence, toute donnée upgrade o install peut mettre à niveau de nombreuses autres (apparemment sans rapport avec la formule, si quelque chose d'important comme python o openssl avait également besoin d'une mise à niveau.

Comment empêcher la mise à jour de certaines formules ?

Empêcher quelque chose d'être mis à jour/mise à niveau :

brew pin <formula>

Pour permettre à cette formule de se mettre à jour à nouveau :

brew unpin <formula>

Notez que les formules dépassées qu'un autre dépendent doivent être mises à jour si nécessaire, car nous n'autorisons pas les car nous n'autorisons pas les formules à être construites avec des versions périmées. Si cela n'est pas souhaité, vous pouvez plutôt brew extract pour maintenir votre propre copie de la formule dans un robinet.

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