J'ai une formule Homebrew que je souhaite désinstaller / supprimer avec toutes ses dépendances, en ignorant les packages dont dépendent les autres packages (alias Suppression de packages en cascade dans le langage du gestionnaire de packages).
par exemple, désinstaller le package a
qui dépend des packages b
& c
, où le package d
dépend également du package 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 de déchets inutiles .
Réponses:
ÉDITER:
Il semble que le problème soit désormais résolu à l'aide d'une commande externe appelée
brew rmdeps
oubrew rmtree
.Pour installer et utiliser, émettez les commandes suivantes:
Voir le lien ci-dessus pour plus d'informations et de discussion.
Réponse originale:
Il semble qu'actuellement, il n'y a pas de moyen facile d'y parvenir.
Cependant, j'ai déposé un problème sur la page GitHub de Homebrew , et quelqu'un a suggéré une solution temporaire jusqu'à ce qu'il ajoute une commande exclusive pour résoudre ce problème.
Il existe une commande externe appelée
brew leaves
qui affiche tous les packages qui ne sont pas des dépendances d'autres packages.Si vous effectuez une opération logique et sur la sortie de
brew leaves
etbrew deps <package>
, vous pouvez simplement obtenir une liste des packages de dépendances orphelins, que vous pouvez désinstaller manuellement par la suite. Combinez cela avecxargs
et vous obtiendrez ce dont vous avez besoin, je suppose (non testé, ne comptez pas sur cela).EDIT: Quelqu'un vient de suggérer une solution très similaire, en utilisant
join
au lieu dexargs
:Voir le commentaire sur le problème mentionné ci-dessus pour plus d'informations.
la source
This command requires a keg argument
.brew rmtree
script tiers est maintenant disponible dans un robinet:brew tap beeftornado/rmtree && brew install beeftornado/rmtree/brew-rmtree
brew rm $(join <(brew leaves) <(brew deps FORMULA))
fait bien le travail. Il vous suffit de l'exécuter encore et encore jusqu'à ce que toutes les dépendances soient supprimées. Il ne peut pas tout désinstaller à la fois car les dépendances sont interdépendantes.&& brew install brew-rmtree
n'est plus nécessaire.Le but ici est de supprimer le package donné et ses dépendances sans casser les dépendances d'un autre package. J'utilise cette commande:
Remarque: Modifié pour refléter le commentaire utile de @ alphadogg.
la source
--ignore-dependencies
à supprimer pour que cela fonctionne.brew rmtree
ne fonctionne pas du tout . À partir des liens sur cette question, j'ai trouvé rmrec qui fonctionne réellement. Dieu sait pourquoibrew
n'a pas cela comme une commande native.la source
[FORMULA]
puis utiliser rmrec pour supprimer récursivement toutes ses dépendances correctement.rmrec
ne pas gérer très bien les packages avec espace de noms actuellement. J'utilisais quelque chose qui s'est arrêté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.rmrec
est mauvaise. Il ne gère pas du tout les dépendances.rmtree
?rmrec
gère les dépendances.God knows why brew doesn't have this as a native command.
=> Parce que les développeurs de bière ont de mauvaises attitudes. Ils ne permettent même pas aux gens d'ouvrir des problèmes. Consultez github.com/Homebrew/brew , il ne contient plus que 20 problèmes maintenant. Un si petit nombre. Est-ce une bonne chose? Non, c'est très mauvais.Basé sur la réponse de @jfmercer (les corrections nécessitaient plus qu'un commentaire).
Supprimer les dépendances du package (ne supprime pas le package):
Supprimer le package:
Réinstallez les bibliothèques manquantes:
Désinstallation testée
meld
après avoir découvert les versions de MeldMerge .la source
Pour utiliser cette réponse, vous devez créer et gérer un fichier contenant les noms de package 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 de package que vous ne souhaitez pas conserver installés.
Ensuite, vous pouvez supprimer tous les packages installés mais indésirables et toutes les dépendances inutiles en exécutant la commande suivante
brew_clean
est disponible ici: https://gist.github.com/cskeeters/10ff1295bca93808213dCe script obtient tous les packages que vous avez spécifiés dans brew_packages et toutes leurs dépendances et les compare à la sortie de
brew list
et supprime enfin les packages indésirables après avoir vérifié cette liste avec l'utilisateur.À ce stade, si vous souhaitez supprimer un package
a
, il vous suffit de le supprimer du fichier brew_packages, puis de le réexécuterbrew_clean brew_packages
. Il supprimerab
, mais pasc
.la source
brew clean -s
brew cleanup -s && brew cask cleanup
Vous pouvez simplement utiliser un tuyau UNIX pour cela
la source
brew missing
qui vous dira quelle commande vous devez exécuter pour les récupérerEnregistrez le script suivant en tant que purge de brassage
Maintenant, installez-le avec la commande suivante
Maintenant lancez-le
Exemple utilisant gpg
la source
D'autres réponses n'ont pas fonctionné pour moi, mais cela a fonctionné (en
fish
coquille):Car
brew remove $p
échoue quand un autre paquet en dépendp
.la source
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 d'entre elles n'est entièrement complète. En particulier, la plupart d'entre eux supprimeront les dépendances mais vous laisseront le soin de supprimer la formule initialement ciblée par la suite. Les lignes simples publiées peuvent également être fastidieuses à utiliser si vous souhaitez désinstaller plusieurs formules à la fois.
Voici une fonction shell compatible Bourne (sans aucun bashism connu) qui prend une liste de formules, supprime les dépendances de chacun, supprime toutes les copies de la formule elle-même, puis réinstalle toutes les dépendances manquantes.
Il a été testé sur Homebrew 1.7.4.
Avertissements
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 si vous essayez de débrider un fût portant le même nom qu'une formule standard (par exemple MacVim).
la source
La réponse de @jfmercer doit être légèrement modifiée pour fonctionner avec le brassage actuel, car la sortie de
brew missing
a changé:la source