Désinstaller Homebrew avec le script officiel
Homebrew fournit un désinstalleur officiel, et il fait ce qu'il dit. La surprise, c'est la portée : il retire Homebrew, et il retire ce que Homebrew a installé. Le poids de ces deux faits dépend de la raison pour laquelle vous êtes ici.
Si vous avez seulement besoin d'espace disque, vérifiez d'abord combien Homebrew occupe. Si une seule formula pose problème, désinstaller tout l'environnement est inutile.
Avant d'aller plus loin, notez brew leaves et la liste des casks. Lancez ensuite le désinstalleur officiel avec --dry-run et lisez la portée comme un plan de suppression. Si un seul paquet est en cause, arrêtez-vous ici et utilisez brew uninstall, ou suivez le chemin plus sûr de nettoyage Homebrew.
Quand vous ne devez pas désinstaller Homebrew
Ignorez l'option nucléaire si l'un de ces cas s'applique :
- Une formula ou un cask est cassé : utilisez
brew uninstall <name>, puisbrew autoremovesi des dépendances sont orphelines. - Vous avez seulement besoin d'espace :
brew cleanup -sefface les anciennes versions et téléchargements sans supprimer le préfixe. - Vous avez encore besoin de
git,node,python, de serveurs de base de données ou d'outils CLI venus de Homebrew. Le désinstalleur emporte Cellar et Caskroom. - Vous comptez réinstaller la même pile demain sur le même Mac. Exportez les listes ci-dessous, nettoyez avec
brew cleanup, et gardez l'installation.
Désinstallez quand vous quittez Homebrew pour de bon, que vous migrez vers un préfixe propre après une installation cassée, ou que vous effacez une machine où vous ne voulez plus aucun de ces paquets.
Connaître votre préfixe : Intel, Apple Silicon et restes Rosetta
Le préfixe par défaut de Homebrew dépend de la puce :
| Mac | Préfixe par défaut | Binaire brew |
|---|---|---|
| Apple Silicon | /opt/homebrew |
/opt/homebrew/bin/brew |
| Intel | /usr/local |
/usr/local/bin/brew |
Confirmez ce que vous avez réellement avant de supprimer quoi que ce soit :
uname -m
brew --prefix
which brew
arm64 est Apple Silicon. x86_64 est Intel (ou un terminal Rosetta). Sur un Mac Apple Silicon migré, un ancien Homebrew Intel sous /usr/local peut encore exister à côté de /opt/homebrew. Le script de désinstallation officiel cherche le défaut de votre machine et, sur arm64, examine aussi /usr/local pour ne pas manquer un préfixe Intel restant. Si vous conservez volontairement deux préfixes, passez --path pour retirer celui que vous visez.
Ne videz pas à la main tout /usr/local sur Intel. Ce répertoire est partagé avec d'autres logiciels. Utilisez le script officiel, qui cible les arbres propres à Homebrew.
Le désinstalleur officiel
La FAQ de Homebrew pointe vers le script de désinstallation du dépôt Homebrew/install. Préférez copier la commande depuis cette page si Homebrew la change un jour. L'one-liner actuel est :
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
Si vous voulez lire le script avant qu'il ne s'exécute, téléchargez-le d'abord :
curl -O https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh
less uninstall.sh
/bin/bash uninstall.sh --help
Options utiles :
--dry-run(aussi-n) : affiche ce qui serait retiré et ne change rien. Commencez ici sur une machine qui compte.--path=PATH: désinstaller un préfixe précis (par exemple/usr/localsur Apple Silicon après une installation de l'ère Rosetta).--force: saute la confirmation (aussi implicite siNONINTERACTIVEest défini).--skip-cache-and-logs: laisse les caches et journaux tranquilles.
Ignorez l'ancien gist mxcl et tout guide qui dit encore de faire cd $(brew --prefix) puis de supprimer avec git ls-files. Ce flux visait la disposition ancienne de /usr/local et est dangereux sur les installs modernes.
Ce que le script supprime vraiment
Le désinstalleur retire le préfixe Homebrew et les répertoires en dessous : bin, etc, include, lib, opt, sbin, share, var, Frameworks, ainsi que Cellar et Caskroom.
Ces deux derniers sont le point central. Cellar contient les fichiers de chaque formula, Caskroom les métadonnées des casks. Retirer Homebrew les retire, donc chaque outil en ligne de commande installé via Homebrew disparaît en même temps.
Il nettoie aussi ~/Library/Caches/Homebrew et ~/Library/Logs/Homebrew, le cache Homebrew système, /etc/paths.d/homebrew, et les apps gérées par Homebrew dans /Applications et ~/Applications.
Notez ce que vous avez avant de le retirer
Exportez l'inventaire avant la désinstallation avec ces deux commandes :
brew leaves > ~/Desktop/brew-formulae.txt
brew list --cask > ~/Desktop/brew-casks.txt
brew leaves liste les formulas dont aucune autre formula ou cask installé ne dépend. C'est un point de départ utile, pas un historique complet de tout ce que vous avez installé explicitement. Relisez ces deux fichiers avant de reconstruire votre environnement.
Traitez les données des paquets séparément des fichiers des paquets. La configuration dans votre répertoire personnel peut rester, mais une base Postgres sous /opt/homebrew/var ou /usr/local/var est encore dans le préfixe Homebrew. Le désinstalleur retire var, donc les données qui s'y trouvent peuvent partir avec. Sauvegardez hors du préfixe ce dont vous avez besoin avant de désinstaller. Arrêtez d'abord les services si vous en utilisez :
brew services list
brew services stop --all
Optionnel : retirer d'abord formulas et casks
Si vous voulez un démontage par étapes plutôt qu'un passage nucléaire, désinstallez les paquets tant que brew fonctionne encore :
brew list --formula
brew uninstall --force $(brew list --formula)
brew list --cask
brew uninstall --cask --force $(brew list --cask)
brew autoremove
brew cleanup -s
Cela vide Cellar et Caskroom mais laisse l'installation Homebrew. Utilisez-le quand vous n'êtes pas sûr des données sous var, ou quand vous voulez libérer l'espace des paquets et garder brew pour un jeu d'outils plus petit plus tard. Quand vous en avez fini avec Homebrew lui-même, lancez quand même le désinstalleur officiel pour que le préfixe, les taps et les caches disparaissent proprement.
Lancer la désinstallation
- Lancez avec
--dry-runet lisez chaque chemin. - Lancez sans
--dry-run, tapezyquand on vous le demande, et entrez votre mot de passe macOS sisudoest requis pour des répertoires protégés. - Copiez toute liste « possible Homebrew files were not deleted » du terminal avant de fermer la fenêtre.
Exemple de dry-run après téléchargement du script :
/bin/bash uninstall.sh --dry-run
Ou avec l'one-liner distant : téléchargez d'abord pour passer des options sans imbriquer maladroitement les guillemets, puis lancez /bin/bash uninstall.sh.
Liste de contrôle des fichiers restants
Quand le script se termine, il peut indiquer que certains fichiers Homebrew possibles n'ont pas été supprimés et que vous voudrez peut-être les retirer vous-même, suivi de la liste.
C'est le seul endroit où ces chemins sont jamais nommés. Cela vient souvent de permissions sur des répertoires que Homebrew n'a pas créés, et la liste est courte. Copiez-la avant de fermer le terminal, car relancer le désinstalleur sur une install déjà retirée ne la reproduira pas.
Les restes typiques se trouvent sous le préfixe que vous venez de retirer :
- Apple Silicon :
/opt/homebrew/etc,share,var,Frameworks, et des répertoires vides ou partiellement possédés similaires - Intel : les mêmes noms sous
/usr/local, mais ne supprimez jamais des arbres/usr/localsans rapport au hasard
Si le script a nommé un chemin et que vous avez confirmé qu'il n'appartient qu'à Homebrew, retirez-le explicitement (espace après -rf) :
sudo rm -rf /opt/homebrew/share
Puis vérifiez :
ls /opt/homebrew
ls /usr/local/Homebrew
ls ~/Library/Caches/Homebrew
ls ~/Library/Logs/Homebrew
Attendez-vous à « No such file or directory » une fois ces emplacements partis. Si /opt/homebrew ou un arbre uniquement Homebrew existe encore alors que le script a déjà fini, sudo rm -rf sur ce chemin est le nettoyage habituel. Vérifiez deux fois le chemin avant d'appuyer sur Return.
La configuration hors préfixe reste souvent volontairement : ~/.gitconfig, gestionnaires de versions de langages, dossiers de support d'apps sous ~/Library, et bases que vous avez sorties de var. Ce n'est pas le préfixe Homebrew. Ne les retirez que lorsque vous savez à quoi elles appartiennent.
Votre profil shell le mentionne encore
Le désinstalleur n'édite ni .zprofile, ni .zshrc, ni .zshenv, ni .zlogin, ni .bash_profile. La ligne que l'installeur Homebrew ajoute souvent ressemble à :
eval "$(/opt/homebrew/bin/brew shellenv)"
Sur les Mac Intel, le PATH par défaut inclut déjà /usr/local/bin, donc beaucoup d'installations n'ont jamais eu besoin de cette ligne. Sur Apple Silicon elle est requise pour trouver brew, et après désinstallation chaque nouveau shell essaie d'exécuter un binaire qui n'existe plus.
Cherchez et retirez brew shellenv (ainsi que tout export PATH /opt/homebrew/bin ou /usr/local/bin ajouté à la main dont vous ne voulez plus) :
grep -n "brew shellenv\|/opt/homebrew\|/usr/local/bin" ~/.zprofile ~/.zshrc ~/.zshenv ~/.zlogin ~/.bash_profile ~/.bashrc 2>/dev/null
Ouvrez ensuite un nouvel onglet de terminal. Si l'avertissement a disparu et que which brew n'affiche rien, le nettoyage du PATH est terminé. Ne gardez la ligne que si vous comptez réinstaller immédiatement.
Modes d'échec courants
Permission denied sur les restes. Le script a listé des chemins mais n'a pas pu les supprimer. Utilisez sudo rm -rf sur chaque chemin nommé, avec un espace entre -rf et le chemin. rm -rf/opt/... échoue avec illegal option parce que le chemin a été lu comme des options.
Désinstallation partielle / « Homebrew is already installed ». Une tentative précédente a laissé .git, Cellar ou bin/brew. Relancez le script officiel avec le bon --path, ou retirez le préfixe restant signalé par le script, puis réinstallez depuis la doc d'installation Homebrew si vous en avez encore besoin.
brew: command not found après un nettoyage à moitié fini. Soit la désinstallation est terminée et le PATH pointe encore vers l'ancien préfixe (corrigez la ligne shell), soit brew a disparu alors que des paquets restent. Ne courez pas après le gist classique. Utilisez le script officiel avec --path si un répertoire de préfixe existe encore.
Mauvais préfixe sur Apple Silicon. Vous avez retiré /opt/homebrew mais des outils de l'ère Rosetta vivent encore sous /usr/local. Lancez le script avec --path=/usr/local après avoir confirmé que cet arbre est bien celui de Homebrew, pas un mélange de logiciels sans rapport.
Services et éléments d'ouverture de session appellent encore des binaires manquants. Arrêtez brew services avant la désinstallation quand vous le pouvez. Ensuite, vérifiez les éléments d'ouverture de session et tout LaunchAgent qui référence encore /opt/homebrew ou /usr/local/Cellar.
Anciens billets de blog et le gist de 2011. Les guides qui suppriment via git ls-files et pbcopy appartiennent à une disposition Homebrew plus ancienne. Préférez uniquement https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh.
Envisager l'opération plus petite
Pour un nettoyage plus léger, brew cleanup retire les anciennes versions et téléchargements en cache, brew uninstall <formula> retire un paquet, et brew autoremove retire les dépendances inutilisées. Dans la vue Analyze de Mole, scannez le dossier Homebrew avant le nettoyage, puis encore après pour comparer sa taille. Mole ne suit pas automatiquement les changements faits par ces commandes.
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
Elles restent séparées parce que les casks ont besoin de --cask, et une liste mélangée échoue sur la moitié de ses entrées.
brew list inclut les dépendances, donc rejouer toute la liste marque ces paquets comme explicitement demandés et change ce que brew autoremove pourra retirer plus tard. brew leaves évite une grande partie de cela, mais ce n'est pas l'historique de vos paquets demandés : un paquet que vous avez choisi peut aussi être requis par un autre. Relisez la liste et ajoutez les outils dont vous avez encore besoin avant de réinstaller.
FAQ
La désinstallation de Homebrew retire-t-elle tous les paquets qu'il a installés ?
Oui pour tout ce qui est encore dans Cellar et Caskroom. Le script officiel retire le préfixe, donc formulas et métadonnées de casks partent avec. Config et données hors préfixe peuvent rester.
Quelle est la différence entre /opt/homebrew et /usr/local ?
/opt/homebrew est le défaut sur Apple Silicon. /usr/local est le défaut sur Intel, et peut aussi contenir un ancien Homebrew Rosetta sur un Mac migré. Vérifiez toujours brew --prefix avant de supprimer.
Dois-je désinstaller chaque formula avant de lancer le script de désinstallation ?
Seulement si vous voulez un nettoyage par étapes ou inspecter d'abord les données sous var. Le script retire déjà les paquets installés dans le préfixe. Exportez vos listes dans tous les cas si vous pourriez réinstaller plus tard.
Pourquoi des répertoires restent-ils après la désinstallation ?
Des permissions ou des répertoires que Homebrew n'a pas créés peuvent bloquer la suppression. Le script affiche ces chemins une seule fois. Retirez-les avec sudo seulement quand vous les reconnaissez comme des restes Homebrew.
Est-il sûr de supprimer tout /usr/local ?
Non. Sur les Mac Intel ce dossier est partagé. Utilisez le script de désinstallation officiel, puis retirez seulement les chemins qu'il nomme s'il reste quelque chose.
Je vois encore des erreurs brew shellenv dans chaque nouveau terminal. Que faire ?
Retirez la ligne eval "$(...brew shellenv)" de vos fichiers de démarrage zsh ou bash, puis ouvrez un nouvel onglet. Le désinstalleur n'édite pas ces fichiers pour vous.