홈브류(Homebrew)란?

홈브류(Homebrew)란?

맥OS용 패키지 관리자 홈브류(Homebrew) 공식 웹사이트

홈브류Homebrew는 맥스 호웰Hax Howell이 만든 맥OSmacOS 용 패키지 관리 애플리케이션입니다. 홈브류는 루비로 개발되고 있으며, 2009년 처음 릴리스되었습니다. 2019년 2월에 2.0이 릴리즈 되었습니다. 홈브류 이전에도 커맨드라인에서 사용가능한 맥OS 용 패키지 관리자들이 있었습니다만, 현재는 홈브류가 사실상 표준으로 자리잡았습니다. 맥OS에서 프로그래밍을 하는 프로그래머들에게는 거의 필수적인 도구입니다.* apt-get 등 리눅스의 패키지 관리자들과 사용법이 비슷해서 쉽게 사용할 수 있다는 장점이 있습니다. 홈브류는 주로 커맨드라인 도구나 시스템 패키지들을 설치하는 데 사용합니다만, 캐스크Cask 확장을 통해 GUI 애플리케이션 설치에도 사용할 수 있습니다. 기본적으로 맥OS용 패키지 관리자이지만, 리눅스나 윈도우의 WSL도 지원하고 있습니다.

* 44BITS에서도 맥OS 환경에서 패키지 설치가 필요한 경우 brew를 사용하는 방식을 우선적으로 소개하고 있습니다.

홈브류는 편리하게 사용할 수 있다는 장점이 있습니다만, 커뮤니티 기반으로 운영되기 때문에 패키지의 안정성이 보장되지 않는다는 단점이 있습니다. 일부 리눅스 배포판의 경우 패키지 버전 정책이 매우 보수적이지만, 홈브류로 패키지를 설치하는 경우 거의 항상 최신 버전이 설치됩니다. 구버전의 패키지를 설치하는 것도 가능하지만 번거로운 편입니다.

홈브류에 대한 더 자세한 정보는 공식 문서를 참고해주세요.

홈브류(Homebrew) 시작하기

맥OS에서는 터미널이나 아이텀2iTerm2에서 바로 설치하고 사용할 수 있습니다. 여기서는 설치 방법과 기본적인 사용 방법에 대해서 소개합니다.

맥OS에서 홈브류(Homebrew) 설치하기

홈브류 설치에 앞서서 엑스코드Xcode 커맨드라인 툴을 미리 설치해두는 것을 추천합니다.*

* 커맨드라인 툴 설치 과정은 홈브류 설치 과정에도 포함되어있습니다. 설치되어있지 않으면 홈브류 설치 중에 커맨드라인 툴 설치가 추가로 진행됩니다. 엑스코드Xcode 커맨드라인 툴을 설치하는 명령어 이름에는 xcode가 들어가지면 Xcode 설치와는 별개입니다.

$ xcode-select --install

홈브류는 다음 명령어를 실행해 설치할 수 있습니다.*

* 이 명령어는 2020년 1월 현재 공식 웹 사이트에서 안내하는 설치 명령어입니다. curl을 사용해 최신 설치 스크립트를 다운로드 받아 시스템 루비(/usr/bin/ruby)로 실행합니다. 파일을 따로 다운로드 받아서 열어보면 설치 스크립트 내용을 직접 확인할 수 있습니다.

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew

Press RETURN to continue or any other key to abort

홈브류가 설치하는 파일 목록을 보여줍니다. brew 명령어를 비롯해 배시Bash와 ZSH의 자동완성을 위한 파일과 문서 등을 설치합니다. 리턴 키를 입력하면 설치가 진행됩니다.

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

설치가 끝났습니다. 홈브류의 명령어는 brew입니다. brew 명령어를 실행해 설치가 잘 되었는지 확인해봅니다.

$ brew --version
Homebrew 2.2.3
Homebrew/homebrew-core (git revision 9144; last commit 2020-01-31)
Homebrew/homebrew-cask (git revision 200ce; last commit 2020-01-31)

성공적으로 실처된 것을 확인할 수 있습니다. 이제 홈브류로 맥OS에 필요한 패키지를 설치하고 관리할 수 있습니다.

리눅스에서 홈브류 설치하기

리눅스에서는 다음 명령어르 홈브류(리눅스브류)를 설치할 수 있습니다.

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

자세한 내용은 공식 문서를 참고해주세요.

패키지 검색하고 상세 정보 확인하기

