406 votes

Désinstaller / supprimer un paquet Homebrew, y compris toutes ses dépendances

J'ai un Homebrew que je souhaite désinstaller/supprimer avec toutes ses dépendances, en ignorant les paquets dont dépendent d'autres paquets (alias Retrait des paquets en cascade dans le jargon des gestionnaires de paquets).

par exemple Désinstaller le paquet a qui dépend des paquets b & c où le paquet d dépend également du paquet c . Le résultat devrait désinstaller les deux a & b , en sautant c .

Comment puis-je faire ça ?

Il doit y avoir un moyen de désinstaller un paquet sans laisser des informations inutiles. junk derrière.

10 votes

N'est-ce pas ce que tout gestionnaire de paquets, digne de ce nom, devrait faire en sortie de boîte ? ! LOL

3 votes

A partir de 2021, brew autoremove est ce que vous recherchez :

456voto

Ory Band Points 1909

EDITAR:

On dirait que le problème est maintenant résolu en utilisant une commande externe appelée brew rmdeps o brew rmtree .

Pour l'installer et l'utiliser, exécutez les commandes suivantes :

$ brew tap beeftornado/rmtree
$ brew rmtree <package>

Voir le lien ci-dessus pour plus d'informations et de discussions.


Réponse originale :

Il semble qu'actuellement, il n'y ait pas de moyen facile d'y parvenir.

Cependant, je a déposé un problème sur la page GitHub de Homebrew et quelqu'un a suggéré une solution temporaire jusqu'à ce qu'ils ajoutent une commande exclusive pour résoudre ce problème.

Il y a un commande externe appelé brew leaves qui imprime tous les paquets qui ne sont pas des dépendances d'autres paquets.

Si vous faites une logique et sur la sortie de brew leaves y brew deps <package> vous n'obtiendrez peut-être qu'une liste des paquets de dépendance orphelins, que vous pourrez désinstaller manuellement par la suite. Combinez ceci avec xargs et vous obtiendrez ce dont vous avez besoin, je suppose (non testé, ne comptez pas là-dessus).


EDITAR: Quelqu'un vient de suggérer une solution très similaire, en utilisant join au lieu de xargs :

brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))

Voir le commentaire sur la question mentionnée ci-dessus pour plus d'informations.

1 votes

En 2020, cette solution semble être le meilleur de tous les mondes présentés ici. Il est utile de mentionner que la plupart du temps, après avoir purgé un grand nombre de paquets, il est nécessaire de procéder comme suit brew cleanup -s && \rm -rf "$(brew --cache)"

64voto

hsym Points 1197

À la fin de 2020, l'équipe Homebrew a ajouté une simple commande brew autoremove pour supprimer toutes les dépendances inutilisées.

Tout d'abord, désinstallez le paquet :

brew uninstall <package>

Ensuite, supprimez toutes les dépendances inutilisées :

brew autoremove

3 votes

Cela a marché comme un charme !

0 votes

Cela supprime aussi certains paquets qui sont listés dans brewfile, pourquoi ?

0 votes

@stevemao Essayez de demander à l'équipe Homebrew.

42voto

Timmmm Points 9909

brew rmtree ne fonctionne pas du tout . Parmi les liens sur cette question, j'ai trouvé rmrec qui fonctionne réellement. Dieu sait pourquoi brew ne dispose pas de cette commande en tant que commande native.

brew tap ggpeti/rmrec
brew rmrec pkgname

0 votes

J'aime vraiment ça, bien que si vous avez déjà commencé à vous désinstaller et que vous continuez à trouver d'autres paquets à supprimer, vous devez quand même savoir quels sont les paquets les plus touchants, ou vous pouvez simplement réinstaller brièvement le paquet [FORMULA] et ensuite utiliser rmrec pour supprimer récursivement toutes ses dépendances correctement.

3 votes

Avertissement : il apparaît également rmrec ne gère pas très bien les paquets à espacement de noms. J'utilisais quelque chose qui tirait dans linuxbrew/xorg/xorg et il a tout supprimé sauf ce paquet, et même en nommant explicitement ce paquet, il n'a pas pu le résoudre et n'a rien fait.

0 votes

Confirmé que la recommandation d'utiliser rmrec est mauvais. Il ne gère pas du tout les dépendances.

37voto

jfmercer Points 736

L'objectif ici est de supprimer le paquet donné et ses dépendances. sans casser les dépendances d'un autre paquet. J'utilise cette commande :

brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | xargs brew install

Note : Modifié pour refléter le commentaire utile de @alphadogg.

0 votes

J'ai dû ajouter --ignore-dependencies à supprimer pour que cela fonctionne.

6 votes

Cela a cassé ma configuration brew, car il n'a pas réinstallé les deps qui sont utilisés dans d'autres paquets. N'UTILISEZ PAS

21voto

vault Points 719

Basé sur la réponse de @jfmercer (les corrections nécessitaient plus qu'un commentaire).

Supprime les dépendances du paquet (ne supprime pas le paquet) :

brew deps [FORMULA] | xargs brew remove --ignore-dependencies

Retirez l'emballage :

brew remove [FORMULA]

Réinstallez les bibliothèques manquantes :

brew missing | cut -d: -f2 | sort | uniq | xargs brew install

Désinstallation testée meld après avoir découvert Communiqués de MeldMerge .

0 votes

J'avais installé ffmpeg avec brew, ce qui a gravement perturbé les choses. Le nettoyage de ffmpeg, y compris sa liste étendue de dépendances, avec la méthode décrite ci-dessus, a fonctionné pour moi.

0 votes

Pour moi brew deps montrent des paquets différents de ceux qui sont montrés après brew uninstall tentative.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X