Aller au contenu
Outils medium

Homebrew : gérer vos logiciels sur macOS et Linux

20 min de lecture

logo Homebrew

Homebrew installe les logiciels que macOS (ou Linux) n'a pas, en une seule commande. Ce gestionnaire de paquets télécharge, compile si nécessaire, et installe plus de 10 000 formules (outils CLI) et casks (applications graphiques). Avec brew bundle, vous pouvez sauvegarder votre configuration complète dans un fichier Brewfile et la restaurer sur une nouvelle machine en quelques minutes. Homebrew 5.0 apporte la vérification des attestations SBOM et améliore les performances sur Apple Silicon.

  • Installer Homebrew sur macOS (Intel/Apple Silicon) et Linux
  • Gérer vos paquets : installer, mettre à jour, supprimer
  • Sauvegarder et restaurer votre configuration avec brew bundle
  • Analyser les dépendances avec brew deps et brew uses
  • Gérer les services (bases de données, serveurs) avec brew services
  • Optimiser votre installation et résoudre les problèmes courants

Homebrew installe chaque paquet dans un répertoire qui lui est propre, le Cellar, puis crée des liens symboliques vers le répertoire bin du préfixe pour le rendre appelable. Cette séparation permet de conserver plusieurs versions côte à côte et de désinstaller sans laisser de fichiers dispersés dans le système. Le vocabulaire de l'outil tient en trois mots, détaillés juste après le schéma.

Architecture Homebrew : téléchargement depuis les registres, installation dans le Cellar, types de paquets

Homebrew repose sur trois concepts clés :

ConceptDescriptionExemple
FormulePaquet CLI (outil en ligne de commande)htop, git, node
CaskApplication graphique macOSvisual-studio-code, firefox
TapDépôt externe de formuleshomebrew/cask-fonts

Où sont stockés les paquets ?

  • macOS Apple Silicon : /opt/homebrew/Cellar/
  • macOS Intel : /usr/local/Cellar/
  • Linux : /home/linuxbrew/.linuxbrew/Cellar/

L'installation officielle passe par le script install.sh, qui crée l'arborescence Homebrew et réclame des droits administrateur. Une fois le script terminé, rien ne fonctionne encore : il reste à charger brew shellenv depuis votre fichier de configuration de shell, faute de quoi la commande brew reste introuvable. Le préfixe d'installation change selon la plateforme, choisissez l'onglet correspondant à la vôtre.

L'installation nécessite les Xcode Command Line Tools. macOS 11 (Big Sur) ou supérieur est recommandé.

  1. Installer les outils de développement

    Fenêtre de terminal
    xcode-select --install

    Une boîte de dialogue apparaît pour confirmer l'installation.

  2. Installer Homebrew

    L'installateur officiel s'exécute normalement en une ligne, ce qui revient à lancer un script distant sans l'avoir lu. Téléchargez-le d'abord, inspectez-le, puis exécutez la copie locale :

    Fenêtre de terminal
    curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o install-homebrew.sh
    less install-homebrew.sh # relire avant d'exécuter
    /bin/bash install-homebrew.sh
  3. Configurer le PATH

    Pour Apple Silicon (M1/M2/M3/M4) :

    Fenêtre de terminal
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
    source ~/.zshrc

    Pour Intel :

    Fenêtre de terminal
    echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zshrc
    source ~/.zshrc
  4. Vérifier l'installation

    Fenêtre de terminal
    brew doctor
    # Your system is ready to brew.

Ces commandes couvrent 90% des usages quotidiens. Homebrew utilise une syntaxe simple : brew <action> <paquet>.

Homebrew télécharge en priorité une bottle, c'est-à-dire un binaire déjà compilé pour votre plateforme : d'où le mot Pouring dans la sortie. La compilation depuis les sources n'intervient que si aucune bottle ne correspond à votre système.

Fenêtre de terminal
brew install htop
# ==> Pouring htop--3.4.1.arm64_sonoma.bottle.tar.gz
# 🍺 /opt/homebrew/Cellar/htop/3.4.1: 13 files, 597.3KB

