Homebrew deinstallieren und die Formel-Liste behalten
Homebrew bringt einen offiziellen Uninstaller mit, und er hält, was er verspricht. Die Überraschung liegt im Umfang: er entfernt Homebrew, und er entfernt, was Homebrew installiert hat, und diese beiden Fakten fallen je nach Anlass unterschiedlich ins Gewicht.
Wenn Sie Speicherplatz freigeben wollen, ist das auf den meisten Entwickler-Macs die größte einzelne Speicherfreigabe. Wenn Sie wegen einer einzelnen fehlerhaften Formula hier sind, ist das weit mehr, als Sie vorhatten.
Der offizielle Uninstaller
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Lesen Sie es, bevor Sie es ausführen. Das Skript ist kurz und die verbindliche Beschreibung dessen, was passieren wird; das kann kein Artikel ersetzen.
Es unterstützt --dry-run, und auf einem Rechner, der Ihnen wichtig ist, ist das der richtige erste Aufruf: es zeigt, was gelöscht würde, und ändert nichts.
Was das Skript tatsächlich löscht
Der Uninstaller entfernt das Homebrew-Prefix und die darunterliegenden Verzeichnisse: bin, etc, include, lib, opt, sbin, share, var, Frameworks sowie Cellar und Caskroom.
Die letzten beiden sind der springende Punkt. Im Cellar liegen die Dateien jeder Formula, im Caskroom die Cask-Metadaten. Wer Homebrew entfernt, entfernt sie mit, und jedes Kommandozeilen-Tool, das darüber installiert wurde, verschwindet zugleich.
Es leert außerdem ~/Library/Caches/Homebrew und ~/Library/Logs/Homebrew, den systemweiten Homebrew-Cache, /etc/paths.d/homebrew sowie von Homebrew verwaltete Apps in /Applications und ~/Applications.
Vor dem Entfernen aufschreiben, was installiert ist
Das Inventar ist danach nicht wiederherstellbar, und es genügt ein Befehl:
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves listet die Formeln, die Sie bewusst installiert haben, statt jeder mitgezogenen Abhängigkeit, und das ist die Liste, die Sie beim Neuaufbau wirklich brauchen. Auf einem neuen Rechner verwandeln diese beiden Dateien einen Tag Erinnerungsarbeit in eine brew install-Zeile.
Alles, was ein Paket außerhalb seines eigenen Verzeichnisses abgelegt hat, bleibt erhalten; das zu behalten lohnt sich: ein Postgres-Datenverzeichnis, eine lokale Datenbank unter /opt/homebrew/var, Konfiguration im Home-Verzeichnis. Der Uninstaller entfernt var unter dem Prefix, also geht eine dort liegende Datenbank mit. Kopieren Sie sie vorher heraus, wenn sie wichtig ist.
Die Meldung am Ende, die man leicht übersieht
Wenn das Skript fertig ist, kann es melden, dass einige mögliche Homebrew-Dateien nicht gelöscht wurden und Sie sie selbst entfernen sollten, und listet diese anschließend auf.
Das ist die einzige Stelle, an der diese Pfade überhaupt genannt werden. Meist liegt es an Berechtigungen von Verzeichnissen, die Homebrew nicht angelegt hat, und die Liste ist kurz. Kopieren Sie sie irgendwohin, bevor Sie das Terminal schließen, denn ein erneuter Lauf des Uninstallers auf einer bereits entfernten Installation erzeugt sie nicht noch einmal.
Ihr Shell-Profil erwähnt es weiterhin
Der Uninstaller bearbeitet weder .zprofile, .zshrc noch .bash_profile. Die Zeile eval "$(/opt/homebrew/bin/brew shellenv)", die Sie bei der Installation eingefügt haben, bleibt, und jede neue Shell versucht dann, eine Binärdatei auszuführen, die nicht mehr existiert.
Es ist harmlos, aber laut. Entfernen Sie die Zeile, oder lassen Sie sie, wenn Sie eine Neuinstallation planen.
Prüfen Sie, ob der kleinere Eingriff genügt
Die meisten Gründe, Homebrew zu deinstallieren, lassen sich mit etwas Engerem besser erledigen. brew cleanup gibt alte Versionen und gecachte Downloads frei. brew uninstall <formula> entfernt eine Sache. brew autoremove wirft Abhängigkeiten ab, die niemand mehr braucht. Was auch immer Sie ausführen, Mole zeigt Ihnen, wie viel Speicher das Prefix vorher und nachher belegt, und diese Zahl entscheidet, ob die vollständige Entfernung überhaupt nötig war.
Neuaufbau aus der exportierten Liste
Sobald Homebrew auf dem neuen Rechner installiert ist, stellen zwei Befehle den vorherigen Bestand wieder her:
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
Sie bleiben getrennt, weil Casks --cask benötigen und eine gemischte Liste bei der Hälfte der Einträge scheitert.
brew leaves statt brew list ist der Grund, warum das funktioniert. brew list enthält Abhängigkeiten; die Liste erneut abzuarbeiten installiert deshalb explizit Hunderte Pakete, die von selbst hätten mitkommen sollen, und brew autoremove fasst sie danach nicht mehr an, weil sie namentlich angefordert wurden. brew leaves liefert nur das, was tatsächlich installiert wurde, und überlässt den Abhängigkeitsgraphen Homebrew.