# Referencia Rápida de Homebrew

*Gestión de paquetes, casks, taps, servicios, limpieza*

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

## Instalación

### Instalar Homebrew

```
/bin/bash -c "$(curl -fsSL \
  https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew --version       # verificar instalación
```

### Post-instalación (Apple Silicon)

```
# agregar Homebrew al PATH (Apple Silicon por defecto)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' \
  >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
```

### Rutas de instalación

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

## Gestión de paquetes

### Instalar y eliminar

```
brew install git           # instalar formula
brew install git@2.40      # instalar versión específica
brew uninstall git         # eliminar formula
brew reinstall git         # reinstalar formula
```

### Actualizar

```
brew update                # actualizar el propio Homebrew
brew upgrade               # actualizar todos los paquetes
brew upgrade git           # actualizar paquete específico
brew pin git               # impedir auto-actualización
brew unpin git             # permitir actualización de nuevo
```

### Listar instalados

```
brew list                  # todas las fórmulas instaladas
brew list --cask           # todos los casks instalados
brew leaves                # de nivel superior (sin dependencias)
brew deps git              # mostrar dependencias de git
```

## Búsqueda e información

### Encontrar paquetes

```
brew search postgres       # buscar por nombre
brew search --cask chrome  # buscar solo casks
brew info git              # detalles del paquete
brew home git              # abrir página web en el navegador
```

### Campos de información

| Command | Description |
|---------|-------------|
| `Name / Version` | Nombre e versión instalada del paquete |
| `Dependencies` | Paquetes requeridos |
| `Conflicts` | Paquetes que no pueden coexistir |
| `Caveats` | Notas post-instalación (PATH, configuración) |
| `Analytics` | Número de instalaciones (últimos 30/90/365 días) |

## Servicios

### Gestionar servicios

```
brew services list             # todos los servicios + estado
brew services start postgresql # iniciar y auto-lanzar
brew services stop postgresql  # detener servicio
brew services restart nginx    # reiniciar servicio
brew services run redis        # iniciar sin auto-lanzar
```

### Notas sobre servicios

| Command | Description |
|---------|-------------|
| `start` | Lanzar ahora + registrar para inicio al login |
| `run` | Lanzar ahora solo (sin auto-inicio) |
| `stop` | Detener y quitar del inicio |
| `restart` | Detener y luego iniciar |
| `list` | Mostrar todos los servicios y su estado |
| `Logs` | Ver `~/Library/Logs/Homebrew/` |

## Casks

### Gestión de apps GUI

```
brew install --cask firefox      # instalar app GUI
brew uninstall --cask firefox     # eliminar app GUI
brew upgrade --cask               # actualizar todos los casks
brew list --cask                  # listar casks instalados
```

### Casks comunes

| Command | Description |
|---------|-------------|
| `google-chrome` | Navegador Chrome |
| `visual-studio-code` | Editor VS Code |
| `docker` | Docker Desktop |
| `iterm2` | Terminal iTerm2 |
| `slack` | Mensajería Slack |
| `rectangle` | Gestión de ventanas |
| `1password` | Gestor de contraseñas |
| `raycast` | Lanzador (reemplazo de Spotlight) |

## Taps

### Repositorios de terceros

```
brew tap                         # listar repos agregados
brew tap hashicorp/tap           # agregar un tap
brew untap hashicorp/tap         # eliminar un tap
brew install hashicorp/tap/terraform  # instalar desde tap
```

### Taps populares

| Command | Description |
|---------|-------------|
| `homebrew/cask` | Apps GUI (incluido por defecto) |
| `homebrew/cask-fonts` | Fuentes: `brew install --cask font-fira-code` |
| `homebrew/bundle` | Soporte Brewfile (Bundler para Homebrew) |
| `hashicorp/tap` | Terraform, Vault, Consul |

### Brewfile (Bundle)

```
brew bundle dump               # generar Brewfile
brew bundle install            # instalar desde Brewfile
brew bundle cleanup            # eliminar paquetes no listados
```

## Limpieza

### Liberar espacio en disco

```
brew cleanup                 # eliminar versiones antiguas
brew cleanup -s              # también eliminar caché
brew cleanup --prune=all     # eliminar todas las descargas en caché
brew autoremove              # eliminar dependencias sin usar
```

### Diagnóstico

```
brew doctor                  # verificar problemas
brew config                  # mostrar configuración de Homebrew
brew missing                 # listar dependencias faltantes
du -sh $(brew --cache)       # verificar tamaño del caché
```

## Patrones comunes

### Flujos de trabajo habituales

| Command | Description |
|---------|-------------|
| `Actualización matutina` | `brew update && brew upgrade && brew cleanup` |
| `Configurar nuevo Mac` | `brew bundle install` desde un Brewfile |
| `Exportar configuración` | `brew bundle dump --file=~/Brewfile` |
| `Verificar salud` | `brew doctor` |
| `Encontrar qué ocupa espacio` | `brew list --formula \| xargs brew info` |
| `Desinstalar + dependencias` | `brew uninstall pkg && brew autoremove` |

### Ejemplo de Brewfile

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