Pour les applications graphiques macOS, ajoutez --cask :

Fenêtre de terminal
brew install --cask visual-studio-code

brew search interroge le catalogue local, celui que rafraîchit brew update : une formule publiée récemment reste invisible tant que ce catalogue n'a pas été mis à jour.

Fenêtre de terminal
brew search python
# ==> Formulae
# python@3.11 python@3.12 python@3.13 micropython ipython

brew info affiche la version stable, le chemin d'installation quand le paquet est présent, et ses dépendances.

Fenêtre de terminal
brew info htop
# ==> htop: stable 3.4.1 (bottled)
# Improved top (interactive process viewer)
# https://htop.dev/
# Installed: /opt/homebrew/Cellar/htop/3.4.1

Deux commandes à ne pas confondre : brew update rafraîchit le catalogue des formules, brew upgrade met à jour les paquets installés. Lancer la seconde sans la première ne trouvera jamais de nouvelle version.

Fenêtre de terminal
# Mettre à jour le catalogue des formules
brew update
# Voir les paquets obsolètes
brew outdated
# Mettre à jour tous les paquets
brew upgrade
# Mettre à jour un paquet spécifique
brew upgrade htop

brew uninstall ne retire que le paquet nommé : ses dépendances restent en place jusqu'à ce que brew autoremove les repère comme orphelines.

Fenêtre de terminal
brew uninstall htop

Pour supprimer aussi les dépendances orphelines :

Fenêtre de terminal
brew autoremove

brew leaves est la plus utile de ces variantes : elle isole ce que vous avez installé explicitement du reste, tiré automatiquement comme dépendance.

Fenêtre de terminal
# Tous les paquets
brew list
# Seulement les formules (CLI)
brew list --formula
# Seulement les casks (GUI)
brew list --cask
# Paquets "feuilles" (installés explicitement, pas en dépendance)
brew leaves

Homebrew conserve les anciennes versions après une mise à jour. Pour libérer de l'espace :

Fenêtre de terminal
# Simuler le nettoyage (dry-run)
brew cleanup -n
# Would remove: /opt/homebrew/Cellar/node/20.10.0 (1,234 files, 89MB)
# Nettoyer effectivement
brew cleanup

Ce tableau rassemble les commandes de la section, à garder sous la main le temps que les réflexes s'installent.

ActionCommande
Installer un paquet CLIbrew install <paquet>
Installer une app GUIbrew install --cask <app>
Rechercherbrew search <terme>
Informationsbrew info <paquet>
Mettre à jour le cataloguebrew update
Mettre à jour les paquetsbrew upgrade
Supprimerbrew uninstall <paquet>
Lister les paquetsbrew list
Nettoyerbrew cleanup
Diagnosticbrew doctor

brew bundle permet de sauvegarder votre configuration complète dans un fichier déclaratif appelé Brewfile. C'est essentiel pour :

  • Configurer rapidement une nouvelle machine
  • Versionner votre configuration dans un dotfiles repo
  • Partager une configuration d'équipe

brew bundle dump inspecte l'état courant de la machine et écrit le résultat dans un Brewfile du répertoire courant ; il refuse d'écraser un fichier existant sans l'option --force.

Fenêtre de terminal
# Générer le Brewfile depuis les paquets installés
brew bundle dump
# Fichier Brewfile créé dans le répertoire courant

Le fichier généré ressemble à :

# Brewfile
tap "homebrew/bundle"
tap "homebrew/cask-fonts"
# CLI tools
brew "git"
brew "htop"
brew "node"
brew "python@3.12"
# GUI applications
cask "visual-studio-code"
cask "firefox"
cask "docker"
# Fonts
cask "font-fira-code"

La restauration est idempotente : les paquets déjà présents sont ignorés, seuls les manquants sont installés.

Fenêtre de terminal
# Installer tous les paquets du Brewfile
brew bundle install
# Ou simplement
brew bundle

