brew cleanup : nettoyer Homebrew sur Mac, cache et vieilles versions

Publié le 8 min de lecture

Homebrew garde ses téléchargements et tes anciennes versions bien plus longtemps que tu ne le crois. Voici ce que fait vraiment brew cleanup, les options qui vident le cache en entier, autoremove pour les dépendances orphelines, et comment retirer Homebrew pour de bon.

Tu as installé Homebrew pour un outil ou deux, puis d'autres ont suivi. Des mois plus tard, ton Mac manque de place et tu te demandes ce que Homebrew garde dans son coin. Bonne intuition : il conserve ses téléchargements, et parfois tes anciennes versions.

La commande pour faire le ménage existe, elle s'appelle brew cleanup. Mais elle ne fait pas tout, et ses options changent beaucoup le résultat. On les passe en revue, de la plus douce à la plus radicale, toutes tirées de la documentation officielle de Homebrew.

Deux mots de vocabulaire avant de commencer. Une formule, chez Homebrew, c'est un outil en ligne de commande (comme git ou node). Un cask, c'est une app Mac avec une fenêtre (comme Firefox ou VS Code).

Où Homebrew prend de la place

Homebrew remplit deux endroits.

Son cache de téléchargements. Chaque formule ou app installée a d'abord été téléchargée. Ces fichiers restent dans un dossier que Homebrew appelle son cache. Pour savoir où il est, tape dans le Terminal :

brew --cache

La FAQ de Homebrew précise que c'est en général ~/Library/Caches/Homebrew. Pour voir sa taille, ouvre le Finder, fais Commande + Maj + G, colle ce chemin, puis sélectionne le dossier et fais Commande + I.

Son dossier d'installation. Les formules vivent dans /opt/homebrew sur un Mac à puce Apple, ou dans /usr/local sur un Mac Intel, d'après la même FAQ. Quand une formule passe à une nouvelle version, l'ancienne peut rester là un moment.

Homebrew fait déjà un peu de ménage tout seul

Bonne nouvelle : tu n'es pas parti de zéro. D'après le manuel de Homebrew, après chaque brew install, brew upgrade ou brew reinstall, Homebrew lance brew cleanup sur les paquets concernés. Et tous les 30 jours, il le lance sur tous les paquets.

La FAQ le confirme : quand tu mets à jour une formule avec brew upgrade, Homebrew désinstalle tout seul ses anciennes versions.

Deux réglages changent ce comportement :

  • HOMEBREW_NO_INSTALL_CLEANUP coupe ce nettoyage automatique.
  • HOMEBREW_CLEANUP_PERIODIC_FULL_DAYS règle le délai du grand nettoyage. Par défaut, 30 jours.

Si tu as un jour ajouté export HOMEBREW_NO_INSTALL_CLEANUP=1 dans ton fichier de configuration du Terminal, Homebrew ne nettoie plus rien de lui-même. Le ménage devient alors ton travail, avec la commande qui suit.

brew cleanup : la commande de base

Commence toujours par regarder ce qui partirait, sans rien supprimer :

brew cleanup -n

L'option -n (ou --dry-run) affiche la liste et s'arrête là. Lis-la. Si elle te convient, lance le vrai nettoyage :

brew cleanup

D'après le manuel, cette commande fait trois choses :

  1. Elle retire les fichiers de verrou périmés.
  2. Elle retire les téléchargements dépassés de toutes tes formules et apps.
  3. Elle retire les anciennes versions de tes formules installées.

Elle supprime aussi tous les téléchargements de plus de 120 jours. Ce délai se règle avec HOMEBREW_CLEANUP_MAX_AGE_DAYS.

Tu peux viser un seul paquet : brew cleanup node, par exemple, ne nettoie que node.

Tes formules et tes apps restent en place, dans leur dernière version. Un détail quand même : le manuel prévoit un réglage, HOMEBREW_NO_AUTOREMOVE, qui empêche brew cleanup et brew uninstall de retirer d'eux-mêmes les formules devenues inutiles. Sans lui, le nettoyage peut donc aussi enlever des dépendances dont plus rien n'a besoin. C'est une raison de plus pour lire la liste du -n avant.

Vider davantage le cache : --prune et -s

Le nettoyage de base laisse une partie du cache. Deux options vont plus loin.

--prune retire les fichiers du cache plus vieux qu'un nombre de jours. Par exemple, brew cleanup --prune=7 garde seulement la dernière semaine. Pour tout retirer, le manuel donne :

brew cleanup --prune=all

-s (ou --scrub) vide aussi les téléchargements des toutes dernières versions :

brew cleanup -s

Une limite à connaître : même avec -s, Homebrew garde les téléchargements des formules et apps que tu as installées. Le manuel donne la commande pour les supprimer aussi.

Attention, cette commande supprime définitivement, sans passer par la Corbeille. Tape-la à l'identique, guillemets compris :

rm -rf "$(brew --cache)"

Tu ne perds aucun outil installé : seul le cache part. Homebrew retéléchargera ce dont il a besoin la prochaine fois. Le prix à payer, c'est du temps et de la bande passante lors d'une réinstallation.

Les dépendances dont plus personne n'a besoin

Quand tu installes un outil, Homebrew installe souvent d'autres formules dont il dépend. Si tu retires l'outil, ces dépendances peuvent rester.

Pour les retirer, le manuel prévoit brew autoremove. Il désinstalle les formules installées seulement comme dépendance et devenues inutiles. Regarde d'abord la liste :

brew autoremove -n

Puis, si elle te va :

brew autoremove

Pour faire le tri à la main, brew leaves -r liste les formules que tu as installées toi-même et dont aucune autre ne dépend. Ce sont les candidates naturelles : si tu ne reconnais pas un nom, renseigne-toi avant de le désinstaller.