홈브류의 모든 패키지 목록은 공식 웹 사이트에서 확인할 수 있습니다. 커맨드라인에서는 search 명령어로 검색할 수 있습니다. 이름에 git이 포함된 패키지들을 검색해보겠습니다.

$ brew search git
brew search git
==> Formulae
...
git ✔                   git-fresh               git-quick-stats
...

==> Casks
adobe-digital-editions  gitblade                gitfox
...

이름에 git이 포함된 패키지들 목록을 확인할 수 있습니다. 검색 결과는 일반 패키지와 캐스크Cask 패키지가 나눠서 출력됩니다.

설치하고자 하는 패키지를 확인하고 info 명령어로 패키지의 상세 정보를 확인할 수 있습니다.

$ brew info git
git: stable 2.25.0 (bottled), HEAD
Distributed revision control system
https://git-scm.com
/usr/local/Cellar/git/2.24.0_2 (1,547 files, 45.1MB) *
  Poured from bottle on 2019-11-24 at 16:23:21
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/git.rb
==> Dependencies
Required: gettext ✔, pcre2 ✔
==> Options
--HEAD
        Install HEAD version
==> Caveats
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/git
==> Analytics
install: 212,700 (30 days), 650,920 (90 days), 1,899,186 (365 days)
install-on-request: 200,062 (30 days), 608,892 (90 days), 1,771,204 (365 days)
build-error: 0 (30 days)

패키지의 간단한 설명과, 버전 정보, 패키지 포뮬라 파일의 위치, 의종성, 통계 정보, 추가 설치 정보 등이 출력됩니다.

패키지 설치하기

$ brew install <PACKAGE_NAME>

<PACKAGE_NAME>을 설치하고자 하는 패키지 이름을 입력합니다. 예를 들어 위에서 검색한 git 패키지는 다음 명령어로 설치할 수 있습니다.

$ brew install git
==> Downloading https://homebrew.bintray.com/bottles/git-2.25.0_1.mojave.bottle.tar.gz
==> Downloading from https://akamai.bintray.com/54/54508f6ad675b1a3964d8576b9123d1459f6edf4f8847e229b56ec76cf49014b?__gda__=exp=1580658498~hma
######################################################################## 100.0%
==> Pouring git-2.25.0_1.mojave.bottle.tar.gz
==> Caveats
The Tcl/Tk GUIs (e.g. gitk, git-gui) are now in the `git-gui` formula.

Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completions and functions have been installed to:
  /usr/local/share/zsh/site-functions

Emacs Lisp files have been installed to:
  /usr/local/share/emacs/site-lisp/git
==> Summary
🍺  /usr/local/Cellar/git/2.25.0_1: 1,443 files, 43.5MB

설치 과정이 출력됩니다. 최종적으로 /usr/local/Cellar/git/2.25.0_1git 패키지가 설치된 것을 확인할 수 있습니다. list 서브 명령어로 패키지가 설치한 파일 목록을 확인할 수 있습니다.

$ brew list git
/usr/local/Cellar/git/2.25.0_1/.bottle/etc/gitconfig
/usr/local/Cellar/git/2.25.0_1/bin/git
/usr/local/Cellar/git/2.25.0_1/bin/git-cvsserver
/usr/local/Cellar/git/2.25.0_1/bin/git-receive-pack
/usr/local/Cellar/git/2.25.0_1/bin/git-shell
/usr/local/Cellar/git/2.25.0_1/bin/git-upload-archive
/usr/local/Cellar/git/2.25.0_1/bin/git-upload-pack
/usr/local/Cellar/git/2.25.0_1/etc/bash_completion.d/ (2 files)
...

/usr/local/Cellar/git/2.25.0_1/bin 아래에 실행가능한 명령어들이 설치된 것을 확인할 수 있습니다. 홈브류는 기본적으로 명령어를 실행가능한 PATH에 링크까지 해줍니다. git이 잘 설치되었는지 버전을 확인해봅니다.

$ git --version
git version 2.25.0

패키지 업그레이드

패키지를 최신 버전으로 업그레이드할 때는 upgrade 서브 명령어를 사용합니다.

$ brew upgrade <PACKAGE_NAME>

예를 들어 git 패키지는 다음 명령어로 업그레이드할 수 있습니다.

$ brew upgrade git

홈브류는 update 명령어도 있습니다. 뒤에서 소개하겠지만, 이 명령어는 홈브류 자체를 업그레이드하는 명령어입니다.

패키지 삭제

패키지를 삭제할 때는 remove 서브 명령어를 사용합니다.

$ brew remove <PACKAGE_NAME>

git 패키지는 다음 명령어로 삭제할 수 있습니다.

