[맥북 / macOS] Homebrew를 이용하여 앱(패키지) 설치 및 버전 관리를 간편하게!

맥의 패키지 관리 툴 ‘Homebrew’를 사용하는 방법에 관한 글입니다. ‘Homebrew’는 터미널 커맨드로 동작하며, 터미널 내에서 동작하는 앱 외에도 GUI 환경에서만 동작하는 앱(패키지) 역시 관리할 수 있기 때문에 아주 편리합니다. 이전에 터미널을 사용해보지 않았더라도 몇가지 관련 커맨드만 익혀두시면 충분히 쉽게 활용할 수 있습니다.

Homebrew 사용 이유 ▼

  1. 앱스토어를 통해 다운받은 앱이 아닌 다른 패키지들은 GUI 환경에서 업데이트 등 버전 관리가 사실상 어렵습니다. 이는 사용하는 앱이 많아질수록 더 어려워집니다. 또한 이 버전 관리 문제를 해결할 GUI용 앱이 없습니다.
  2. 반면, 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’를 이용하여 앱을 관리하는 방법이 설치된 앱(앱스토어에 없는)을 하나씩 찾아다니며 업데이트하는 것보다 훨씬 더 간편하고 빠른 방법이라는 것을 이해하셨으리라 생각합니다. 🙂

이상입니다.

참고

댓글 남기기