brew bundle cleanup supprime tout ce qui n'est pas déclaré dans le Brewfile. Passez systématiquement par --dry-run d'abord, la suppression ne se rejoue pas en arrière.

Fenêtre de terminal
# Voir ce qui serait installé sans rien faire
brew bundle check
# Lister les paquets installés mais absents du Brewfile
brew bundle cleanup --dry-run
# Supprimer ces paquets excédentaires
brew bundle cleanup

Comprendre les dépendances est crucial pour le nettoyage et le diagnostic. Homebrew fournit plusieurs commandes pour visualiser les relations entre paquets.

brew deps liste les dépendances d'une formule, qu'elles soient installées ou non sur la machine.

Fenêtre de terminal
brew deps htop
# lm-sensors
# ncurses

L'option --tree restitue la hiérarchie et montre quelle dépendance en amène une autre.

Fenêtre de terminal
brew deps --tree htop
# htop
# ├── ncurses
# └── lm-sensors

brew uses --installed répond à la question inverse : qu'est-ce qui cesserait de fonctionner si je supprimais ce paquet.

Fenêtre de terminal
brew uses --installed ncurses
# htop

Cette commande est utile avant de désinstaller un paquet partagé.

Les paquets "feuilles" sont ceux que vous avez installés explicitement (pas en tant que dépendance) :

Fenêtre de terminal
brew leaves

Pour voir les dépendances qui ne sont plus nécessaires :

Fenêtre de terminal
brew autoremove --dry-run

Sur macOS, brew services utilise launchd pour démarrer des services au login. C'est pratique pour les bases de données, serveurs web, etc.

Fenêtre de terminal
# Lister tous les services disponibles
brew services list
# Name Status User File
# postgresql stopped
# redis started bob ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
# Démarrer un service
brew services start postgresql
# Arrêter un service
brew services stop postgresql
# Redémarrer un service
brew services restart postgresql
# Démarrer au boot (avec sudo)
sudo brew services start postgresql

Les taps sont des dépôts Git contenant des formules supplémentaires. Par défaut, Homebrew utilise homebrew/core et homebrew/cask.

brew tap sans argument liste les dépôts actuellement enregistrés sur la machine.

homebrew/bundle
brew tap
# homebrew/cask

Ajouter un tap clone son dépôt Git en local, et les formules qu'il contient s'exécuteront avec votre compte : réservez l'opération à des sources de confiance.

Fenêtre de terminal
brew tap hashicorp/tap

Une fois ajouté, vous pouvez installer les formules de ce tap :

Fenêtre de terminal
brew install hashicorp/tap/terraform

brew untap retire le dépôt mais laisse en place les paquets déjà installés depuis ce tap ; ils ne recevront simplement plus de mise à jour.

Fenêtre de terminal
brew untap hashicorp/tap

Ces dépôts reviennent le plus souvent dans une configuration DevOps. Un tap n'apporte que des formules supplémentaires : il ne remplace pas homebrew/core, qui reste actif par défaut.

TapDescription
homebrew/cask-fontsPolices pour développeurs
hashicorp/tapOutils HashiCorp (Terraform, Vault)
aws/tapAWS CLI et outils
mongodb/brewMongoDB Community

Homebrew n'est pas un gestionnaire de versions : il installe une version par formule. La cohabitation repose sur trois mécanismes distincts, des formules suffixées @version, le gel d'un paquet avec pin, et le basculement des liens symboliques avec link et unlink. Cette mécanique suffit pour figer un interpréteur système, mais elle reste globale à la machine : elle ne sait pas changer de version selon le répertoire courant.

Certains paquets proposent plusieurs versions avec le suffixe @version :

Fenêtre de terminal
brew search python
# python@3.11 python@3.12 python@3.13
brew install python@3.11

Pour empêcher la mise à jour d'un paquet :

