21 votes

Homebrew : Comment ignorer la formule cask lors d'une mise à jour `brew` (puisque `pin` n'a pas d'option `--cask`) ?

Comment est-il possible d'ignorer une formule par son nom lors de la mise à jour des paquets dans Homebrew avec brew upgrade ?

Existe-t-il une commande équivalente à celle-ci ?

brew upgrade --ignore <FORMULA>

Cette question Stack Overflow de 2014 a plusieurs réponses qui mentionnent brew pin comme solution, mais cette fonctionnalité ne fonctionne pas pour les fûts :

14voto

toolkit Points 27248

Solution de rechange

Vous pouvez utiliser buo/homebrew-cask-ugrade qui est un outil tiers avec des fonctions supplémentaires cask des fonctions de mise à niveau, notamment pin .

brew tap buo/cask-upgrade    # Install `brew-cask-upgrade`
brew cu pin <CASK_NAME>      # Pin the cask you want

Raison de la solution de contournement

Il semble que le responsable de Homebrew n'autorisera pas l'épinglage des fûts, car de nombreux fûts se mettent à jour automatiquement, ce que Homebrew ne peut techniquement pas empêcher.

D'un commentaire sur homebrew/homebrew-cask : Autoriser l'épinglage des fûts #49127 :

Une grande partie des fûts sont mis à jour automatiquement et nous ne pouvons pas l'empêcher. Donc l'épinglage serait au mieux incohérent et ne fonctionnerait pas dans de nombreux cas.

3 votes

Oui, c'est génial... mais qu'en est-il des casks qui ne se mettent pas à jour automatiquement et que vous ne voulez absolument PAS mettre à jour (je pense à eclipse-java... quand on utilise brew upgrade cela casse votre installation).

0 votes

Je ne suis pas sûr, mais si vous voulez résoudre ce problème spécifiquement, je passerais à IntelliJ IDEA. Il est bien meilleur qu'Eclipse et n'a pas ce problème.

0 votes

Honnêtement, j'ai essayé plusieurs fois IntelliJ au cours des dernières années, et je le déteste ; pour moi, ce n'est pas mieux qu'Eclipse, je trouve que c'est juste un autre IDE sur-compliqué et gonflé... et comme je suis habitué à Eclipse depuis plus de 15 ans maintenant, je ne trouve aucune raison de changer. Ou peut-être pour VS Code... ah ah !!! mais on est dans l'erreur ici...

9voto

FK82 Points 121

Si vous êtes prêt à écrire un peu de code BASH, cela peut être fait en une ligne en utilisant brew list y grep --invert-match :

brew upgrade $(brew list | grep --invert-match <FORMULA>)

Essentiellement, nous filtrons simplement la liste des paquets installés par brew et nous filtrons celui appelé <FORMULA> en utilisant la correspondance inversée de grep.

Testé avec brew 3.4.3 sur GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin20).

3 votes

Je viens de l'utiliser, excellente réponse. Pour être précis, je l'utilise pour les fûts, mais cela fonctionnerait tout aussi bien pour les formules. Je lis une variable d'environnement à partir d'une liste de fûts à ignorer comme ceci : BREW_CASK_IGNORELIST=$(awk '{print $1}' .brew-upgrade-cask-ignorelist | paste -s -d"|" - |sed "s/\|/\\\|/g") ; suivi de brew upgrade --cask --greedy --force $(brew list --cask | grep --invert-match --regexp $BREW_CASK_IGNORELIST) .

8voto

Raff Points 134

J'ai découvert une solution beaucoup plus agréable pour cela :

Ajouter auto_updates true au fichier de cask que vous voulez exclure de brew upgrade . De cette façon, le cask est toujours entièrement géré par brew et peut même être mis à jour en utilisant le module brew upgrade --greedy .


ancienne réponse

J'ai trouvé une autre solution de contournement qui fonctionnera aussi en quelque sorte avec brew upgrade en supprimant simplement le fichier Cask de /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks .

Après avoir supprimé le fichier, brew ne vérifie plus les mises à jour du cask et ne l'inscrit donc même pas dans la liste de la rubrique brew upgrade plus. Gardez à l'esprit que cela interrompra définitivement toutes les autres opérations avec ce tonneau.

Le problème était que je devais indiquer la version d'un JDK car Brew essayait de le mettre à niveau vers une version plus récente qui n'était pas encore disponible en production. J'ai donc supprimé le fichier /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks/temurin.rb fichier.

0 votes

Réponse géniale ! C'est mieux que de modifier le fichier cask avec un numéro de version différent, car il est détruit à chaque mise à jour globale.

0 votes

A fonctionné pour empêcher Homebrew de mettre à niveau LibreOffice vers 7.5.0 sur ma machine MacOS 10.13. Avant la modification, brew outdated répertorié libreoffice (7.4.5) != 7.5.0 . Après la modification, il ne liste rien.

2voto

Sean DeNigris Points 101

Une variante apparemment plus sûre de La réponse de Max est de supprimer les dossiers concernés dans /opt/homebrew/Caskroom/ .

Cela semble faire oublier à Brew qu'il les a installés (par exemple, ils n'apparaissent plus dans la section brew list mais sans toucher aux internes de la bibliothèque de Brew.

1voto

Ana Points 71

Est-ce que Brew sait ou se soucie qu'internet pense que pin est supprimée ? :-)

Mon brew (3.3.12, dernier commit 2022-01-26) n'en sait rien. De man brew

pin installed_formula [...]
       Pin the specified formula, preventing them from being upgraded when issuing the brew upgrade
       formula command. See also unpin.

upgrade [options] [outdated_formula|outdated_cask ...]
       Upgrade outdated casks and outdated, unpinned formulae using the same options they were
       originally installed with, plus any appended brew formula options. If cask or formula are
       specified, upgrade only the given cask or formula kegs (unless they are pinned; see pin, unpin).

La documentation semble correspondre à la réalité puisque j'ai pu épingler, sortir une liste d'épinglage et désépingler :

+ > brew pin fzf
+ > brew list --pinned
fzf
+ > brew unpin fzf
+ > brew list --pinned
+ >

Si pin est ce que vous voulez ou avez besoin est une autre histoire, mais les rumeurs qui pin est supprimée sont grandement exagérées.

1 votes

Désolé, je me suis trompé quand j'ai dit "supprimé". J'avais voulu dire que pin ne fonctionne pas pour les fûts, puisqu'il n'y a pas de --cask et les fûts ne sont pas mentionnés dans pin 's --help ou la page de manuel.

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