index

what is homebrew

홈브류는 오픈소스 패키지 관리자로 맥이랑 리눅스에서 사용할 수 있다(wsl2 포함)

소프트웨어를 “포뮬러(formulae)”라는 형태로 관리한다

포뮬러는 소프트웨어 패키지(라이브러리, CLI 도구)의 설치 방법을 정의한 ruby 스크립트로 홈브류가 이를 읽고 필요한 파일을 다운로드하고 컴파일하여 설치한다

components

Homebrew Core: 기본적으로 제공되는 소프트웨어 패키지 모음

Cask: gui 애플리케이션(visual studio code, google chrome 등)이나 대규모 바이너리 파일을 설치할 수 있는 확장 기능

Tap: 사용자가 커스텀 포뮬러를 추가하거나 타인의 저장소를 연결할 수 있는 기능

installation

아래의 스크립트는 홈브류 설치 스크립트를 다운로드하고 필요한 환경을 설정한다

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

설치 후 brew doctor 명령어로 설치 상태를 점검할 수 있다

$ brew doctor
Your system is ready to brew.

homebrew managing commands

brew update

brew update 명령은 홈브류 자체를 업데이트한다

홈브류의 git 리포지토리 (homebrew/homebrew-core homebrew/homebrew-cask 등)을 최신 커밋으로 동기화한다

로컬의 홈브류를 최신 상태로 갱신하면서 변경 사항을 사용자에게 알려준다

출력하는 정보 (변경 사항)

$ brew update
==> Updating Homebrew...
Updated 2 taps (homebrew/core and homebrew/cask).
==> New Formulae
geesefs           lld@19            llvm@19
==> New Casks
font-lxgw-wenkai-gb-lite   moment
inmusic-software-center    slidepad
==> Outdated Formulae
asdf         glib         neovim       sqlite
fzf          harfbuzz     pcre2        xz
git          icu4c@76     python@3.13  zoxide

brew doctor

brew doctor 명령은 홈브류 설치 상태와 환경을 진단해 문제를 찾아준다 (PATH 설정, 권한 문제, 충돌 가능성 등 체크)

설치가 됐는지 확인하거나 문제가 발생했을 때 사용한다

$ brew doctor
Your system is ready to brew.

brew config

brew config 명령은 홈브류의 설정 정보와 시스템 환경을 출력한다

홈브류 버전, git 상태, 의존성 등을 출력한다

$ brew config
HOMEBREW_VERSION: 4.4.26
ORIGIN: https://github.com/Homebrew/brew
HEAD: f1041842141f20bc701b522d4371d7843d905580
Last commit: 5 days ago
Branch: stable
Core tap JSON: 29 Mar 05:00 UTC
Core cask tap JSON: 29 Mar 05:00 UTC
HOMEBREW_PREFIX: /opt/homebrew
HOMEBREW_CASK_OPTS: []
HOMEBREW_EDITOR: vim
HOMEBREW_MAKE_JOBS: 8
Homebrew Ruby: 3.3.7 => /opt/homebrew/Library/Homebrew/vendor/portable-ruby/3.3.7/bin/ruby
CPU: octa-core 64-bit arm_firestorm_icestorm
Clang: 16.0.0 build 1600
Git: 2.48.1 => /opt/homebrew/bin/git
Curl: 8.7.1 => /usr/bin/curl
macOS: 15.3.2-arm64
CLT: 16.2.0.0.1.1733547573
Xcode: N/A
Rosetta 2: false

brew shellenv

brew shellenv 명령은 홈브류가 설치된 환경에서 쉘을 올바르게 설정하기 위해 필요한 환경 변수를 출력한다 (현재 사용하는 쉘(zsh, bash, fish)에 맞는 환경 변수 설정 명령어를 출력함)

주로 새로운 쉘 환경에서 홈브류의 실행 파일과 의존성을 시스템에서 인식되도록 PATH 및 기타 환경 변수를 조정할 때 사용된다

export PATH="/opt/homebrew/opt/ruby/bin:$PATH" 명령을 쉘 실행 파일(~/.zshrc 등)에 넣으면 홈브류 및 홈브류로 설치된 패키지의 경로를 PATH 환경 변수에 설정할 수 있다

