569 Stimmen

Deinstallieren/Entfernen eines Homebrew-Pakets mit all seinen Abhängigkeiten

Ich habe eine Selbstgebrautes Formel, die ich zusammen mit all ihren Abhängigkeiten deinstallieren/entfernen möchte, wobei Pakete übersprungen werden, von denen andere Pakete abhängen (z.B. Kaskadierte Paketentfernung im Sprachgebrauch der Paketverwaltung).

z.B.. Paket deinstallieren a die von folgenden Paketen abhängt b & c , wobei Paket d hängt auch vom Paket c . Das Ergebnis sollte beide deinstallieren a & b , Überspringen c .

Wie kann ich das tun?

Es muss eine Möglichkeit geben, ein Paket zu deinstallieren, ohne unnötige Schrott hinten.

26 Stimmen

Ist das nicht das, was jeder Paketmanager, der diesen Namen verdient, von Haus aus tun sollte? LOL

28 Stimmen

Ab 2021, brew autoremove ist das, wonach Sie suchen:

13voto

Chad Skeeters Punkte 1438

Die Verwendung dieser Antwort erfordert, dass Sie eine Datei erstellen und pflegen, die die Namen der Pakete enthält, die Sie auf Ihrem System installieren möchten. Wenn Sie eine solche Datei noch nicht haben, verwenden Sie den folgenden Befehl und löschen Sie die Paketnamen, die Sie nicht installiert lassen möchten.

brew leaves > brew_packages

Dann können Sie alle installierten, aber unerwünschten Pakete und alle unnötigen Abhängigkeiten entfernen, indem Sie den folgenden Befehl ausführen

brew_clean brew_packages

brew_clean ist hier verfügbar: https://gist.github.com/cskeeters/10ff1295bca93808213d

Dieses Skript holt alle Pakete, die Sie in brew_packages angegeben haben, und alle ihre Abhängigkeiten und vergleicht sie mit der Ausgabe von brew list und entfernt schließlich die unerwünschten Pakete, nachdem er diese Liste mit dem Benutzer überprüft hat.

Wenn Sie an dieser Stelle ein Paket entfernen möchten a entfernen Sie es einfach aus der Datei brew_packages und führen es erneut aus brew_clean brew_packages . Es wird entfernen b , aber nicht c .

0 Stimmen

Ich glaube, Brew Clean ist jetzt eingebaut, versuchen Sie brew clean -s

2 Stimmen

OBENER KOMMENTAR WAR FALSCH, die Bearbeitung wird bei 5 Minuten unterbrochen. brew cleanup -s && brew cask cleanup

13voto

Kevin Davies Punkte 149

Speichern Sie das folgende Skript als Brühspülung

#!/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

Installieren Sie es nun mit folgendem Befehl

sudo install brew-purge /usr/local/bin

Führen Sie es jetzt aus

brew purge package

Beispiel mit 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.
$

4voto

Todd A. Jacobs Punkte 75903

Eine umfassendere Bourne-Shell-Funktion

Es gibt bereits eine Reihe von guten Antworten, aber einige sind veraltet und keine davon ist vollständig. Insbesondere entfernen die meisten von ihnen zwar Abhängigkeiten, überlassen es aber immer noch Ihnen, die ursprünglich angestrebte Formel anschließend zu entfernen. Die veröffentlichten Einzeiler können auch mühsam sein, wenn Sie mehr als eine Formel auf einmal deinstallieren wollen.

Hier ist eine Bourne-kompatible Shell-Funktion (ohne bekannte Bashismen), die eine Liste von Formeln nimmt, die Abhängigkeiten jeder Formel entfernt, alle Kopien der Formel selbst entfernt und dann alle fehlenden Abhängigkeiten wieder installiert.

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
}

Es wurde auf Homebrew 1.7.4 getestet.

Vorbehalte

Dies funktioniert bei allen Standardformeln, die ich getestet habe. Es kann derzeit nicht mit Fässern umgehen, aber es wird sich auch nicht lautstark beschweren, wenn Sie versuchen, ein Fass mit demselben Namen wie eine Standardformel (z. B. MacVim) zu entbrauen.

0 Stimmen

Dies führte dazu, dass meine Pakete wahllos deinstalliert wurden und meine brew-Konfiguration und zsh nicht mehr funktionierten

3voto

shapeshed Punkte 89

Sie können dafür einfach eine UNIX-Pipe verwenden

brew deps [FORMULA] | xargs brew rm

15 Stimmen

Das ist keine gute Lösung. Sie können auf diese Weise die Abhängigkeiten von anderen Paketen zerstören.

12 Stimmen

Es gibt einen Befehl, den Sie anschließend ausführen können, um festzustellen, ob Sie alle anderen erforderlichen Abhängigkeiten gelöscht haben brew missing der Ihnen sagt, welchen Befehl Sie ausführen müssen, um sie zurückzubekommen

3voto

Luke Miles Punkte 684

Andere Antworten haben bei mir nicht funktioniert, aber diese schon (in fish Schale):

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

Denn brew remove $p scheitert, wenn ein anderes Paket von p .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X