개발자를 위한 맥(Mac) 정보 - 패키지관리자 Homebrew
개발을 할 때 꼭 맥을 사용해야하는 것은 아니지만, 주위를 살펴보면 많은 개발자 분들이 맥을 사용하고 계십니다. 필자 역시 2009년 이후 개발을 할 때 맥을 사용하고 있는데 성능이나 해상도 그리고 안정성 측면 등등에서 매우 만족하며 사용을 하고 있습니다. 앞으로 개발자를 위한 맥(Mac) 정보 제공의 관점에서 도움이 될 수 있는 내용들을 정리해 보려고 하는데, 오늘은 그 첫번째로 OS X 용 패키지 관리자 Homebrew 에 대한 내용입니다.
[toc]
Homebrew 를 써야하는 이유
일반적인 애플리케이션 설치 방법은 바이너리 설치 방법과 소스 설치 방법 두가지로 나뉘는데, 소스 설치를 진행하게 되면 CPU 에서 지원하는 명령어들과 소스에서 그를 잘 활용하는 코딩이 되어있다는 가정하에 가장 최적화된 형태의 설치를 할 수 있습니다. 기존 OS X 에서 컴파일, 인스톨, 업그레이드 및 설치 시 라이브러리의 의존성 체크를 해주는 패키지 관리자로 MarPorts 를 가장 많이 사용했습니다. 하지만 MacPorts 는 아래와 같은 단점이 존재 합니다.
- 관리자(sudo) 권한이 필요하다.
- 기존의 맥에 설치된 프로그램을 이용하지 않아 컴파일 시간이 길고 설정이 꼬일 수 있다.
- 같은 애플리케이션의 여러 버전을 동시에 사용하는 것이 어렵고 설정이 꼬여 재설치를 하는 경우가 발생한다.
- 디폴트 패키징 버전이 나빠 심지어 디폴트 맥보다 구버전인 경우도 종종 있다.
- 패키징을 만드는게 너무나 복잡하다.
Homebrew 는 위와 같은 MacPorts 의 단점들을 해결하여 많은 맥 사용자에게 사랑받고 있는 패키지 관리자 입니다.
Homebrew 설치
Homebrew 설치 이전에 Homebrew 의 정상작동을 위한 요구사항은 아래와 같습니다.
- Intel CPU 1
- OS X 10.9 or 이상 버전 필요 2
- Xcode 의 Command Line Tools :
xcode-select --install
, https://developer.apple.com/downloads or Xcode 3 - Bash 혹은 Zsh 와 같은 쉘 환경4
대부분 맥에서 개발을 하시는 분들은 위 요구사항을 만족하실 것으로 생각되며, 이후의 실제 Homebrew 설치는 아래와 같은 명령어 한줄을 통해 가능합니다.
1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
ruby 와 curl 을 이용해 설치를 진행하는데, 해당 명령어가 시간의 흐름에 따라 조금씩 변경되는 것으로 보이니 위 명령어로 설치 진행이 되지 않는다면 홈페이지 에 방문하셔서 현재 시점에 사용할 수 있는 명령어 확인을 하시면 됩니다.
설치 후 .bash_profile 설정에 아래 내용 추가를 해줍니다.
1
export PATH=$(brew --prefix ruby)/bin:$PATH
또한 Homebrew 가 패키지 설치 시 심볼릭 링크 등을 생성하는 디렉토리의 권한 부분을 수정해 줍니다.
1
sudo chown -R $USER /usr/local
이제 Homebrw 설치는 완료되었으며 아래와 같이 brew -v 명령어를 통해 설치된 버전의 정보를 확인하실 수 있습니다.
Homebrew 는 설치되는 패키지를 기본적으로 /usr/local/Cellar 디렉토리에서 관리합니다. 패키지마다 설치된 경로와 설정들이 여기저기에 존재하게 되면 관리를 하는데 있어 매우 어려움을 겪게 되는데, 위와 같이 특정 디렉토리에 설치를 강제함으로 인해 얻을 수 있는 관리의 용이함은 매우 큰 장점이 아닐까 생각됩니다.
Homebrew 명령어
아래는 주요 명령어에 대한 리스트와 설명인데, Description 번역을 하지 않는 것이 더 좋을 것 같아서 원문 그대로 두었습니다.
Command | Description |
---|---|
brew --cache |
Print path to Homebrew’s download cache (usually ~/Library/Caches/Homebrew ) |
brew --cellar |
Print path to Homebrew’s Cellar (usually /usr/local/Cellar ) |
brew --config |
Print system configuration info |
brew --env |
Print Homebrew’s environment |
brew --prefix |
Print path to Homebrew’s prefix (usually /usr/local ) |
brew --prefix [formula] |
Print where formula is installed |
brew audit |
Audit all formulae for common code and style issues |
brew cleanup [formula] |
Remove older versions from the Cellar for all (or specific) formulae1 |
brew create [url] |
Generate formula for downloadable file at url and open it in $HOMEBREW_EDITOR or $EDITOR 2 |
brew create [tarball-url] --cache |
Generate formula (including MD5), then download the tarball |
brew create --fink [formula] |
Open Fink’s search page in your browser, so you can see how they do formula |
brew create --macports [formula] |
Open MacPorts’ search page in your browser, so you can see how they do formula |
brew deps [formula] |
List dependencies for formula |
brew doctor |
Check your Homebrew installation for common issues |
brew edit |
Open all of Homebrew for editing in TextMate |
brew edit [formula] |
Open [formula] in $HOMEBREW_EDITOR or $EDITOR |
brew fetch --force -v --HEAD [formula] |
Download source package for formula ; for tarballs, also prints MD5, SHA1, and SHA256 checksums |
brew home |
Open Homebrew’s homepage in your browser |
brew home [formula] |
Opens formula ’s homepage in your browser |
brew info |
Print summary of installed packages |
brew info [formula] |
Print info for formula (regardless of whether formula is installed) |
brew info --github [formula] |
Open Github’s History page for formula in your browser |
brew install [formula] |
Install formula |
brew install --HEAD [formula] |
Install the HEAD version of formula (if its formula defines HEAD ) |
brew install --force --HEAD [formula] |
Install a newer HEAD version of formula (if its formula defines HEAD ) |
brew link [formula] |
Symlink all installed files for formula into the Homebrew prefix3 |
brew list [formula] |
List all installed files for formula (or all installed formulae with no arguments ) |
brew options [formula] |
Display install options specific to formula |
brew outdated |
List formulae that have an updated version available (brew install formula will install the newer version) |
brew prune |
Remove dead symlinks from Homebrew’s prefix4 |
brew remove [formula] |
Uninstall formula |
brew search |
List all available formula |
brew search [formula] |
Search for formula in all available formulae |
brew search /[formula]/ |
Search for /formula/ (as regex) in all available formulae |
brew test [formula] |
If formula defines a test, run it |
brew unlink [formula] |
Unsymlink formula from Homebrew’s prefix |
brew update |
Update formulae and Homebrew itself |
brew upgrade |
Install newer versions of outdated packages |
brew upgrade [formula] |
Install newer version of formula |
brew versions [formula] |
List previous versions of formulae, along with a command to checkout each version |
많은 명령어 들이 있지만, 그 중 가장 많이 사용하게되는 주요 명령어들에 대해 살펴보도록 하겠습니다.
brew search [formula] 를 통한 패키지 검색
아래는 필자의 맥에서 brew search 명령어를 통해 각각, telegraf, influx, grafana 를 검색했을 때의 결과 화면 입니다.
먼저 influxdb 의 경우에는 검색어를 influx 까지만 입력하여 전체 단어의 일부를 입력했지만, influx 단어가 포함되는 모든 설치 가능한 패키지를 보여줬음을 알 수 있으며, grafana 가 나머지 두개의 검색 결과와 약간 다른 모습(진한 흰색 및 체크박스)인 이유는 필자의 맥에 이미 grafana 가 설치되어 있기 때문입니다.
brew install [formula] 를 통한 패키지 설치
아래 그림에서는 brew install influxdb 명령어를 통해서 influxdb 설치를 진행해 보았습니다.
Telegraf(데이터수집), InfluxDB(시계열DB), Grafana(대시보드) 총 3개의 패키지를 설치하는데 1분이 채 안 걸렸습니다. 아래 글을 참조하여 자신의 맥북의 성능 지표를 대시보드로 만들어 보는 것은 어떨까요? ^^
- InfluxDB, Telegraf, Grafana 를 활용한 Monitorying System 만들기 1편
- InfluxDB, Telegraf, Grafana 를 활용한 Monitorying System 만들기 2편
- InfluxDB, Telegraf, Grafana 를 활용한 Monitorying System 만들기 3편
brew info [formula] 를 통한 패키지 정보 검색
아래 그림은 brew info influxdb 를 통해 설치된 InfluxDB 의 정보를 확인한 모습입니다.
brew update 를 통한 Homebrew 최신버전 업데이트
Homebrew 자체의 업데이트를 위해서는 brew update 명령어를 사용할 수 있습니다.
brew outdated 와 brew upgrade [formula] 를 통한 패키지 업그레이드
설치된 패키지 내에서 업그레이드를 해야할 최신버전이 나온 패키지 리스트는 brew outdated 명령어를 통해 확인할 수 있으며, brew upgrade 명령어를 통해 업그레이드를 할 수 있습니다. 아래 그림은 업데이트 대상 패키지 4개(go, mariab, node, zookeeper) 중 zookeeper 를 업그레이드 한 모습입니다.
Uninstall Homebrew
설치된 Homebrew 를 삭제하고 싶을 때는 설치와 유사하게 아래 명령어 한줄로 쉽게 가능합니다.
1
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
결론
Homebrew 는 맥에서 개발을 하는 개발자에게 매우 유용하 패키지 관리자 입니다. 버전 관리에 지친 많은 개발자 분들께 추천드리며, 다음편에서는 Homebrew 의 확장기능으로 맥에서 실행되는 GUI 프로그램의 설치와 환경설정을 동시에 해주는 Homebrew Cask 에 대해서 살펴보도록 하겠습니다.