태그 보관물: homebrew

Homebrew 로 OS X 패키지 관리하기

OS X 은 기본적으로 wget 명령을 내장하고 있지 않다.

물론 curl 로 옵션을 이용해서 파일 (바이너리) 다운로드가 가능하지만, 그외에도 Apple 에서 기본 제공하지 않는 패키지들이 필요할 때가 있다.

하나씩 다운받아 설치할 수도 있겠지만, 이를 편하게 관리할 수 있는 패키지 관리자가 있어 소개한다.

The missing package manager for OS X (OS X 용 패키지 관리자) – Homebrew

사실은 Macports 를 설치하려고 검색하다가, 우연히 Homebrew를 알게 되었고 좀 더 자세히 살펴보다 보니 Macports 의 단점을 보완하고, 훨씬 장점이 많다는 걸 알게 되었다.

참조 : 잘가 macports. 반갑습니다. homebrew.

설치방법은 매우 간단하다.

터미널에서,

ruby -e "$(curl -fsSL https:⁄⁄raw.github.com/mxcl/homebrew/go)"

명령 한방이면 설치 끝.

다만, 정상 작동을 위해서는 Xcode 용 Command Line Tools 가 설치되어 있어야 한다. Xcode 를 설치하여 실행한 후, Preferences > Downloads 에서 Command Line Tools 를 설치하면 된다.

Homebrew 설치후에는, 터미널에서 brew -v 명령 (또는 brew –version) 으로 설치 버전을 확인할 수 있다.

$ brew -v
Homebrew 0.9.4

이제 Homebrew 를 설치했으니 원하는 패키지를 brew 명령을 통해 설치할 수 있다.

설치는 간단하게 brew install 원하는 패키지 명령으로 설치할 수 있다.

가령 macvim 을 설치한다고 하면,
search 명령으로 brew 패키지 검색을 하고, install 명령으로 설치한다.

$ brew search vim
macvim	  vim	    vimpager  vimpc           // vim 으로 찾았더니 4개의 패키지가 있다.
$ brew install macvim
==> Installing macvim dependency: cscope
==> Downloading http://downloads.sourceforge.net/project/cscope/cscope/15.8a/cscope-15.8a.tar.g
######################################################################## 100.0%
==> Patching
patching file src/constants.h
==> ./configure --prefix=/usr/local/Cellar/cscope/15.8a --mandir=/usr/local/Cellar/cscope/15.8a
==> make install
🍺  /usr/local/Cellar/cscope/15.8a: 10 files, 740K, built in 9 seconds
==> Installing macvim
==> Downloading https://github.com/b4winckler/macvim/archive/snapshot-66.tar.gz
######################################################################## 100.0%
==> ./configure --with-features=huge --enable-multibyte --with-macarchs=x86_64 --enable-perlint
==> make
==> Caveats
MacVim.app installed to:
  /usr/local/Cellar/macvim/7.3-66

To link the application to a normal Mac OS X location:
    brew linkapps
or:
    ln -s /usr/local/Cellar/macvim/7.3-66/MacVim.app /Applications
==> Summary
🍺  /usr/local/Cellar/macvim/7.3-66: 1759 files, 27M, built in 53 seconds

종속성이 있는 모듈을 먼저 다운받아 설치한 후, macvim 을 설치한다.
/usr/local/Cellar/ 경로안에 패키지명/버전 으로 설치가 되고, (brew 는 동일 패키지라도 버전별로 따로 관리할 수 있다!!)
/usr/local/bin/ 내에 symbolic link 를 걸어둔다.

/usr/local/bin $ ls -al | grep vim
lrwxr-xr-x   1 rkJun  admin        33  7 14 01:09 gview -> ../Cellar/macvim/7.3-66/bin/gview
lrwxr-xr-x   1 rkJun  admin        32  7 14 01:09 gvim -> ../Cellar/macvim/7.3-66/bin/gvim
lrwxr-xr-x   1 rkJun  admin        36  7 14 01:09 gvimdiff -> ../Cellar/macvim/7.3-66/bin/gvimdiff
lrwxr-xr-x   1 rkJun  admin        34  7 14 01:09 gvimex -> ../Cellar/macvim/7.3-66/bin/gvimex
lrwxr-xr-x   1 rkJun  admin        33  7 14 01:09 mview -> ../Cellar/macvim/7.3-66/bin/mview
lrwxr-xr-x   1 rkJun  admin        32  7 14 01:09 mvim -> ../Cellar/macvim/7.3-66/bin/mvim
lrwxr-xr-x   1 rkJun  admin        36  7 14 01:09 mvimdiff -> ../Cellar/macvim/7.3-66/bin/mvimdiff
lrwxr-xr-x   1 rkJun  admin        34  7 14 01:09 mvimex -> ../Cellar/macvim/7.3-66/bin/mvimex
$ mvim   // 어디서든 MacVim 을 설치할 수 있다.

