Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Package Management on macOS

Unlike most Unix systems, macOS doesn’t include a native package manager for command-line software. The App Store handles GUI applications, but for developer tools, libraries, and Unix utilities, you need third-party solutions.

This gap has been filled by community projects, with Homebrew emerging as the dominant solution. Understanding how to install, manage, and troubleshoot packages on macOS is essential for any developer or system administrator.

The Package Management Landscape

macOS offers several package management approaches:

Homebrew

The most popular choice. Homebrew provides:

  • 6,000+ formulae (packages)
  • 5,000+ casks (GUI applications)
  • Active community maintenance
  • Simple brew install workflow

MacPorts

An older, more Unix-traditional approach:

  • Builds everything from source by default
  • Extensive package collection
  • More isolation from system
  • Uses /opt/local prefix

Native Installers

Apple’s standard installation methods:

  • .pkg files for command-line tools
  • .dmg disk images for applications
  • Xcode Command Line Tools
  • App Store for sandboxed applications

Language-Specific Managers

Development often requires language-specific tools:

  • pip / pyenv for Python
  • gem / rbenv / rvm for Ruby
  • npm / nvm for Node.js
  • cargo for Rust
  • go get for Go

Why Package Management Matters

Coming from Linux, you might expect:

$ apt install nginx       # Ubuntu
$ dnf install nginx       # Fedora
$ pacman -S nginx         # Arch

On macOS, there’s no equivalent system command. You need Homebrew:

$ brew install nginx

Understanding macOS package management helps you:

  • Install development dependencies reliably
  • Keep software updated
  • Manage conflicts between versions
  • Work across Apple Silicon and Intel Macs
  • Troubleshoot installation issues

What You’ll Learn in This Part

Homebrew: Architecture and Internals explains how Homebrew works—formulae, casks, taps, bottles, and the Cellar—giving you the knowledge to troubleshoot effectively.

Homebrew Best Practices covers daily usage patterns, maintenance routines, and avoiding common pitfalls.

MacPorts: An Alternative Approach presents MacPorts for those who prefer its philosophy or need packages not available in Homebrew.

Native Installers: pkg and dmg covers Apple’s native installation formats and when to use them.

Managing Python Environments addresses the complexity of Python on macOS—system Python, Homebrew Python, pyenv, and virtual environments.

Managing Ruby Environments covers Ruby version management with rbenv or rvm, essential for Rails development.

Managing Node.js Environments explains nvm and other tools for managing multiple Node.js versions.

Comparing Package Managers provides a feature comparison to help you choose the right tool for different situations.

Quick Start: Installing Homebrew

For those eager to get started:

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

# Follow the post-install instructions to add to PATH
# For Apple Silicon, add to ~/.zprofile:
eval "$(/opt/homebrew/bin/brew shellenv)"

# Verify installation
$ brew doctor

# Install something
$ brew install wget

The following chapters explain what’s happening under the hood and how to use these tools effectively.