$ brew remove git
Uninstalling /usr/local/Cellar/git/2.24.0_2... (1,547 files, 45.1MB)

홈브류 캐스크(cask)

홈브류에는 GUI 애플리케이션을 설치할 수 있는 캐스크 확장이 있습니다. 캐스크 패키지는 별도로 관리되며, 이 패키지를 설치하려면 brew 바로 뒤에 cask를 붙여줍니다. 예를 들어 홈브류 캐스크로 동영상 재생기 VLC를 설치하려면 다음 명령어를 실행합니다.

$ brew cask install vlc

홈브류는 애플리케이션을 다운로드 받아 애플리케이션 디렉터리에 복사까지 해줍니다. 설치가 완료되면 애플리케이션 목록에서 VLC를 확인할 수 있습니다.

애플리케이션 목록에 홈브류 캐스크로 설치한 VLC가 추가되었습니다.

홈브류 업데이트

홈브류 명령어 자체를 업그레이드할 때는 update 서브 명령어를 사용합니다.

$brew update

홈브류 삭제

홈브류를 삭제하려면 설치할 때와 비슷하게 uninstall 스크립트를 실행합니다.

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

패키지 포뮬라(Homebrew Fomulae)

홈브류의 패키지 명세를 의미하는 포뮬라는 루비 코드로 작성합니다. 다음은 홈브류 공식 홈페이지에 실려있는 패키지 wget 패키지를 정의하는 포뮬라 예제입니다.

class Wget < Formula
  homepage "https://www.gnu.org/software/wget/"
  url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
  sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"

  def install
    system "./configure", "--prefix=#{prefix}"
    system "make", "install"
  end
end

이 코드를 간단히 해설하면 다음과 같은 의미입니다.

포뮬라 정의에 대한 더 자세한 정보는 공식 문서를 참고해주세요.

패키지 포뮬라 임시로 수정하기

포뮬러 파일은 로컬에 다운로드 받아져있기 때문에 brew edit 명령어로 바로 편집해서 사용할 수 있습니다. 예를 들어 다음 명령어로 git 패키지의 포뮬라를 편집할 수 있습니다.

$ brew edit git
git 패키지의 포뮬라를 수정하는 에디터 화면

패키지 포뮬라 복구하기

패키지 포뮬라를 수정하는 경우 변경 사항을 잘 관리하는 것을 추천합니다. 패키지를 사용할 수 없게 되었거나 삭제되는 등 문제가 생긴 경우 다음 명령어로 패키지 포뮬라 파일들을 복구할 수 있습니다.

$ brew update-reset

홈브류(Homebrew)로 패키지 특정 버전 설치하기

홈브류는 기본적으로 최신 버전 패키지 포뮬라를 제공하므로 과거 버전을 설치하는 것이 어렵습니다. 어렵지만, 불가능한 것은 아닙니다. 다음 글에서는 홈브류로 과거 버전의 패키지를 설치하는 방법을 소개합니다.

44BITS 로고

홈브류(Homebrew)를 사용해 맥OS(macOS)에서 특정 버전의 패키지 설치하기

🗒 기사, 2018-08-21 - 홈브류를 사용하면 맥OS(macOS)에서 쉽게 패키지를 관리할 수 있습니다. 일반적으로 홈브류 패키지는 최신 버전을 제공합니다. 이 글에서는 홈브류를 사용해서 특정 버전의 패키지를 설치하는 방법을 소개합니다.

홈브류에서 가장 많이 설치되는 패키지

다음 목록은 2020년 2월 1일 기준 홈브류에서 지난 1년간 가장 많이 설치된 패키지 15위까지 목록입니다. 프로그래밍 언어 노드Node.js, 파이썬Python, 고Go, 데이터베이스 PostgreSQL, MySQL 등이 순위에 올라있는 것을 확인할 수 있습니다.

순위 패키지명 다운로드 수 %
#1 node 3,070,000 4.39%
#2 python 2,813,380 4.02%
#3 git 1,770,387 2.53%
#4 yarn 1,507,582 2.15%
#5 wget 1,376,347 1.97%
#6 go 1,006,725 1.44%
#7 imagemagick 914,294 1.31%
#8 cmake 912,175 1.30%
#9 postgresql 899,812 1.29%
#10 htop 790,591 1.13%
#11 mysql 784,771 1.12%
#12 ffmpeg 756,150 1.08%
#13 awscli 755,589 1.08%
#14 vim 730,424 1.04%
#15 youtube-dl 715,459 1.02%

최신 정보는 다음 페이지에서 확인할 수 있습니다.