brew tap/untap

brew tapbrew untap 명령은 홈브류에서 외부 저장소(tap)를 추가하거나 제거한다

기본 저장소(homebrew/homebrew-core, homebrew/homebrew-cask) 외에 다른 소프트웨어 패키지나 특정 버전을 설치할 수 있는 git 리포지토리를 연결할 수 있다

brew tap <repository>: git 리포지토리 추가 (일반적으로 깃허브 user/repo 형식으로 추가함)

brew untap <repository>: 추가한 tap 리포지토리 제거

tap 명령을 사용하면 지정된 리포지토리를 로컬의 /opt/hombrew/Library/Taps (실리콘)에 복제한다

이후 brew install로 해당 리포지토리의 패키지를 검색하거나 설치할 수 있다

홈브류에서 제공하는 tap 리포지토리

package managing commands

brew install

brew install 명령은 지정한 패키지를 홈브류 리포지토리에서 다운로드하고 컴파일(필요 시)하여 로컬 시스템에 설치한다 (홈브류 기본 리포지토리 또는 tab)

포뮬러(formulae)

캐스크(cask)

brew install <package>: 지정한 패키지를 설치한다

brew install <package1> <package2> ...: 지정한 여러 패키지를 한 번에 설치한다

brew install --cask [--appdir=<path>]<package>: 지정한 캐스크를 설치한다 (설치 경로 지정 가능, 기본값: /Applications)

brew install -f <package>: 기존 설치 무시하고 강제로 재설치한다

brew install -v: 설치 과정의 상세 로그를 출력하면서 설치한다

brew install --build-from-source: 미리 컴파일된 바이너리 대신 소스 코드로부터 빌드한다

brew install --HEAD <package>: 최신 개발 버전을 설치한다

brew outdated

brew outdated는 설치된 패키지의 버전과 홈브류 리포지토리의 최신 버전을 비교하여 업데이트 필요 여부를 알려준다

brew outdated: 버전을 비교하여 오래된 패키지의 이름만 나열한다

brew outdated <package>: 특정 패키지를 확인한다

$ brew outdated
==> Downloading https://formulae.brew.sh/api/formula.
==> Downloading https://formulae.brew.sh/api/cask.jws

fzf (0.58.0) < 0.60.3
git (2.48.1) < 2.49.0
glib (2.84.0) < 2.84.0_1

brew upgrade

brew upgrade 명령은 설치된 패키지의 버전을 홈브류 리포지토리의 최신 버전으로 업그레이드한다

brew upgrade: 업그레이드 가능한 모든 패키지를 업그레이드한다

brew upgrade <package>: 특정 패키지를 업그레이드한다

brew upgrade <package1> <package2> ...: 여러 패키지를 업그레이드한다

brew upgrade --dry-run: 실제 업그레이드하지 않고 시뮬레이션만 하여 어떤 패키지가 업데이트될지 확인한다

brew uninstall, brew remove

brew uninstallbrew remove 명령은 설치된 패키지를 삭제한다

두 명령어는 동일한 기능을 수행한다 (brew remove가 brew uninstall의 별칭임)

brew uninstall <package>: 특정 패키지를 제거한다

brew uninstall <package1> <package2> ...: 여러 패키지를 제거한다

brew uninstall --cask <package>: 특정 캐스크를 제거한다

brew uninstall -f <package>: 모든 버전을 강제로 제거한다 (포뮬러에 여러 버전이 설치된 경우)

brew uninstall --cask --zap <package>: 캐스크 제거 시 관련 설정 파일까지 완전히 제거한다 (일반 제거는 앱만 제거함)

brew cleanup

brew cleanup 명령은 홈브류가 관리하는 디렉토리에서 오래된 패키지 버전과 캐시를 삭제하여 공간을 정리한다

삭제 대상

brew cleanup: 포뮬러 및 캐시 전체 정리(캐스크 제외)

brew cleanup <package>: 특정 포뮬러 패키지에 대한 정리