brew 에서 설치할 수 있는 패키지들을 formula 라고 부르는데, 일종의 패키지 설명, 좀 더 정확히는 해당 패키지를 다운을 받아 설치하는 .rb 파일을 말한다. (이 목록은 /usr/local/Library/Formula 안에 들어 있다)
그리고 Cellar 는 이 패키지들이 실제 경로라 할 수 있고, 위에서 보았듯 /usr/local/bin 에 ln -s (심볼릭링크) 하는 방식이다.

주요 사용할만한 brew 명령은,
brew install formula // 패키지 설치
brew remove formula // 패키지 삭제
brew info formula // 패키지 정보
brew upgrade [formula] // 설치한 패키지의 최신버전을 설치

brew list 또는 brew ls // 설치한 formula 목록
brew update // Homebrew 업데이트
brew doctor // 시스템에 문제가 있는지 확인
brew outdated // 내가 설치한 formula 목록의 이후 버전이 나왔는지 확인
brew cleanup // fomula 의 모든 과거버전을 제거함

관리자 권한이 필요없다는 점 (sudo) 외에도, 설치한 패키지를 버전별로 사용하는 게 참 편하다.
가령 Play! (경량화된 자바 프레임워크) 를 brew 를 통해 설치해서 사용한다고 할 때,

아래와 같이 총 3개의 버전이 설치되어 있고 2.1.2 를 사용하고 있는데,

$ brew info play
play: stable 2.1.2, HEAD
http://www.playframework.org/
/usr/local/Cellar/play/2.1.0 (4148 files, 268M)
  Built from source
/usr/local/Cellar/play/2.1.1 (3790 files, 225M)
  Built from source
/usr/local/Cellar/play/2.1.2 (3681 files, 223M) *

brew switch 명령을 통해, 간단하게 play 2.1.1 버전으로 바꿀 수 있다.

/usr/local/bin rkJun$ brew switch play 2.1.1
Cleaning /usr/local/Cellar/play/2.1.0
Cleaning /usr/local/Cellar/play/2.1.1
Cleaning /usr/local/Cellar/play/2.1.2
1 links created for /usr/local/Cellar/play/2.1.1

물론 과거 버전도 설치할 수 있다. brew edit formula 명령을 통해 직접 파일내의 다운로드 대상 url 을 수정해 주거나, 과거 버전의 rb 파일을 받으면 된다. formula 의 과거 버전은 brew versions 을 통해 확인 가능하고, git checkout 해서 가져올 수 있도록 되어 있다.

그외에,

간단하게 brew unlink poo 또는 brew link poo 명령으로 간단하게 심볼릭을 걸거나 해제할 수 있고,

아래의 명령을 ~/.bashrc 또는 ~/.bash_profile 등, 쉘 시작시 실행스크립트에 넣어두면 brew 명령을 tab 자동완성으로 사용할 수 있다. (물론 아래 명령은 Bash 용이고, 더 자세한 설명 또는 ZSH 용은 homebrew Tips N’ Tricks 를 참조)

source `brew --repository`/Library/Contributions/brew_bash_completion.sh

Homebrew 를 알게된 이후로 더이상 Macports 를 사용할 일은 없을 것 같다.

OS X 에서 기본 제공하지 않는 wget 같은 명령외에도 정말 수많은 패키지들을 관리할 수 있다. 맥용 앱이라던가, 다양한 프레임워크까지… 무궁무진하다. 그러므로 OS X 을 사용하는 사용자, 또는 개발자에게는 강력하게 권하고 싶다.
Homebrew 가 너무 맘에 들어서, 뭔가 기여할 방법을 찾다가 홈페이지를 한글화 했다. (그래봤자 몇문장 안되지만..)

http://brew.sh/index_ko.html

Macports 를 (불만족스럽지만 대안이 없다고) 사용해 왔거나, 별도의 패키지 관리자를 사용하지 않았던 사용자라면, 지금부터 써보자!

태그 지정됨 ,