# Référence rapide Homebrew

*Gestion de paquets, casks, taps, services, nettoyage*

> Source: Homebrew Documentation (brew.sh) · MIT

## Installation

### Installer Homebrew

```
/bin/bash -c "$(curl -fsSL \
  https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew --version       # vérifier l'installation
```

### Post-installation (Apple Silicon)

```
# ajouter Homebrew au PATH (Apple Silicon par défaut)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' \
  >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
```

### Chemins d'installation

| Command | Description |
|---------|-------------|
| `/opt/homebrew` | Préfixe Apple Silicon (ARM) |
| `/usr/local` | Préfixe Mac Intel |
| `/home/linuxbrew/.linuxbrew` | Préfixe Linux |

## Gestion des paquets

### Installer et supprimer

```
brew install git           # installer une formule
brew install git@2.40      # installer une version spécifique
brew uninstall git         # supprimer une formule
brew reinstall git         # réinstaller une formule
```

### Mettre à jour et mettre à niveau

```
brew update                # mettre à jour Homebrew lui-même
brew upgrade               # mettre à niveau tous les paquets
brew upgrade git           # mettre à niveau un paquet spécifique
brew pin git               # empêcher la mise à niveau automatique
brew unpin git             # autoriser à nouveau la mise à niveau
```

### Lister les paquets installés

```
brew list                  # toutes les formules installées
brew list --cask           # tous les casks installés
brew leaves                # paquets de premier niveau (sans dépendances)
brew deps git              # afficher les dépendances de git
```

## Recherche et informations

### Trouver des paquets

```
brew search postgres       # rechercher par nom
brew search --cask chrome  # rechercher uniquement dans les casks
brew info git              # détails du paquet
brew home git              # ouvrir la page d'accueil dans le navigateur
```

### Champs d'information

| Command | Description |
|---------|-------------|
| `Name / Version` | Nom du paquet et version installée |
| `Dependencies` | Paquets requis |
| `Conflicts` | Paquets incompatibles |
| `Caveats` | Notes post-installation (PATH, config) |
| `Analytics` | Nombre d'installations (30/90/365 derniers jours) |

## Services

### Gestion des services

```
brew services list             # tous les services + état
brew services start postgresql # démarrer et lancer au démarrage
brew services stop postgresql  # arrêter le service
brew services restart nginx    # redémarrer le service
brew services run redis        # démarrer sans lancement automatique
```

### Notes sur les services

| Command | Description |
|---------|-------------|
| `start` | Lancer maintenant + enregistrer au démarrage de session |
| `run` | Lancer maintenant uniquement (pas de démarrage auto) |
| `stop` | Arrêter et désinscrire du démarrage |
| `restart` | Arrêter puis démarrer |
| `list` | Afficher tous les services et leur état |
| `Logs` | Vérifier `~/Library/Logs/Homebrew/` |

## Casks

### Gestion des applications graphiques

```
brew install --cask firefox      # installer une application graphique
brew uninstall --cask firefox     # supprimer une application graphique
brew upgrade --cask               # mettre à niveau tous les casks
brew list --cask                  # lister les casks installés
```

### Casks courants

| Command | Description |
|---------|-------------|
| `google-chrome` | Navigateur Chrome |
| `visual-studio-code` | Éditeur VS Code |
| `docker` | Docker Desktop |
| `iterm2` | Terminal iTerm2 |
| `slack` | Messagerie Slack |
| `rectangle` | Gestion des fenêtres |
| `1password` | Gestionnaire de mots de passe |
| `raycast` | Lanceur (remplacement de Spotlight) |

## Taps

### Dépôts tiers

```
brew tap                         # lister les dépôts ajoutés
brew tap hashicorp/tap           # ajouter un tap
brew untap hashicorp/tap         # supprimer un tap
brew install hashicorp/tap/terraform  # installer depuis un tap
```

### Taps populaires

| Command | Description |
|---------|-------------|
| `homebrew/cask` | Applications graphiques (inclus par défaut) |
| `homebrew/cask-fonts` | Polices : `brew install --cask font-fira-code` |
| `homebrew/bundle` | Support Brewfile (Bundler pour Homebrew) |
| `hashicorp/tap` | Terraform, Vault, Consul |

### Brewfile (Bundle)

```
brew bundle dump               # générer un Brewfile
brew bundle install            # installer depuis le Brewfile
brew bundle cleanup            # supprimer les paquets non listés
```

## Nettoyage

### Libérer de l'espace disque

```
brew cleanup                 # supprimer les anciennes versions
brew cleanup -s              # supprimer aussi le cache
brew cleanup --prune=all     # supprimer tous les téléchargements en cache
brew autoremove              # supprimer les dépendances inutilisées
```

### Diagnostics

```
brew doctor                  # vérifier les problèmes
brew config                  # afficher la configuration Homebrew
brew missing                 # lister les dépendances manquantes
du -sh $(brew --cache)       # vérifier la taille du cache
```

## Modèles courants

### Flux de travail quotidiens

| Command | Description |
|---------|-------------|
| `Mise à jour du matin` | `brew update && brew upgrade && brew cleanup` |
| `Nouveau Mac` | `brew bundle install` depuis un Brewfile |
| `Exporter la configuration` | `brew bundle dump --file=~/Brewfile` |
| `Vérifier l'état` | `brew doctor` |
| `Trouver ce qui prend de la place` | `brew list --formula \| xargs brew info` |
| `Désinstaller + dépendances` | `brew uninstall pkg && brew autoremove` |

### Exemple de Brewfile

```
# ~/Brewfile
tap "homebrew/bundle"
brew "git"
brew "node"
brew "python"
cask "visual-studio-code"
cask "docker"
```
