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 :

13voto

Chad Skeeters Points 495

Pour utiliser cette réponse, vous devez créer et maintenir un fichier contenant les noms des paquets que vous souhaitez installer sur votre système. Si vous n'en avez pas déjà un, utilisez la commande suivante et supprimez les noms des paquets que vous ne voulez pas garder installés.

brew leaves > brew_packages

Vous pouvez ensuite supprimer tous les paquets installés, mais non désirés, et toutes les dépendances inutiles en exécutant la commande suivante

brew_clean brew_packages

brew_clean est disponible ici : https://gist.github.com/cskeeters/10ff1295bca93808213d

Ce script récupère tous les paquets que vous avez spécifiés dans brew_packages et toutes leurs dépendances et les compare à la sortie de brew list et supprime finalement les paquets non désirés après avoir vérifié cette liste avec l'utilisateur.

À ce stade, si vous souhaitez supprimer le paquet a il suffit de le supprimer du fichier brew_packages et de relancer le programme brew_clean brew_packages . Il supprimera b pero no c .

0 votes

Je pense que Brew Clean est intégré maintenant, essayez brew clean -s

2 votes

LE COMMENTAIRE QUI PRÉCÈDE ÉTAIT FAUX, le montage se coupe à 5 minutes. essayez brew cleanup -s && brew cask cleanup

11voto

Kevin Davies Points 111

Enregistrez le script suivant en tant que brew-purge

#!/bin/bash
#:Usage: brew purge formula
#: 
#:Removes the package and all dependancies.
#: 
#: 
PKG="$1"
if [ -z "$PKG" ];then
   brew purge --help
   exit 1
fi
brew rm $PKG
[ $? -ne 0 ] && exit 1
while brew rm $(join <(brew leaves) <(brew deps $PKG)) 2>/dev/null
  do :
done
echo Package $PKG and its dependancies have been removed.
exit 0

Maintenant, installez-le avec la commande suivante

sudo install brew-purge /usr/local/bin

Maintenant, exécutez-le

brew purge package

Exemple d'utilisation de gpg

$ brew purge gpg
Uninstalling /usr/local/Cellar/gnupg/2.2.13... (134 files, 11.0MB)
Uninstalling /usr/local/Cellar/adns/1.5.1... (14 files, 597.5KB)
Uninstalling /usr/local/Cellar/gnutls/3.6.6... (1,200 files, 8.9MB)
Uninstalling /usr/local/Cellar/libgcrypt/1.8.4... (21 files, 2.6MB)
Uninstalling /usr/local/Cellar/libksba/1.3.5... (14 files, 344.2KB)
Uninstalling /usr/local/Cellar/libusb/1.0.22... (29 files, 508KB)
Uninstalling /usr/local/Cellar/npth/1.6... (11 files, 71.7KB)
Uninstalling /usr/local/Cellar/pinentry/1.1.0_1... (12 files, 263.9KB)
Uninstalling /usr/local/Cellar/libassuan/2.5.3... (16 files, 444.2KB)
Uninstalling /usr/local/Cellar/libtasn1/4.13... (59 files, 436KB)
Uninstalling /usr/local/Cellar/libunistring/0.9.10... (54 files, 4.4MB)
Uninstalling /usr/local/Cellar/nettle/3.4.1... (85 files, 2MB)
Uninstalling /usr/local/Cellar/p11-kit/0.23.15... (63 files, 2.9MB)
Uninstalling /usr/local/Cellar/gmp/6.1.2_2... (18 files, 3.1MB)
Uninstalling /usr/local/Cellar/libffi/3.2.1... (16 files, 296.8KB)
Uninstalling /usr/local/Cellar/libgpg-error/1.35... (27 files, 854.8KB)
Package gpg and its dependancies have been removed.
$

5voto

user2160316 Points 17

Vous pouvez simplement utiliser un pipe UNIX pour ceci

brew deps [FORMULA] | xargs brew rm

13 votes

Ce n'est pas une bonne solution. Vous pouvez casser les dépendances d'autres paquets de cette façon.

12 votes

Il existe une commande que vous pouvez exécuter après coup pour savoir si vous avez supprimé toutes les autres dépendances requises. brew missing qui vous dira quelle commande vous devez exécuter pour les récupérer.

4voto

CodeGnome Points 25402

Une fonction Bourne Shell plus complète

Il existe déjà un certain nombre de bonnes réponses, mais certaines sont obsolètes et aucune n'est entièrement complète. En particulier, la plupart d'entre elles suppriment les dépendances mais vous laissent le soin de supprimer ensuite la formule initialement ciblée. Les solutions proposées peuvent également s'avérer fastidieuses si vous souhaitez désinstaller plus d'une formule à la fois.

Voici une fonction shell compatible avec Bourne (sans aucun bachisme connu) qui prend une liste de formules, supprime les dépendances de chacune, supprime toutes les copies de la formule elle-même, puis réinstalle les dépendances manquantes.

unbrew () {
    local formula
    for formula in "$@"; do
        brew deps "$formula" |
        xargs brew uninstall --ignore-dependencies --force
        brew uninstall --force "$formula"
    done
    brew missing | cut -f2 -d: | sort -u | xargs brew install
}

Il a été testé sur Homebrew 1.7.4.

Mises en garde

Cela fonctionne sur toutes les formules standard que j'ai testées. Il ne gère pas actuellement les fûts, mais il ne se plaindra pas non plus bruyamment si vous tentez de débrider un fût portant le même nom qu'une formule standard (par exemple MacVim).

0 votes

Cela a commencé à désinstaller mes paquets de façon aléatoire et a cassé ma configuration de brew, et zsh

3voto

Luke Miles Points 382

Les autres réponses n'ont pas fonctionné pour moi, mais celle-ci a fonctionné (en fish shell) :

brew remove <package>
for p in (brew deps <package>)
    brew remove $p
end

Porque brew remove $p échoue lorsqu'un autre paquet dépend de p .

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