Homebrew

2024년 3월 12일 수정

Homebrew는 macOS 전용 패키지 관리자다. 기본 유틸리티가 아닌 다양한 소프트웨어를 내려받아 자동으로 설치할 수 있게 도와준다. 또한 root 사용자가 아니어도 사용할 수도 있도록 구조를 만들어 준다는 점도 특징이다.

기본 사용법

패키지 검색

brew search KEYWORD

패키지 정보

brew info PACKAGE_NAME

패키지 설치

brew install PACKAGE_NAME

과거에는 update 를 하지 않으면 최신 버전 정보가 없어서 설치에 문제가 있곤 했는데 요즘은 별로 신경 쓸 필요가 없는 것 같다.

구버전의 경우 @ 문자 뒤에 숫자로 특정 메이저 버전까지는 설치를 지원한다.

만료된 버전 확인

설치된 패키지의 최신 버전이 존재하는지 확인하려면 updateoutdated 를 살펴보자.

brew update
brew outdated

패키지 업그레이드

brew upgrade PACKAGE_NAME

패키지 이름은 생략 가능하며 만약 생략하면 모든 패키지를 업그레이드한다.

brew upgrade

구 버전 삭제하기

패키지를 업그레이드해도 구 버전은 그대로 남아 파일 시스템에 잔존한다. 이를 청소하기 위해 cleanup 커맨드를 사용할 수 있다.

brew cleanup

요즘은 가끔 알아서 청소해 주는 듯 하다.

패키지 삭제(uninstall)

brew uninstall PACKAGE_NAME

의사 양반(?)

brew doctor

문제가 보이면 이걸로 잘 해결해 보자.

구 버전 패키지 사용하기

참고로 최신 버전에서는 아래에서 설명할 switch 커맨드가 사라졌다. 대신 아래 "다중 버전을 제공하는 패키지의 경우" 항목을 참고하여 link 커맨드를 이용해서 시도해보자.

만약 upgrade 등으로 최신버전이 설치되었다면 해당 패키지의 구 버전도 여전히 파일 시스템에 남아있다. 이 경우 구 버전을 사용하고 싶다면 switch 커맨드를 사용할 수 있다.

brew switch PACKAGE_NAME VERSION

다만 정확한 버전 번호를 입력해야 한다.

다중 버전을 제공하는 패키지의 경우

다중 버전의 패키지가 필요한 경우 우선 지원되는지 부터 확인해봐야 한다. 예를 들어 node.js 의 경우 LTS 버전이 다양하게 제공되고 있다. search 커맨드로 어떤 버전이 있는지 확인해 볼 수 있다.

$ brew search node
==> Formulae
node  node@12  node@10  node@8
...

위 내용은 연출한 것으로 실제는 저것보다 훨씬 많은 내용이 검색될 수 있다. 어쨌든 위 예에서는 node의 8, 10, 12, 그리고 최신 버전 등이 제공되고 있음을 확인할 수 있다.

현재는 최신 버전 node 패키지가 설치된 상태라 가정하고 여기서 추가로 10 버전을 설치해 보자.

brew install node@10

설치는 별 문제 없이 진행된다.

만약 위의 패키지 하나만 설치했다면 실행에는 딱히 문제는 없을 것이다. 하지만 최신 버전이 설치된 상태로 구 버전을 설치했다면 최신 버전이 여전히 실행 대상이라 구 버전을 실행시킬 수 있는 방법은 없을 것이다.

$ node --version
v13.x.x

구 버전이든 최신 버전이든 같은 파일 이름을 사용하기 때문에 공존 시키기는 힘들 것이다. 따라서 만약 10 버전을 쓰고 싶다면 최신 버전을 unlink 시켜야 한다.

brew unlink node

그리고 사용하려는 버전을 링크한다.

brew link node@10 --overwrite

--overwrite 옵션을 사용하는 이유는 unlink 후에도 남는 파일들이 새로 link 하려는 파일들과 중복되기 때문이다.

위의 커맨드를 실행시키면 아래 메시지를 볼 수도 있다.

Warning: node@10 is keg-only and must be linked with --force

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/node@10/bin:$PATH"' >> ~/.zshrc

위의 메시지는 새로 링크한 node@10의 바이너리가 표준 위치가 아닌 다른 곳에 있기 때문에 PATH 환경 변수에 이 위치를 추가해줘야 실행시킬 수 있다는 말이다. 따라서 메시지의 echo로 시작되는 라인을 복사해서 그대로 실행시키면 된다. 다만 메시지나 커맨드의 내용은 어떤 을 쓰는지 등에 딸라 달라질 수 있다.

이제 버전이 제대로 지정되었는지 확인해보자.

$ node --version
v10.x.x

원하는 버전이 나오면 성공이다.

최신 버전으로 돌리는 경우도 같이 구 버전을 unlink 한 후 최신 버전을 link 하면 되지만 이 경우에는 PATH에 뭔가를 등록하는 절차는 아마 필요 없을 것 같다.

Cask

cask는 macOS 응용 소프트웨어나 다양한 리소스를 설치할 수 있게 도와주는 확장 도구다. 위의 패키지들은 소스를 받아서 빌드 하는 과정이 포함되어 있는 것과는 다르게 cask로 설치하는 패키지는 모두 빌드가 미리 되어있는 있다.

사용법은 비슷하다. 아래 커맨드로 macOS용 유명한 터미널인 iTerm2 의 정보를 찾아보자.

brew info --cask iterm2

필요한 소프트웨어라면 설치해보자.

brew install --cask iterm2

설치된 이후에는 소프트웨어에 따라 후속 절차가 필요할 수 있다.

불행히도 search 커맨드는 사용할 수 없지만, outdated나 upgrade, uninstall 등등의 커맨드는 비슷하게 사용할 수 있다.

참고로 과거에는 --cask 가 아닌 cask 명령이 별도로 있었다. 혹시나 구버전을 사용한다면 아래와 같은 식으로 사용할 수 있다.

brew cask install iterm2