Homebrew 완벽 가이드: macOS 패키지 관리의 필수 도구
macOS에서 개발 환경을 처음 셋업할 때 가장 먼저 하는 일이 뭘까요? 대부분의 개발자가 Homebrew부터 설치할 거예요. Git, Node.js, Python, Docker CLI 같은 개발 도구를 터미널 명령어 하나로 설치하고 관리할 수 있게 해주는 도구이기 때문인데요. 한번 쓰기 시작하면 없이는 못 살게 되는 도구죠. 이번 글에서는 Homebrew 설치부터 Cask, Tap, Bundle까지 하나씩 살펴보겠습니다.
Homebrew란?
Homebrew는 macOS(와 Linux)용 패키지 매니저입니다.
Ubuntu에 apt가 있고 CentOS에 yum이 있는 것처럼 macOS에는 Homebrew가 있다고 보면 되는데요.
Apple이 만든 건 아니고 커뮤니티가 주도하는 오픈 소스 프로젝트입니다.
macOS에는 기본적으로 패키지 매니저가 없어서 소프트웨어를 설치하려면 공식 사이트에서 직접 다운로드하거나 App Store를 써야 합니다.
Homebrew가 이 빈자리를 채워주는 거죠.
터미널에서 brew install 한 줄이면 웬만한 개발 도구는 다 설치할 수 있고, 업데이트나 삭제도 깔끔하게 처리됩니다.
Homebrew 세계에서 자주 등장하는 용어를 먼저 짚고 가볼게요.
- Formula — CLI 도구나 라이브러리 패키지 (예:
git,node,python) - Cask — GUI 애플리케이션 패키지 (예:
visual-studio-code,firefox,slack) - Tap — Formula나 Cask가 담긴 저장소로, 기본 저장소 외에 서드파티 저장소를 추가할 수 있음
- Cellar — Formula가 실제로 설치되는 디렉토리 (
/opt/homebrew/Cellar/) - Keg — Cellar 안에 있는 특정 패키지의 특정 버전 디렉토리
전부 맥주 양조(Brewing) 비유에서 따온 이름이에요. Formula(레시피)로 brew(양조)해서 Keg(통)에 담아 Cellar(저장고)에 보관한다… 꽤 재미있는 네이밍이죠? 🍺
설치
Homebrew를 설치하기 전에 Xcode Command Line Tools가 필요합니다. 보통 Homebrew 설치 스크립트가 알아서 설치해주지만 미리 깔아두고 싶으면 다음 명령어를 실행하면 됩니다.
xcode-select --install
Homebrew 설치는 공식 사이트에서 안내하는 스크립트를 터미널에 붙여 넣으면 끝입니다.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치가 끝나면 터미널에 안내되는 대로 쉘 설정 파일에 Homebrew 경로를 추가해야 합니다.
Apple Silicon(M1 이후) Mac에서는 Homebrew가 /opt/homebrew/에 설치되기 때문에 다음과 같이 PATH 환경 변수에 경로를 등록하는 설정이 필요합니다.
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
참고로 Intel Mac에서는
/usr/local/에 설치되어서 별도 경로 설정이 필요 없는 경우가 많습니다.
설치 확인은 버전을 출력해보면 됩니다.
brew --version
Homebrew 4.4.20
패키지 검색
뭔가를 설치하려면 먼저 패키지 이름을 알아야겠죠?
brew search 명령어로 키워드에 맞는 패키지를 검색할 수 있습니다.
brew search python
==> Formulae
python@3.10 python@3.11 python@3.12 python@3.13 python@3.9
python-argcomplete python-build python-gdbm@3.12 ...
==> Casks
mysql-connector-python
결과에 Formulae(CLI 도구)와 Casks(GUI 앱)가 구분되어 나오는 게 보이시죠?
특정 패키지의 상세 정보가 궁금하면 brew info를 사용합니다.
brew info git
==> git: stable 2.47.2 (bottled), HEAD
Distributed revision control system
https://git-scm.com
Installed
/opt/homebrew/Cellar/git/2.47.2 (1,697 files, 54.5MB) *
Poured from bottle using the formulae.brew.sh API on 2025-01-15
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/g/git.rb
패키지의 버전, 설명, 공식 사이트 링크, 설치 경로, 의존성 등 유용한 정보를 한눈에 확인할 수 있습니다.
패키지 설치
패키지 설치는 brew install 뒤에 패키지 이름을 적어주면 됩니다.
brew install git
여러 패키지를 한번에 설치할 수도 있어요.
brew install git node python
설치가 끝나면 바로 사용할 수 있습니다. Homebrew가 실행 파일의 심볼릭 링크를 알아서 걸어주기 때문에 별도로 PATH를 설정할 필요가 없거든요.
특정 버전 설치
Python이나 Node.js처럼 여러 버전이 공존하는 패키지는 @ 뒤에 버전을 붙여서 설치합니다.
brew install python@3.11
brew install node@20
다만 Homebrew는 기본적으로 최신 버전 하나를 관리하는 데 초점이 맞춰져 있어요. 여러 버전을 자유롭게 전환하며 쓰려면 pyenv나 Mise 같은 런타임 버전 매니저를 쓰는 게 낫습니다.
설치된 패키지 관리
현재 설치된 패키지 목록을 보고 싶으면 brew list를 사용합니다.
brew list
설치된 패키지가 많으면 출력이 길어지는데, Formula와 Cask를 따로 보고 싶다면 플래그를 추가하면 됩니다.
brew list --formula # CLI 도구만
brew list --cask # GUI 앱만
직접 설치한 패키지(의존성으로 딸려온 게 아닌 것)만 보고 싶을 때는 brew leaves가 유용합니다.
brew leaves
이렇게 하면 내가 명시적으로 설치한 최상위 패키지만 나와서 한결 깔끔하죠.
패키지 업데이트
Homebrew 자체를 최신 상태로 업데이트하려면 brew update를 실행합니다.
brew update
이 명령어는 Homebrew의 Formula 목록을 최신으로 갱신하는 거예요. 내부적으로 JSON API를 통해 패키지 정보를 받아오기 때문에 보통 몇 초면 끝납니다. 실제 패키지를 업그레이드하는 건 별도 명령어입니다.
업그레이드 가능한 패키지를 확인하려면 brew outdated를 씁니다.
brew outdated
git (2.47.1) < 2.47.2
node (22.11.0) < 22.12.0
python@3.13 (3.13.0) < 3.13.1
모든 패키지를 한번에 업그레이드하려면 brew upgrade를 실행합니다.
brew upgrade
특정 패키지만 골라서 업그레이드할 수도 있고요.
brew upgrade git
패키지 삭제
패키지를 삭제할 때는 brew uninstall을 사용합니다.
brew uninstall wget
패키지를 삭제해도 이전 버전의 파일이 캐시에 남아 있을 수 있는데요.
디스크 공간을 확보하고 싶으면 brew cleanup으로 정리할 수 있습니다.
brew cleanup
특정 패키지의 오래된 버전만 정리하고 싶다면 패키지 이름을 뒤에 붙이면 되고, --dry-run 플래그를 추가하면 실제로 삭제하지 않고 뭐가 지워질지 미리 확인할 수도 있습니다.
brew cleanup --dry-run
더 이상 어떤 패키지에도 필요하지 않은 의존성 패키지를 자동으로 제거하려면 brew autoremove를 사용합니다.
brew autoremove
Cask로 GUI 앱 설치
Homebrew의 진짜 매력은 Cask에 있다고 봐도 될 정도인데요.
macOS에서 GUI 앱을 설치하려면 보통 공식 사이트에서 .dmg 파일을 다운로드하고, 열어서 Applications 폴더로 드래그하고, .dmg 파일을 정리하는 번거로운 과정을 거쳐야 하잖아요?
Cask를 쓰면 이 모든 게 한 줄로 끝납니다.
brew install --cask visual-studio-code
brew install --cask firefox
brew install --cask slack
brew install --cask iterm2
삭제도 마찬가지로 깔끔합니다.
brew uninstall --cask firefox
개발자가 많이 쓰는 GUI 앱 대부분이 Cask로 설치 가능해요.
에디터(VS Code, Cursor, Zed), 브라우저(Chrome, Firefox, Arc), 터미널(iTerm2, Ghostty), 커뮤니케이션 도구(Slack, Discord) 등 정말 다양하죠.
폰트도 Cask로 설치할 수 있는데요, 예를 들어 Nerd Font는 별도 설정 없이 바로 brew install --cask font-jetbrains-mono-nerd-font로 설치됩니다.
Tap으로 서드파티 저장소 추가
Homebrew 기본 저장소에는 Formula와 Cask를 합쳐 만 개가 넘는 패키지가 등록되어 있어서 웬만한 건 바로 설치할 수 있습니다.
그래도 기본 저장소에 없는 패키지가 필요할 때는 Tap을 사용해요.
Tap은 GitHub 저장소 형태의 서드파티 Formula/Cask 모음인데요.
brew tap 명령어로 추가하면 해당 저장소의 패키지를 설치할 수 있게 됩니다.
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
현재 추가된 Tap 목록을 확인하고 싶으면 인자 없이 brew tap만 실행하면 됩니다.
brew tap
homebrew/bundle
hashicorp/tap
더 이상 필요 없는 Tap은 brew untap으로 제거할 수 있습니다.
brew untap hashicorp/tap
Bundle로 개발 환경 통째로 관리
Mac을 새로 셋업하거나 팀원과 동일한 개발 환경을 맞추고 싶을 때 패키지를 하나하나 설치하는 건 꽤 고된 작업이죠. Homebrew Bundle이 바로 이 문제를 해결해줍니다.
Brewfile이라는 파일에 필요한 패키지를 선언해두면 한 번에 전부 설치할 수 있어요.
마치 Node.js의 package.json이나 Python의 requirements.txt와 비슷한 개념이죠.
현재 설치된 패키지로부터 Brewfile을 자동 생성하려면 brew bundle dump를 실행합니다.
brew bundle dump
생성된 Brewfile은 이런 모양입니다.
tap "homebrew/bundle"
brew "git"
brew "node"
brew "python@3.13"
brew "mise"
brew "gh"
brew "jq"
cask "visual-studio-code"
cask "iterm2"
cask "slack"
cask "firefox"
brew는 Formula(CLI 도구), cask는 GUI 앱, tap은 서드파티 저장소를 나타냅니다.
새 Mac에서 이 파일로 개발 환경을 복원하려면 Brewfile이 있는 디렉토리에서 다음 명령어를 실행하면 됩니다.
brew bundle
이게 전부입니다! Brewfile에 적힌 Tap, Formula, Cask가 순서대로 설치되면서 이전 환경이 그대로 재현됩니다.
기존 설치 상태와 Brewfile의 차이를 확인하고 싶으면 brew bundle check를 쓸 수 있습니다.
brew bundle check
Brewfile에 있는데 아직 설치 안 된 패키지가 있으면 알려주기 때문에 환경이 제대로 맞춰졌는지 확인할 때 유용합니다.
이 Brewfile을 dotfiles 저장소에 넣어두면 Mac을 바꾸거나 초기화할 때마다 개발 환경을 뚝딱 복원할 수 있으니 꼭 챙겨두세요.
문제 해결
Homebrew를 쓰다 보면 가끔 패키지 설치가 안 되거나 충돌이 생기기도 합니다. 그럴 때 알아두면 좋은 명령어가 몇 가지 있어요.
brew doctor는 Homebrew 설치 상태를 전반적으로 점검해줍니다.
brew doctor
PATH 문제, 오래된 패키지, 깨진 심볼릭 링크 등을 찾아서 경고 메시지와 함께 해결 방법을 알려줍니다.
뭔가 이상하다 싶으면 일단 brew doctor를 돌려보는 게 좋습니다.
특정 패키지가 어디에 설치됐는지 알고 싶으면 brew --prefix를 사용합니다.
brew --prefix git
/opt/homebrew/opt/git
패키지 간 의존 관계가 궁금할 때는 brew deps로 확인할 수 있습니다.
brew deps --tree git
반대로 특정 패키지에 의존하는 다른 패키지가 뭔지 알고 싶으면 brew uses를 씁니다.
brew uses --installed openssl
이 명령어는 패키지를 삭제하기 전에 다른 패키지에 영향이 없는지 확인할 때 유용합니다.
마치며
Homebrew는 macOS에서 개발 환경을 꾸릴 때 빠질 수 없는 도구입니다.
brew install로 패키지를 설치하고 brew upgrade로 업데이트하고 Cask로 GUI 앱까지 관리하고 Bundle로 개발 환경을 통째로 백업까지 할 수 있다는 걸 살펴봤는데요.
이 블로그에서 소개하는 개발 도구 대부분도 Homebrew로 설치할 수 있어요. 터미널에서 GitHub을 다루는 GitHub CLI(gh) 사용법이나 여러 런타임 버전을 통합 관리하는 Mise 사용법, Docker Desktop 없이 컨테이너를 돌리는 Colima 사용법도 함께 읽어보시면 좋겠습니다.
Homebrew의 속도가 아쉽다면 Rust로 작성된 Zerobrew도 한번 살펴보세요. Homebrew의 패키지 생태계를 그대로 쓰면서 설치 속도를 최대 20배까지 끌어올린 도구입니다.
더 자세한 내용은 Homebrew 공식 문서를 참고해보세요.
This work is licensed under
CC BY 4.0