본문 바로가기
목차
Mac

[Homebrew] Formula 와 cask 의 차이 + tap

by ds31x 2023. 12. 15.
728x90
반응형

docs.brew.sh/Manpage

Terminology에 따르면 다음과 같이

formulacask를 기재하고 있음.

  • formula: Homebrew package definition that builds from upstream sources
  • cask: Homebrew package definition that installs macOS native applications

https://docs.brew.sh/Manpage#terminology

 

brew(1) – The Missing Package Manager for macOS (or Linux)

Documentation for the missing package manager for macOS (or Linux).

docs.brew.sh

https://sketchingdev.co.uk/sketchnotes/homebrew-terminology.html


Formula

Formula 용어 설명에서 upstream source원본 소스원본 저장소 를 의미하며, software의 original source code 또는 그 저장소를 의미함.

  • 즉, Formula는 Homebrew가 관리하는 패키지를 정의하는 방식으로,
    • Linux 에서 다양한 open-source S/W들을 각각의 배포판에 맞춰 build하고 패키지관리자에 의해 설치 및 관리되는 것처럼,
    • Homebrew라는 패키지 관리자가 설치 및 관리하는 패키지 형식의 하나임.
      upstream source로부터 homebrew가 관리할 수 있는 패키지로 빌드된 것이 Formula이다.
  • macOS의 경우, apple 등이 제공하는 native application 이 아닌,
  • 공개된 소스코드를 통해 빌드하여 사용되는 다양한 software들이 Formula 로 Homebrew에서 관리됨.
Formula(포뮬러) 라는 이름에 대한 자세한 설명:
Homebrew의 '양조(Brewing)' 세계관을 따르는 이름임.
맥주를 직접 양조(Brew)하려면 재료의 배합 비율이나 제조법이 적힌 '조리법(Recipe)' 또는 '화학 공식(Formula)'이 요구된다는 점에서 착안한 이름으로, Homebrew에서의 Formula는  소프트웨어(맥주)를 소스 코드 단계에서부터 '어떻게 빌드하고 설치할지' 정의해 둔 루비(Ruby) 스크립트 파일(조리법, Formula)을 가리킴.

비유: "이 소프트웨어를 내 컴퓨터에서 마실 수 있게(사용할 수 있게) 직접 끓이는(빌드하는) 제조법"이라는 뜻임.

cask

macOS의 native applications 에 대응하는 패키지들을 Homebrew에서 가르키는 용어.

  • 이들은 macOS 의 App Store에서 다운로드 가능하며 주로 gui 프로그램이다.
  • App Store를 통해 다운로드 가능하며 macOS의 표준적인 설치 절차를 다르기 때문에 apple의 권장 설정을 따르며 업데이트도 자동으로 이루어지는 특징을 가진다.

macOS native applications를 Homebrew에서 지원하기 위한 확장이기 때문에,
linux용 Homebrew에선 사용할 수 없는 패키지라고 보면된다.

다 만들어진 술(애플리케이션)을 담아 보관하거나 운반하는 '통'이라는 개념 (위의 이미지 참고)
이미 빌드된 바이너리 형태의 앱(다 만들어진 술)을 배포하는 용도로 이름을 붙인 것

tap  

Homebrew에서 패키지 정의가 담긴 Git 기반 저장소 단위  

대표적인 예들로는 다음과 같음:

  • homebrew/core,
  • homebrew/cask,
  • 외부 저장소 (facebook/fb, myorg/tools 등) 

 모든 formula 및 cask는 하나의 tap에 소속됨 

brew tap <user>/<repo> 명령어로 수동 추가 가능하며, 특정 패키지 설치 시 자동 활성화되기도 함 

 

참고로, Apple Silicon(M1/M2/M3)에서는 기본 tap인 homebrew/core조차도 clone되지 않도록 최적화됨.
현재는 필요할 때만 Homebrew API를 통해 동적으로 formula 정보 로드하는 방식을 채택함.

  Tap은
Homebrew가 패키지를
정의된 위치(upstream등)에서 가져오기 위해 사용하는
핵심 구조로 Git 기반 저장소 단위를 가리킴.

 

tap은 formula와 cask 등의 패키지 정의가 저장된 저장소이며, upstream은 실제 패키지 소스가 저장된 곳을 가리킴.

Tap (수도꼭지/맥주 탭):
패키지 저장소(Repository)를 가리킴.
수도꼭지(Tap)을 열면 새로운 formula들이 쏟아져 나온다는 의미

다른 용어들

Cellar (지하 저장고): 설치된 프로그램들이 실제로 저장되는 폴더 (/usr/local/Cellar 등).

Bottle (병): 미리 빌드된 바이너리 패키지. 직접 끓일(Build) 필요 없이 병만 따면 바로 마실 수 있다는 의미로, 설치에 들어가는 시간을 줄여줌.


같이 읽어보면 좋은 자료들

2023.12.15 - [Mac] - [Homebrew] 사용법 요약본

 

[Homebrew] 사용법 요약본

Homebrew 사용법 요약 brew --versionbrew의 버전을 출력함.brew updatebrew를 최신버전으로 업데이트.brew upgradebrew의 모든 Formula package를 upgradecask package들은 제외됨.단, --greedy 옵션을 사용할 경우,cask도 포함

ds31x.tistory.com

 

2023.09.05 - [Linux] - [Linux] homebrew 설치하기 (Ubuntu)

 

[Linux] homebrew 설치하기 (Ubuntu)

Homebrew는 Max Howell이 만든 패키지 관리자 (Debian 계열 linux의 apt-get 또는 Windows 의 winget과 비슷)임.macOS 용 으로 2009년 ruby로 개발됨.사실상 macOS에서는 표준 패키지 관리자임.최근 들어 linux 및 WSL에서

ds31x.tistory.com

 


2024.09.08 - [utils] - [Utils] homebrew - Summary

 

[Utils] homebrew - Summary

Homebrew란?Homebrew는 2009년 Max Howell에 의해 처음 개발된 오픈소스 package manager임.처음에는 macOS에서 소프트웨어 설치를 간편하게 하기 위해 만들어졌으며,이후 Linux도 지원하게 되었음 (Linux 지원은 2

ds31x.tistory.com


 

728x90