본문 바로가기
C.W.K.
Stream
Lesson 04 of 05 · published

Formulae, Casks, Bottles, Cellar, Taps

~12 min · homebrew, concepts, internals

Level 0입문자
0 XP0/55 lessons0/16 achievements
0/80 XP to next level80 XP to go0% complete

Homebrew의 용어는 양조장 이야기처럼 들려. Cellar, formula, cask, bottle, tap, keg가 모두 술과 관련된 말이니까. 하지만 각각 정확한 역할이 있어. 뜻을 알아두면 brew가 보여주는 메시지를 훨씬 쉽게 읽을 수 있어.

Formula는 CLI 도구나 라이브러리를 어떻게 설치할지 적은 Ruby 파일이야. 주로 homebrew/core에 들어 있어. Cask는 macOS GUI 앱의 설치법을 담고 주로 homebrew/cask에서 관리해. 둘 다 brew install로 설치하되, 필요한 경우 cask에 --cask를 붙여.

Bottle은 미리 컴파일해 GitHub Container Registry에 올려둔 바이너리 묶음이야. brew install python을 실행하면 보통 알맞은 bottle을 내려받아 Cellar에 푸는 것으로 끝나서 몇 초면 돼. 현재 macOS와 CPU에 맞는 bottle이 없을 때만 소스 빌드로 돌아가며, 그때는 몇 분에서 몇 시간까지 걸릴 수 있어.

Cellar(/opt/homebrew/Cellar/)는 formula로 설치한 파일이 실제로 놓이는 곳이야. 패키지마다 git/2.45.0/처럼 버전별 디렉터리를 갖고, Homebrew는 여기서 /opt/homebrew/bin/으로 symlink를 만들어 PATH에 노출해. Cellar 안의 패키지 버전 디렉터리 하나를 Keg라고 불러.

Tap은 formula와 cask를 더 받아올 수 있는 Git 저장소야. 기본 저장소만으로도 대부분 해결되지만, 글꼴이나 전문 도구, 특정 회사가 배포하는 소프트웨어는 별도 tap에서 제공되기도 해.

Code

Cellar 직접 들여다보기·bash
# 물리적 패키지가 사는 곳
ls /opt/homebrew/Cellar/
# git  python@3.12  ripgrep  postgresql@16  ...

# 각 formula 는 버전별 — 여러 버전 공존 가능
ls /opt/homebrew/Cellar/python@3.12/
# 3.12.4  3.12.5

# /bin 과 /lib 으로의 symlink 가 PATH 에 노출시키는 정체
ls -la /opt/homebrew/bin/python3.12
# -> ../Cellar/python@3.12/3.12.5/bin/python3.12
Tap 추가, 패키지 설치, Tap 제거·bash
# 예: Hashicorp tap 추가
brew tap hashicorp/tap

# 새 tap 에서 install
brew install hashicorp/tap/terraform

# tap 목록
brew tap

# tap 제거 (이미 깐 패키지는 안 지움)
brew untap hashicorp/tap

External links

Exercise

매일 쓰는 도구 하나를 골라 'brew info <도구>'를 실행해. 홈페이지 주소, Cellar 안의 설치 경로, 주의사항을 찾아 적어봐. 이어서 해당 Cellar 디렉터리로 들어가 실제 파일도 둘러봐. 이름만 낯설었던 Cellar가 그냥 패키지 보관소라는 걸 눈으로 확인하는 데 5분이면 충분해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.