berw cleanup --cask: 캐스크 정리

brew cleanup --prune=<day>: 지정된 일수보다 오래된 캐시 파일만 삭제한다

brew cleanup --dry-run: 실제 삭제 없이 시뮬레이션하여 정리될 파일과 공간만 확인한다

brew list

brew list 명령은 설치된 포뮬러와 캐스크 목록을 출력한다

설치된 파일의 위치: /opt/homebrew/Cellar

brew list --version: 설치된 패키지의 버전을 함께 표시한다

brew list --formula: 포뮬러 목록만 나열한다

brew list --cask: 캐스크 목록만 나열한다

brew list <package>: 지정한 패키지의 모든 디렉토리 출력한다

brew list --pinned: 고정된 패키지 목록(업데이트를 막은 패키지)을 출력한다

brew leave

brew leave 명령은 의존성으로 인해 자동 설치된 패키지를 제외하고 사용자가 직접 설치한 패키지를 나열한다

포뮬러에만 적용되며 캐스크는 포함되지 않는다

brew info

brew info 명령은 지정한 패키지에 대한 설치 여부, 설치 경로, 의존성, 설명 등을 포함한 상세 정보를 제공한다

설치되지 않은 패키지도 정보 출력을 할 수 있다

brew info <package>: 지정한 패키지의 상세 정보를 출력한다

brew info: 설치된 모든 패키지의 요약 정보를 출력한다

brew info --json <package>: json 형식으로 출력한다

$ brew info tmux
==> tmux: stable 3.5a (bottled), HEAD
Terminal multiplexer
https://tmux.github.io/
Installed
/opt/homebrew/Cellar/tmux/3.5a (10 files, 1.2MB) *
  Poured from bottle using the formulae.brew.sh API on 2025-03-28 at 22:36:53
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/t/tmux.rb
License: ISC
==> Dependencies
Build: pkgconf ✘
Required: libevent ✔, ncurses ✔, utf8proc ✔
==> Options
--HEAD
        Install HEAD version
==> Caveats
Example configuration has been installed to:
  /opt/homebrew/opt/tmux/share/tmux
==> Analytics
install: 21,113 (30 days), 59,846 (90 days), 321,942 (365 days)
install-on-request: 19,812 (30 days), 57,180 (90 days), 314,442 (365 days)
build-error: 14 (30 days)

brew deps

brew deps 명령은 지정한 패키지의 의존성을 나열한다

brew info 명령과 마찬가지로 설치되지 않은 패키지에 대한 정보도 나타낼 수 있다

brew deps <package>: 지정한 패키지 의존성을 출력한다

brew deps --installed: 설치된 모든 패키지의 의존성을 나열한다

brew deps --direct <package>: 직업적인 의존성만 표시한다

brew deps --tree <package>: 의존성을 트리 형태로 표시한다

brew deps --include-build <apckage>: 빌드 시 반드시 필요한 의존성을 출력한다

$ brew deps --tree tmux
tmux
├── libevent
│   └── openssl@3
│       └── ca-certificates
├── ncurses
└── utf8proc

brew files

여러 패키지를 한 번에 설치하거나 기존 환경을 복원하기 위해 (이식 가능한 환경 구성) 포뮬러 및 캐스크 목록을 작성한 뒤 brew install로 전달하여 한꺼번에 설치할 수 있다

포뮬러 및 캐스크 목록 파일 생성

# 현재 사용하고 있는 포뮬러 목록 저장
$ brew leaves > formulae

# 현재 사용하고 있는 캐스크 목록 저장
$ brew list --cask > casks

포뮬러 및 캐스크 설치

# 포뮬러 설치
# -r: 일부 패키지가 설치 실패해도 계속 진행하게 한다
# -P: 최대 n개의 프로세스를 병렬로 실행하게 한다
$ cat formulae | xargs -r -P 4 brew install

# 캐스크 설치
$ cat casks | xargs -r brew install --cask

# 설치 과정 기록
$ cat formulae | xargs -r -P 4 brew install 2>&1 | tee install_log.txt

other package managers

macos

linux

windows