Désinstaller Homebrew en gardant l'inventaire de vos formules
Homebrew fournit un désinstalleur officiel, et il fait ce qu'il annonce. La surprise, c'est l'étendue : il retire Homebrew, et il retire ce que Homebrew a installé, et ces deux opérations n'ont pas du tout le même impact selon la raison de votre visite.
Si vous êtes là pour récupérer de l'espace disque, c'est le plus gros gain d'un seul coup sur la plupart des Mac de développeurs. Si vous êtes là parce qu'une formule se comporte mal, c'est bien plus que ce que vous vouliez.
Le désinstalleur officiel
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Lisez-le avant de l'exécuter. Le script est court et c'est la description de référence de ce qui va se produire, qu'aucun article ne peut remplacer.
Il prend en charge --dry-run, et sur une machine qui vous tient à cœur, c'est par là qu'il faut commencer : il affiche ce qui serait supprimé et ne change rien.
Ce que le script supprime réellement
Le désinstalleur supprime le préfixe Homebrew et les répertoires qu'il contient : bin,
etc, include, lib, opt, sbin, share, var, Frameworks, ainsi que
Cellar et Caskroom.
Ces deux derniers sont le cœur du sujet. Cellar est l'endroit où se trouvent les fichiers de chaque formule, et Caskroom est l'endroit où se trouvent les métadonnées des casks. Retirer Homebrew les retire, donc chaque outil en ligne de commande installé par ce biais part en même temps.
Il vide aussi ~/Library/Caches/Homebrew et ~/Library/Logs/Homebrew, le
cache Homebrew au niveau système, /etc/paths.d/homebrew, et les applications gérées par Homebrew dans
/Applications et ~/Applications.
Notez ce que vous avez avant de le supprimer
L'inventaire n'est pas récupérable ensuite, et il tient en une commande :
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves liste les formules que vous avez demandées plutôt que chaque dépendance installée en arrière-plan, ce qui est la liste dont vous avez réellement besoin pour reconstruire. Sur une nouvelle machine, ces
deux fichiers transforment une journée de reconstitution manuelle en une seule ligne brew install.
Tout ce qu'un paquet a stocké hors de son propre répertoire survit et mérite d'être conservé : un
répertoire de données Postgres, une base locale sous /opt/homebrew/var, une configuration dans votre
dossier personnel. Le désinstalleur supprime var sous le préfixe, donc une base qui s'y trouve
part avec lui. Copiez-la d'abord si elle compte.
Le message de fin que l'on défile trop vite
Quand le script se termine, il peut indiquer que certains fichiers susceptibles d'appartenir à Homebrew n'ont pas été supprimés et qu'il peut être utile de les retirer vous-même, suivi de la liste.
C'est le seul endroit où ces chemins sont mentionnés. Cela se produit en général à cause de permissions sur des répertoires que Homebrew n'a pas créés, et la liste est courte. Copiez-la quelque part avant de fermer le Terminal, car relancer le désinstalleur sur une installation déjà retirée ne la reproduira pas.
Votre profil shell le mentionne encore
Le désinstalleur ne modifie pas .zprofile, .zshrc ni .bash_profile. La ligne eval
"$(/opt/homebrew/bin/brew shellenv)" ajoutée à l'installation reste, et chaque nouveau
shell tente alors d'exécuter un binaire qui n'existe plus.
C'est sans danger, mais bruyant. Retirez la ligne, ou laissez-la si vous prévoyez de réinstaller.
Demandez-vous si une opération plus restreinte ne suffit pas
La plupart des raisons de désinstaller Homebrew se règlent mieux par une opération plus ciblée. brew
cleanup récupère les anciennes versions et les téléchargements en cache. brew uninstall <formula> retire
une seule chose. brew autoremove retire les dépendances dont plus rien n'a besoin. Quelle que soit la commande
que vous lancez, Mole vous montre ce que pèse le préfixe avant et après, le chiffre qui permet de juger si le retrait complet était vraiment nécessaire.
Reconstruction à partir de la liste exportée
Une fois Homebrew installé sur la nouvelle machine, deux commandes restaurent ce que vous aviez :
xargs brew install < brew-formulae.txt
xargs brew install --cask < brew-casks.txt
On les garde séparées parce que les casks exigent --cask, et qu'une liste mixte échoue sur la moitié de ses entrées.
C'est brew leaves plutôt que brew list qui rend cela possible. brew list inclut les dépendances, donc le rejouer installe explicitement des centaines de paquets qui se seraient installés tout seuls, et brew autoremove ne les touchera plus ensuite parce que vous les avez demandés par leur nom. brew leaves ne renvoie que ce que vous avez réellement installé et laisse le graphe de dépendances à Homebrew.