DEV Community

Cover image for Homebrew Basics

Homebrew Basics

amyshackles profile image Amy Shackles ・2 min read

Homebrew Terminology

Formula: A package definition written in Ruby
Keg: Installation prefix of a formula (e.g., /usr/local/Cellar/pipenv)
Keg-only dependency: Dependency that isn't symlinked to places like /usr/local
Cask: An extension of Homebrew to install MacOS native apps (e.g., Atom and Google Chrome)
Cellar: Where kegs are installed (/usr/local/Cellar)
Bottle: A pre-built keg (rather than one built from source)
Tap: A git repository. To tap a repository is to make a shallow clone of it.
Brew bundle: An extension of Homebrew to describe dependencies

Essential commands

brew install <formula name> # Installs a package

brew uninstall <formula name> # Uninstalls a package

brew list # Lists all installed packages

brew search # Lists all locally available packages

brew search <text> # Searches online in homebrew/core and
# homebrew/cask

brew search /<text>/ # Search term is interpreted as a 
# regular expression if bookended by slashes.  Searches 
# online in homebrew/core and homebrew/cask

Useful commands

brew commands # Lists all built-in and external commands known
# to homebrew.  Returns with subheadings for:
# "Built-in commands", "Built-in developer commands",
# "External commands", "Cask commands", and
# "external cask commands".

brew cleanup # Removes old lock files and outdated downloads
# for formulae and casks, removing old versions

brew doctor # Checks system for potential problems

brew log # Shows git log for the Homebrew repository

brew log <formula name> # Shows git log for formula

brew update # Fetches newest version of Homebrew and all
# formula from Github and performs necessary migrations

brew upgrade # Upgrade outdated casks and formula using the
# same options they were installed with

brew upgrade <formula name|cask name> # Upgrade formula|cask

Managing Background Services

Brew services manage background services using the macOS launchctl daemon manager

brew services run <formula name> # Run the service without
# registering to launch it at login (or boot)

brew services run --all # Run all services without registering
# to launch them at login/boot

brew services start <formula name> # Immediately start the
# service and register it to launch at login (or boot)

brew services start --all # Immediately start all services
# and register them to launch at login/boot

brew services stop <formula name> # Immediately stop the
# service and unregister it from launching at login (or boot)

brew services stop --all # Immediately stop all services
# and register unregister them from launching at login/boot

brew services restart <formula name> # Stop (if necessary) and
# start the service immediately, registering to launch at
# login (or boot)

brew services restart --all # Stop (if necessary) all services
# and start them immediately, registering to launch them at 
# login/boot

brew services cleanup # Remove all unused services

brew services # Lists all managed services and whether they 
# are stopped or started



Editor guide
vonheikemen profile image

Thanks for this, it's really nice.

I started using homebrew recently, I found out it works on linux too (with some limitations). The output messages and the commands are very user friendly, I like it so far.