Skip to content

Homebrew Package Manager

Comprehensive Homebrew commands and workflows for macOS and Linux package management.

Installation & Setup

Install Homebrew

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

# Add to PATH (follow installer instructions)
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

Basic Package Operations

CommandDescription
brew install package_nameInstall package
brew uninstall package_nameUninstall package
brew upgradeUpgrade all packages
brew upgrade package_nameUpgrade specific package
brew listList installed packages
brew outdatedList outdated packages

Package Information

Search and Information

CommandDescription
brew search keywordSearch for packages
brew info package_nameShow package information
brew list --versionsList installed packages with versions
brew deps package_nameShow package dependencies
brew uses package_nameShow packages that depend on this
brew home package_nameOpen package homepage

Package Details

CommandDescription
brew desc package_nameShow package description
brew cat package_nameShow package formula
brew edit package_nameEdit package formula
brew log package_nameShow package commit history

Cask Management (GUI Applications)

Cask Operations

CommandDescription
brew install --cask app_nameInstall GUI application
brew uninstall --cask app_nameUninstall GUI application
brew list --caskList installed casks
brew search --cask keywordSearch for casks
brew info --cask app_nameShow cask information
brew upgrade --caskUpgrade all casks
CaskDescription
visual-studio-codeVS Code editor
google-chromeChrome browser
dockerDocker Desktop
slackSlack messaging
zoomZoom video conferencing
spotifySpotify music

Services Management

Service Operations

CommandDescription
brew services listList all services
brew services start service_nameStart service
brew services stop service_nameStop service
brew services restart service_nameRestart service
brew services run service_nameRun service once

Common Services

ServiceDescription
postgresqlPostgreSQL database
mysqlMySQL database
redisRedis cache
nginxNginx web server
mongodb-communityMongoDB database

Tap Management (Third-party Repositories)

Tap Operations

CommandDescription
brew tapList tapped repositories
brew tap user/repoAdd tap
brew untap user/repoRemove tap
brew tap-info user/repoShow tap information
TapDescription
homebrew/cask-fontsFonts collection
homebrew/cask-versionsAlternative app versions
homebrew/servicesService management
mongodb/brewMongoDB packages

System Maintenance

Cleanup Operations

CommandDescription
brew cleanupRemove old versions
brew cleanup package_nameClean specific package
brew cleanup --prune=allRemove all old downloads
brew autoremoveRemove unused dependencies

Health and Diagnostics

CommandDescription
brew doctorCheck system for issues
brew missingCheck for missing dependencies
brew configShow Homebrew configuration
brew --versionShow Homebrew version

Advanced Usage

Formula Development

CommandDescription
brew create URLCreate new formula
brew edit package_nameEdit formula
brew install --build-from-source packageBuild from source
brew test package_nameTest formula

Version Management

CommandDescription
brew pin package_namePin package version
brew unpin package_nameUnpin package version
brew switch package_name versionSwitch to specific version
brew list --versions package_nameShow available versions

Bundle Management

ruby
# Brewfile example
tap "homebrew/bundle"
tap "homebrew/cask"
tap "homebrew/core"

brew "git"
brew "node"
brew "python"
brew "docker"

cask "visual-studio-code"
cask "google-chrome"
cask "slack"

mas "Xcode", id: 497799835
CommandDescription
brew bundleInstall from Brewfile
brew bundle dumpCreate Brewfile
brew bundle cleanupUninstall unlisted packages
brew bundle checkCheck Brewfile status

Configuration

Environment Variables

VariableDescription
HOMEBREW_PREFIXInstallation prefix
HOMEBREW_CELLARPackage installation directory
HOMEBREW_REPOSITORYHomebrew repository location
HOMEBREW_CACHEDownload cache directory

Configuration Files

FileDescription
~/.homebrew/User configuration
/opt/homebrew/Installation directory (Apple Silicon)
/usr/local/Installation directory (Intel)
BrewfilePackage bundle file

Troubleshooting

Common Issues

ProblemSolution
Permission errorssudo chown -R $(whoami) /opt/homebrew
Outdated Xcode toolsxcode-select --install
Broken symlinksbrew doctor && brew cleanup
Formula conflictsbrew unlink package && brew link package

Reset and Reinstall

CommandDescription
brew uninstall --force package_nameForce uninstall
brew reinstall package_nameReinstall package
brew link --overwrite package_nameForce link
brew pruneRemove dead symlinks

Debugging

CommandDescription
brew --debug install packageDebug installation
brew --verbose install packageVerbose installation
brew gist-logs package_nameCreate gist of logs

Performance Optimization

Parallel Operations

bash
# Enable parallel downloads
export HOMEBREW_PARALLEL=4

# Disable analytics
export HOMEBREW_NO_ANALYTICS=1

# Use faster GitHub API
export HOMEBREW_GITHUB_API_TOKEN=your_token

Cache Management

CommandDescription
brew cleanup --prune=7Keep 7 days of downloads
du -sh $(brew --cache)Check cache size
rm -rf $(brew --cache)Clear all cache

Security

Package Verification

CommandDescription
brew audit package_nameAudit package formula
brew style package_nameCheck formula style
brew install --verbose packageShow detailed install process

Safe Practices

  1. Regular Updates: Keep Homebrew and packages updated
  2. Trusted Taps: Only add trusted third-party taps
  3. Review Formulas: Check formulas before installation
  4. Backup: Maintain Brewfile for easy restoration
  5. Permissions: Avoid running with sudo

Integration

Shell Integration

bash
# Bash completion
if type brew &>/dev/null; then
  HOMEBREW_PREFIX="$(brew --prefix)"
  if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]; then
    source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
  fi
fi

# Zsh completion
if type brew &>/dev/null; then
  FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
  autoload -Uz compinit
  compinit
fi

Development Workflow

bash
# Install development environment
brew install git node python ruby go rust
brew install --cask visual-studio-code docker

# Database setup
brew install postgresql redis
brew services start postgresql
brew services start redis

# Create project
mkdir myproject && cd myproject
npm init -y

Best Practices

Package Management

  1. Regular Maintenance: Run brew update && brew upgrade weekly
  2. Cleanup: Regular cleanup of old versions and cache
  3. Bundle Files: Use Brewfile for team consistency
  4. Pin Critical: Pin packages that need specific versions
  5. Documentation: Document custom taps and configurations

Development Environment

  1. Version Managers: Use version managers for languages (nvm, pyenv, rbenv)
  2. Virtual Environments: Isolate project dependencies
  3. Service Management: Use brew services for development databases
  4. Path Management: Keep PATH clean and organized
  5. Backup Strategy: Regular Brewfile dumps and dotfile backups

Performance

  1. Parallel Downloads: Enable parallel operations
  2. Cache Management: Regular cache cleanup
  3. Analytics: Disable analytics for faster operations
  4. GitHub Token: Use GitHub token for API rate limits
  5. SSD Optimization: Store cache on fastest storage