https://www.popit.kr/

개발을 할 때 꼭 맥을 사용해야하는 것은 아니지만, 주위를 살펴보면 많은 개발자 분들이 맥을 사용하고 계십니다. 필자 역시 2009년 이후 개발을 할 때 맥을 사용하고 있는데 성능이나 해상도 그리고 안정성 측면 등등에서 매우 만족하며 사용을 하고 있습니다. 앞으로 개발자를 위한 맥(Mac) 정보 제공의 관점에서 도움이 될 수 있는 내용들을 정리해 보려고 하는데, 오늘은 그 첫번째로 OS X 용 패키지 관리자 Homebrew 에 대한 내용입니다.

[toc]

Homebrew 를 써야하는 이유

일반적인 애플리케이션 설치 방법은 바이너리 설치 방법과 소스 설치 방법 두가지로 나뉘는데, 소스 설치를 진행하게 되면 CPU 에서 지원하는 명령어들과 소스에서 그를 잘 활용하는 코딩이 되어있다는 가정하에 가장 최적화된 형태의 설치를 할 수 있습니다. 기존 OS X 에서 컴파일, 인스톨, 업그레이드 및 설치 시 라이브러리의 의존성 체크를 해주는 패키지 관리자로 MarPorts 를 가장 많이 사용했습니다. 하지만 MacPorts 는 아래와 같은 단점이 존재 합니다.

  1. 관리자(sudo) 권한이 필요하다.
  2. 기존의 맥에 설치된 프로그램을 이용하지 않아 컴파일 시간이 길고 설정이 꼬일 수 있다.
  3. 같은 애플리케이션의 여러 버전을 동시에 사용하는 것이 어렵고 설정이 꼬여 재설치를 하는 경우가 발생한다.
  4. 디폴트 패키징 버전이 나빠 심지어 디폴트 맥보다 구버전인 경우도 종종 있다.
  5. 패키징을 만드는게 너무나 복잡하다.

Homebrew 는 위와 같은 MacPorts 의 단점들을 해결하여 많은 맥 사용자에게 사랑받고 있는 패키지 관리자 입니다.

Homebrew 설치

Homebrew 설치 이전에 Homebrew 의 정상작동을 위한 요구사항은 아래와 같습니다.

대부분 맥에서 개발을 하시는 분들은 위 요구사항을 만족하실 것으로 생각되며, 이후의 실제 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 명령어를 통해 설치된 버전의 정보를 확인하실 수 있습니다.

스크린샷-2016-09-12-오후-12-38-33

Homebrew 는 설치되는 패키지를 기본적으로 /usr/local/Cellar 디렉토리에서 관리합니다. 패키지마다 설치된 경로와 설정들이 여기저기에 존재하게 되면 관리를 하는데 있어 매우 어려움을 겪게 되는데, 위와 같이 특정 디렉토리에 설치를 강제함으로 인해 얻을 수 있는 관리의 용이함은 매우 큰 장점이 아닐까 생각됩니다.

Homebrew 명령어

아래는 주요 명령어에 대한 리스트와 설명인데, Description 번역을 하지 않는 것이 더 좋을 것 같아서 원문 그대로 두었습니다.

CommandDescription
brew --cachePrint path to Homebrew’s download cache (usually ~/Library/Caches/Homebrew)
brew --cellarPrint path to Homebrew’s Cellar (usually /usr/local/Cellar)
brew --configPrint system configuration info
brew --envPrint Homebrew’s environment
brew --prefixPrint path to Homebrew’s prefix (usually /usr/local)
brew --prefix [formula]Print where formula is installed
brew auditAudit 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 $EDITOR2
brew create [tarball-url] --cacheGenerate 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 doctorCheck your Homebrew installation for common issues
brew editOpen 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 homeOpen Homebrew’s homepage in your browser
brew home [formula]Opens formula ’s homepage in your browser
brew infoPrint 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 outdatedList formulae that have an updated version available (brew install formula will install the newer version)
brew pruneRemove dead symlinks from Homebrew’s prefix4
brew remove [formula]Uninstall formula
brew searchList 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 updateUpdate formulae and Homebrew itself
brew upgradeInstall 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 를 검색했을 때의 결과 화면 입니다.

스크린샷-2016-09-12-오후-1-58-20

먼저 influxdb 의 경우에는 검색어를 influx 까지만 입력하여 전체 단어의 일부를 입력했지만, influx 단어가 포함되는 모든 설치 가능한 패키지를 보여줬음을 알 수 있으며, grafana 가 나머지 두개의 검색 결과와 약간 다른 모습(진한 흰색 및 체크박스)인 이유는 필자의 맥에 이미 grafana 가 설치되어 있기 때문입니다.

brew install [formula] 를 통한 패키지 설치

아래 그림에서는 brew install influxdb 명령어를 통해서 influxdb 설치를 진행해 보았습니다.

스크린샷-2016-09-12-오후-9-16-01

Telegraf(데이터수집), InfluxDB(시계열DB), Grafana(대시보드) 총 3개의 패키지를 설치하는데 1분이 채 안 걸렸습니다. 아래 글을 참조하여 자신의 맥북의 성능 지표를 대시보드로 만들어 보는 것은 어떨까요? ^^

brew info [formula] 를 통한 패키지 정보 검색

아래 그림은 brew info influxdb 를 통해 설치된 InfluxDB 의 정보를 확인한 모습입니다.

스크린샷-2016-09-13-오전-7-35-17

brew update 를 통한 Homebrew 최신버전 업데이트

Homebrew 자체의 업데이트를 위해서는 brew update 명령어를 사용할 수 있습니다.

스크린샷-2016-09-13-오전-7-41-19

brew outdated 와 brew upgrade [formula] 를 통한 패키지 업그레이드

설치된 패키지 내에서 업그레이드를 해야할 최신버전이 나온 패키지 리스트는 brew outdated 명령어를 통해 확인할 수 있으며, brew upgrade 명령어를 통해 업그레이드를 할 수 있습니다. 아래 그림은 업데이트 대상 패키지 4개(go, mariab, node, zookeeper) 중 zookeeper 를 업그레이드 한 모습입니다.

스크린샷-2016-09-13-오전-7-44-31

Uninstall Homebrew

설치된 Homebrew 를 삭제하고 싶을 때는 설치와 유사하게 아래 명령어 한줄로 쉽게 가능합니다.

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

결론

Homebrew 는 맥에서 개발을 하는 개발자에게 매우 유용하 패키지 관리자 입니다. 버전 관리에 지친 많은 개발자 분들께 추천드리며, 다음편에서는 Homebrew 의 확장기능으로 맥에서 실행되는 GUI 프로그램의 설치와 환경설정을 동시에 해주는 Homebrew Cask 에 대해서 살펴보도록 하겠습니다.

References