맥의 패키지 관리 툴 ‘Homebrew’를 사용하는 방법에 관한 글입니다. ‘Homebrew’는 터미널 커맨드로 동작하며, 터미널 내에서 동작하는 앱 외에도 GUI 환경에서만 동작하는 앱(패키지) 역시 관리할 수 있기 때문에 아주 편리합니다. 이전에 터미널을 사용해보지 않았더라도 몇가지 관련 커맨드만 익혀두시면 충분히 쉽게 활용할 수 있습니다.
Homebrew 사용 이유 ▼
- 앱스토어를 통해 다운받은 앱이 아닌 다른 패키지들은 GUI 환경에서 업데이트 등 버전 관리가 사실상 어렵습니다. 이는 사용하는 앱이 많아질수록 더 어려워집니다. 또한 이 버전 관리 문제를 해결할 GUI용 앱이 없습니다.
- 반면, Homebrew를 통해 설치된 앱은 관리(설치/삭제/리스트 조회)가 상대적으로 매우 편리합니다.
- UPDATE 2019-02-26 : 이미지 및 문구 수정
목차
Homebrew 설치하기
‘Homebrew’를 설치하는 방법입니다. 만약, 본 문단에 기입된 터미널 커맨드 혹은 설명된 내용이 올바르게 동작하지 않는다면 공식 홈페이지를 통해 재확인 바랍니다.
터미널 앱 접근 경로 ▼
- 스팟라이트 (cmd + space) > ‘Terminal’
- /Applications/Terminal
1) ‘Homebrew’를 사용하기 위해선 우선 설치를 해야합니다. 터미널 앱을 열고 아래 커맨드를 실행합니다. ▼
* macOS에는 Ruby가 기본적으로 설치되어 있기 때문에, 아래 Ruby로 동작하는 커맨드에 다른 사전 설정은 필요 없습니다.
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2) 설치가 완료되었으면 최신 버전의 ‘Homebrew’가 설치되었는지 확인합니다. ‘Already up-to-date’ 문구를 확인하시면 올바르게 설치가 완료된 것입니다. ▼
~ (227) $brew update
Already up-to-date.
Homebrew 사용 방법
‘Homebrew’는 모두 brew 키워드를 필두로 시작합니다. brew install …, brew remove …, brew update 등으로 커맨드가 구성됩니다. 각 항목에 대한 자세한 설명을 기록해두었으니 참고 바랍니다.
기본 Homebrew 커맨드 ▼
brew update //Homebrew 업데이트 brew search <패키지 이름> //패키지 검색 brew install <패키지 이름> //패키지 설치 brew remove <패키지 이름> //패키지 삭제 brew list //패키지 리스트 brew upgrade <패키지 이름> //패키지 업데이트
앱 검색
한가지 상황을 가정하면, 크롬 앱이 필요한데 앱 이름에 어떤 <키워드>를 넣고 다운로드해야할 지 모를 수 있습니다. 이를 도와줄 수 있는 ‘brew’의 기능이 ‘search’입니다. 구글링을 하듯 본인이 현재 알고 있는 <키워드>를 입력하여 대충 검색해보시면 됩니다.
검색 커맨드 ▼
- brew search chrome | ‘chrome’ 키워드 검색
- caskroom/cask/google-chrome | 우리가 원하는 ‘크롬 브라우저’의 키워드를 정확하게 확인
~ (228) $brew search chrome ==> Searching local taps... chrome-cli chrome-export ==> Searching taps on GitHub... caskroom/cask/chrome-devtools caskroom/cask/chrome-remote-desktop-host caskroom/cask/dmm-player-for-chrome caskroom/cask/google-chrome caskroom/versions/google-chrome-beta caskroom/versions/google-chrome-canary caskroom/versions/google-chrome-dev ==> Searching blacklisted, migrated and deleted formulae... ~ (229) $
* cask가 붙어 있는 앱은 GUI 환경에서 동작하는 앱이고, cask가 없는 앱은 쉘(터미널) 환경에서 동작하는 앱입니다. 즉, 우리가 찾는 크롬 브라우저는 cask가 반드시 붙어 있어야 합니다.
앱 설치
‘search’ 기능으로 정확한 키워드를 찾았기 때문에 ‘install’ 기능을 이용하여 설치하실 수 있습니다. ‘brew install <키워드>’를 활용하여 ‘caskroom/cask/google-chrome(구글 크롬)’을 설치할 수 있습니다.
설치 커맨드 예시 ▼
brew install caskroom/cask/google-chrome
‘caskroom/cask’를 생략하셔도 동작합니다. ▼
brew cask install google-chrome
결과 화면 | GUI 환경에 이미 설치되어 있기 때문에 ‘Error’를 반환합니다. ▼
~ (228) $brew search chrome ==> Searching local taps... chrome-cli chrome-export ==> Searching taps on GitHub... caskroom/cask/chrome-devtools caskroom/cask/chrome-remote-desktop-host caskroom/cask/dmm-player-for-chrome caskroom/cask/google-chrome caskroom/versions/google-chrome-beta caskroom/versions/google-chrome-canary caskroom/versions/google-chrome-dev ==> Searching blacklisted, migrated and deleted formulae... ~ (229) $brew install caskroom/cask/google-chrome ==> brew cask install caskroom/cask/google-chrome ==> Satisfying dependencies ==> Downloading https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg ######################################################################## 100.0% ==> Verifying checksum for Cask google-chrome ==> Installing Cask google-chrome ==> Purging files for version 66.0.3359.170 of Cask google-chrome Error: It seems there is already an App at '/Applications/Google Chrome.app'.
이미 설치되어 있는 앱 관리 강제 설치 ▼
위와 같이 앱이 이미 시스템에 설치되어 있기 때문에 ‘Homebrew’ 툴에 일반적으로는 추가하실 수 없습니다. 따라서 ‘–force’ 키워드를 통해 강제로 ‘Homebrew’로 재설치해주셔야 합니다.
brew cask install google-chrome --force
강제 설치 결과 ▼
~ (239) $brew cask install google-chrome --force Updating Homebrew... ==> Auto-updated Homebrew! Updated 2 taps (caskroom/cask, homebrew/core). No changes to formulae. ==> Satisfying dependencies ==> Downloading https://dl.google.com/chrome/mac/stable/GGRO/googlechrome.dmg ######################################################################## 100.0% ==> Verifying checksum for Cask google-chrome ==> Installing Cask google-chrome Warning: It seems there is already an App at '/Applications/Google Chrome.app'; overwriting. ==> Removing App '/Applications/Google Chrome.app'. ==> Moving App 'Google Chrome.app' to '/Applications/Google Chrome.app'. 🍺 google-chrome was successfully installed! ~ (240) $
앱 리스트 보기
‘Homebrew’를 통해 설치된 앱들의 리스트를 확인하는 방법입니다. GUI 혹은 쉘 환경에서 동작하는 앱에 따라 커맨드가 조금 상이합니다.
- 커맨드 라인 앱의 경우 : brew list
- GUI 환경에서 동작하는 앱의 경우 : brew cask list
~ (230) $brew cask list
betterzipql qlcolorcode qlvideo
iina qlimagesize
michaelvillar-timer qlmarkdown
앱 제거
‘Homebrew’를 통해 설치된 앱을 제거하는 방법입니다. 설명을 위해 설치된 앱 중 하나를 제거해보았습니다. GUI 환경에서 동작하는 앱의 경우, 앞에 cask를 꼭 붙여 삭제해주셔야합니다. 그렇지 않으면 아래와 같이 오류 메세지를 출력합니다.
삭제 커맨드 ▼
brew remove <패키지 이름>
삭제 예시 ▼
~ (231) $brew remove michaelvillar-timer Error: No such keg: /usr/local/Cellar/michaelvillar-timer ~ (232) $brew cask remove michaelvillar-timer ==> Uninstalling Cask michaelvillar-timer ==> Backing App 'Timer.app' up to '/usr/local/Caskroom/michaelvillar-timer/1.3/T ==> Removing App '/Applications/Timer.app'. ==> Purging files for version 1.3 of Cask michaelvillar-timer ~ (233) $
현재 설치된 앱들의 버전 확인
- 커맨드 라인 앱의 경우 : brew outdated
- GUI 앱에서 동작하는 앱의 경우 : brew cask outdated
현재 설치된 버전과 최신 버전을 비교하여 보여줍니다.
~ (234) $brew cask outdated qlcolorcode (2.0.8) != 2.0.9 qlvideo (1.89) != 1.91 ~ (235) $
패키지 업그레이드 ▼
패키지를 업그레이드하기 위해선 아래 커맨드를 사용합니다.
- 커맨드 라인 앱의 경우 : brew upgrade <패키지 이름>
- GUI 환경에서 동작하는 앱의 경우 : brew cask upgrade <패키지 이름>
~ (235) $brew cask upgrade qlvideo
==> Upgrading 1 outdated package, with result:
qlvideo 1.91
==> Satisfying dependencies
==> Downloading https://github.com/Marginal/QLVideo/releases/download/rel-191/QL
######################################################################## 100.0%
==> Verifying checksum for Cask qlvideo
==> Starting upgrade for Cask qlvideo
==> Running uninstall process for qlvideo; your password may be necessary
==> Uninstalling packages:
uk.org.marginal.qlvideo
중략
모든 패키지와 ‘Homebrew’ 업데이트 ▼
brew upgrade && brew update
모든 패키지와 ‘Homebrew’ 업데이트 결과 ▼
~ (236) $brew upgrade && brew update
==> Upgrading 12 outdated packages, with result:
automake 1.15 -> 1.16.1, boost 1.65.1 -> 1.67.0_1, coreutils 8.27 -> 8.29, highlight 3.39 -> 3.43, htop 0.8.2.8 -> 2.2.0, icu4c 58.2 -> 61.1, libgpg-error 1.27 -> 1.31, lua 5.2.4_4 -> 5.3.4_3, node 8.1.0_1 -> 10.1.0, openssl@1.1 1.1.0e -> 1.1.0h, redis 3.2.9 -> 4.0.9, xz 5.2.3 -> 5.2.4
이전 버전의 패키지 삭제
업데이트 후 필요 없는 이전 버전의 패키지는 아래 커맨드로 삭제합니다.
- 커맨드 라인 앱의 경우 : brew cleanup
- GUI 환경에서 동작하는 앱의 경우 : brew cask cleanup
~ (238) $brew cask cleanup
==> Removing cached downloads
/Users/Travelholics/Library/Caches/Homebrew/Cask/betterzipql--latest.zip
/Users/Travelholics/Library/Caches/Homebrew/Cask/google-chrome--66.0.3359.170.dmg
/Users/Travelholics/Library/Caches/Homebrew/Cask/iina--0.0.15.1.dmg
/Users/Travelholics/Library/Caches/Homebrew/Cask/michaelvillar-timer--1.3.zip
/Users/Travelholics/Library/Caches/Homebrew/Cask/qlcolorcode--2.0.8.zip
/Users/Travelholics/Library/Caches/Homebrew/Cask/qlimagesize--latest.pkg
/Users/Travelholics/Library/Caches/Homebrew/Cask/qlmarkdown--1.3.5.zip
/Users/Travelholics/Library/Caches/Homebrew/Cask/qlvideo--1.89.pkg
/Users/Travelholics/Library/Caches/Homebrew/Cask/qlvideo--1.91.pkg
/Users/Travelholics/Library/Caches/Homebrew/Cask/suspicious-package--3.3.dmg
==> This operation has freed approximately 139.3MB of disk space.
~ (239) $
‘Homebrew’를 이용하여 앱을 관리하는 방법이 설치된 앱(앱스토어에 없는)을 하나씩 찾아다니며 업데이트하는 것보다 훨씬 더 간편하고 빠른 방법이라는 것을 이해하셨으리라 생각합니다. 🙂
이상입니다.
참고