Tu veux protéger une formule ? Le manuel prévoit HOMEBREW_NO_CLEANUP_FORMULAE, une liste de formules que Homebrew refuse de nettoyer ou de retirer avec autoremove.

Désinstaller une app installée avec Homebrew

Une app installée avec brew install --cask se retire de préférence avec Homebrew :

brew uninstall --cask firefox

Remplace firefox par le nom de l'app chez Homebrew. L'option --zap va plus loin : elle retire tous les fichiers liés à l'app, pas seulement l'app elle-même.

brew uninstall --cask --zap firefox

Lis l'avertissement du manuel avant de l'utiliser : --zap peut retirer des fichiers partagés entre plusieurs applications. Réserve-le aux apps que tu quittes pour de bon. Pour une app installée sans Homebrew, suis plutôt notre méthode pour désinstaller complètement une application Mac. Et pour les caches des autres apps, de Safari ou de Chrome, lis notre guide pour vider le cache du Mac.

Si tu as coupé le nettoyage automatique, la FAQ prévient : brew uninstall ne retire alors que la dernière version d'une formule. Pour toutes les retirer, il faut brew uninstall --force suivi de son nom. Homebrew la qualifie lui-même d'opération destructrice.

brew doctor : utile, mais pas pour gagner de la place

brew doctor cherche des problèmes possibles dans ton installation. Il ne libère rien.

Le manuel est franc : ses avertissements servent surtout aux mainteneurs de Homebrew quand quelqu'un signale un bug. Si tout ce que tu fais avec Homebrew marche bien, tu peux les ignorer. Ne supprime rien juste parce que brew doctor affiche un message.

Retirer Homebrew en entier

Tu n'utilises plus Homebrew du tout ? La FAQ renvoie vers le script de désinstallation du dépôt Homebrew/install. Ce script désinstalle Homebrew : avant de le lancer, note les outils et les apps que tu voudras peut-être réinstaller autrement. brew leaves -r liste tes formules, brew list --cask tes apps.

La commande donnée par Homebrew :

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

Si tu es passé d'un Mac Intel à un Mac à puce Apple et qu'il reste une ancienne installation dans /usr/local, la même page explique comment viser ce dossier avec l'option --path.

Les autres outils de développeur ont leurs propres recoins : Xcode est traité dans notre article sur ce que Xcode garde sur le disque, Docker dans celui sur Docker qui prend de la place. Et si c'est pour tenir tes apps à jour avec Homebrew, va voir comment mettre à jour toutes tes apps Mac.

Ce que CleanMochi fait, et ne fait pas, avec Homebrew

CleanMochi, c'est l'app que nous faisons pour les Mac. Voici ce qu'il fait vraiment avec Homebrew, d'après son code.

Dans l'écran Nettoyage. Le dossier ~/Library/Caches/Homebrew apparaît dans Fichiers temporaires des apps dès qu'il pèse 1 Mo ou plus. Cette catégorie est cochée d'office, et ce qu'elle contient est supprimé directement, sans passer par la Corbeille. C'est l'équivalent du rm -rf "$(brew --cache)" plus haut, pour l'emplacement par défaut. L'app précise que les apps ouvertes sont épargnées, mais Homebrew n'est pas une app ouverte : évite de lancer le nettoyage pendant qu'une commande brew tourne. Plus petit que 1 Mo, le cache passe dans Caches de développement, une catégorie non cochée d'office.

Dans l'écran Mises à jour. Si Homebrew est installé, la carte Tes apps liste les apps Homebrew qui ont une nouvelle version, avec la mention « Homebrew ». Le bouton Mettre à jour lance brew upgrade --cask pour cette app et affiche le Journal de Homebrew. Seules les apps (casks) sont listées, pas les outils en ligne de commande. Et CleanMochi ne lance pas brew update avant : la liste repose sur ce que Homebrew sait déjà.

Ce qu'il ne fait pas. Il ne lance ni brew cleanup, ni brew autoremove, ni brew uninstall, ni brew doctor. Il ne touche pas aux anciennes versions rangées dans /opt/homebrew ou /usr/local, ni à un cache que tu aurais déplacé ailleurs. Une app Homebrew retirée depuis son écran Apps part à la Corbeille comme les autres : pour une app installée avec Homebrew, préfère brew uninstall --cask.

À lire aussi

Questions fréquentes

Que fait brew cleanup exactement ?

Il retire les fichiers de verrou périmés, les téléchargements dépassés et les anciennes versions de tes formules installées, plus tous les téléchargements de plus de 120 jours. La dernière version de chaque outil reste en place.

Où se trouve le cache de Homebrew sur Mac ?

Tape brew --cache dans le Terminal. Sur Mac, c'est en général le dossier ~/Library/Caches/Homebrew.

Comment vider tout le cache de Homebrew ?

brew cleanup --prune=all retire tous les fichiers du cache. Pour supprimer aussi les téléchargements des outils installés, le manuel donne rm -rf "$(brew --cache)", une suppression définitive.

brew cleanup peut-il casser un outil installé ?

Il garde la dernière version de chaque formule et app, mais il peut retirer des dépendances devenues inutiles. Lance-le d'abord avec -n pour voir la liste, comme brew autoremove.

Comment désinstaller complètement Homebrew ?

Lance le script de désinstallation du dépôt Homebrew/install, comme l'indique la FAQ de Homebrew. Note avant tes outils avec brew leaves -r et tes apps avec brew list --cask.

Article rédigé par l'équipe de CleanMochi (AppsMochi, une marque de NORY LLC). Une erreur, un chemin qui a changé avec une nouvelle version de macOS ? Dis-le nous.