Fenêtre de terminal
# Bloquer les mises à jour
brew pin python@3.12
# Voir les paquets bloqués
brew list --pinned
# python@3.12
# Débloquer
brew unpin python@3.12

Si plusieurs versions sont installées, utilisez brew link :

Fenêtre de terminal
# Désactiver la version actuelle
brew unlink python@3.12
# Activer une autre version
brew link python@3.11 --force

Presque tous les incidents Homebrew se rangent dans trois familles : un PATH non configuré, des permissions incorrectes sur le préfixe d'installation, et un catalogue de formules périmé. brew doctor détecte les deux premières et affiche directement la commande de correction.

Ces quatre commandes suffisent à qualifier la panne avant de chercher plus loin.

Fenêtre de terminal
# Vérifier la configuration
brew doctor
# Voir la configuration actuelle
brew config
# Recréer les liens symboliques
brew link <paquet> --overwrite
# Réinstaller un paquet corrompu
brew reinstall <paquet>

Repérez votre message d'erreur dans la colonne de gauche : la manœuvre exacte figure en face.

SymptômeCause probableSolution
command not found: brewPATH non configuréRelancer le shellenv (voir installation)
Permission deniedProblème de propriétairesudo chown -R $(whoami) /opt/homebrew
Error: No available formulaCatalogue obsolètebrew update
Bottle not foundVersion de macOS non supportéebrew install --build-from-source <pkg>
Cask requires macOSCask sur LinuxLes casks sont réservés à macOS
already installedPaquet déjà présentbrew reinstall <pkg> si besoin

Ces commandes réparent l'installation sans toucher aux paquets. brew update-reset réaligne les dépôts Git internes de Homebrew sur leur état distant, ce qui annule au passage toute modification locale des formules.

Fenêtre de terminal
# Réinitialiser Homebrew (garde les paquets)
brew update-reset
# Nettoyer le cache
brew cleanup --prune=all
# Vérifier et réparer les liens
brew doctor

Trois réflexes suffisent à garder une installation Homebrew saine dans la durée. Ils portent sur la provenance de ce que vous installez, sur l'espace disque consommé, et sur votre capacité à reconstruire la même machine ailleurs.

Un tap tiers exécute du code Ruby sur votre poste, avec votre compte : c'est le principal point de vigilance.

  • Vérifiez les formules avant d'ajouter un tap tiers
  • Ne jamais utiliser sudo avec brew (sauf pour brew services)
  • Les attestations SBOM (Homebrew 5.0+) vérifient l'intégrité des bottles

Homebrew ne ralentit pas avec le temps, mais il grossit : chaque mise à jour laisse l'ancienne version dans le Cellar.

  • Nettoyez régulièrement : brew cleanup libère l'espace disque
  • Utilisez brew bundle pour des installations reproductibles
  • Évitez d'installer tout : chaque paquet consomme des ressources

Le Brewfile est le seul document qui déclare ce que la machine est censée contenir ; sans lui, la configuration n'existe que dans votre mémoire.

  • Un Brewfile par projet si les dépendances diffèrent
  • Versionnez votre Brewfile dans votre repo dotfiles
  • Documentez les taps externes que vous utilisez
  1. brew install installe des outils CLI, --cask pour les apps GUI
  2. brew bundle dump sauvegarde votre configuration dans un Brewfile
  3. brew bundle install restaure tout depuis ce fichier
  4. brew deps --tree visualise les dépendances d'un paquet
  5. brew services gère les services (bases de données, serveurs)
  6. brew pin bloque les mises à jour d'un paquet spécifique
  7. brew doctor diagnostique les problèmes de configuration

Deux compléments naturels, selon que vous cherchiez à fixer des versions projet par projet ou à isoler complètement un environnement d'exécution.

Les questions les plus fréquentes sur Homebrew, avec une réponse directe : gratuité, comparaison avec apt et dnf, différence entre formule et cask, sauvegarde par Brewfile et confusion brew update / brew upgrade.

Les ressources officielles pour approfondir et suivre les évolutions de Homebrew.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn