macOS

macOS brew 설치 및 사용법 – Homebrew 패키지 관리자 정복하기

macOS 홈브류(Homebrew)란?


macOS는 유닉스 시스템에 기반한 운영체제입니다. 운영체제에 내장된 터미널에는 일반적으로 자주 쓰이는 배시 셸(Bash Shell) 명령어를 사용할 수 있도록 고안되어 있으며 이에 따라 리눅스 명령어로 파일 관리나 시스템 작업을 처리할 수 있습니다.

macOS에서 응용 프로그램 패키지를 설치할 때는 애플 앱스토어웹 사이트에서 파일 다운로드를 진행하면 되지만, 기존의 리눅스에서 yum이나 apt와 같은 명령줄 인터페이스로 패키지를 macOS에도 간편하게 설치할 수 있습니다.

 

먼저 macOS에는 기본으로 탑재된 패키지 관리자가 없습니다. 때문에 홈브류(Homebrew)라는 별도의 패키지 관리자를 직접 설치해야 합니다. (참고로 MacPorts라는 패키지 관리자가 또 하나 있지만 개인적으로는 홈브류를 추천드리는 바입니다.)

Homebrew는 의존성 패키지를 체크하는 기능은 물론 빠른 설치와 삭제가 가능하여 개발자들에 의해 많이 쓰이는 패키지 관리자입니다. 오늘 포스팅에서는 홈브류를 설치하고 간단히 사용해보도록 하겠습니다.

 

 

macOS brew 설치 방법

홈브류를 설치하기 위해 macOS터미널 앱을 엽니다. (iTerm2 등을 사용해도 좋습니다.) 아래와 같이 검색 창으로 직접 입력하거나 Launchpad – 기타에 있는 ‘터미널’을 실행합니다.

 

이제 공식 홈페이지에 설명되어있는 설치 명령을 입력해보겠습니다. 다음 명령어를 복사하여 터미널에 붙여넣고 엔터를 입력합니다.

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

이후 다음과 같이 진행될 것입니다.

==> This script will install:
/usr/local/bin/brew
/usr/local/share/doc/homebrew
/usr/local/share/man/man1/brew.1
/usr/local/share/zsh/site-functions/_brew
/usr/local/etc/bash_completion.d/brew
/usr/local/Homebrew
==> The following existing directories will be made group writable:
/usr/local/bin
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man8
==> The following existing directories will have their owner set to user:
/usr/local/bin
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man8
==> The following existing directories will have their group set to admin:
/usr/local/bin
/usr/local/share
/usr/local/share/man
/usr/local/share/man/man8
==> The following new directories will be created:
/usr/local/etc
/usr/local/include
/usr/local/lib
/usr/local/sbin
/usr/local/var
/usr/local/opt
/usr/local/share/zsh
/usr/local/share/zsh/site-functions
/usr/local/var/homebrew
/usr/local/var/homebrew/linked
/usr/local/Cellar
/usr/local/Caskroom
/usr/local/Homebrew
/usr/local/Frameworks
==> The Xcode Command Line Tools will be installed.
Press RETURN to continue or any other key to abort

여기까지 왔다면 엔터를 다시 입력하여 계속 진행합니다.

==> /usr/bin/sudo /bin/mkdir -p /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
Password:

여기에서는 시스템 관리자 권한을 얻기위해 관리자 권한이 있는 계정임을 확인하고 현재 계정 암호를 입력해줍니다. (sudo 암호 입력과 동일)

이제 본격적인 홈브류 설치가 진행될 것입니다. 잠시 기다려주겠습니다.

==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/chmod 755 /usr/local/share/zsh /usr/local/share/zsh/site-functions
==> /usr/bin/sudo /usr/sbin/chown lee /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /usr/bin/chgrp admin /usr/local/bin /usr/local/etc /usr/local/include /usr/local/lib /usr/local/sbin /usr/local/share /usr/local/var /usr/local/opt /usr/local/share/zsh /usr/local/share/zsh/site-functions /usr/local/var/homebrew /usr/local/var/homebrew/linked /usr/local/Cellar /usr/local/Caskroom /usr/local/Homebrew /usr/local/Frameworks
==> /usr/bin/sudo /bin/mkdir -p /Users/lee/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Users/lee/Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown lee /Users/lee/Library/Caches/Homebrew
==> /usr/bin/sudo /bin/mkdir -p /Library/Caches/Homebrew
==> /usr/bin/sudo /bin/chmod g+rwx /Library/Caches/Homebrew
==> /usr/bin/sudo /usr/sbin/chown lee /Library/Caches/Homebrew
==> Searching online for the Command Line Tools
==> /usr/bin/sudo /usr/bin/touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> Installing Command Line Tools (macOS Mojave version 10.14) for Xcode-10.1
==> /usr/bin/sudo /usr/sbin/softwareupdate -i Command\ Line\ Tools\ (macOS\ Mojave\ version\ 10.14)\ for\ Xcode-10.1
Software Update Tool
Downloading Command Line Tools (macOS Mojave version 10.14) for Xcode
Downloaded Command Line Tools (macOS Mojave version 10.14) for Xcode
Installing Command Line Tools (macOS Mojave version 10.14) for Xcode
Done with Command Line Tools (macOS Mojave version 10.14) for Xcode
Done.
==> /usr/bin/sudo /bin/rm -f /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
==> /usr/bin/sudo /usr/bin/xcode-select --switch /Library/Developer/CommandLineTools
==> Downloading and installing Homebrew...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 116175 (delta 8), reused 9 (delta 3), pack-reused 116143
Receiving objects: 100% (116175/116175), 27.36 MiB | 2.94 MiB/s, done.
Resolving deltas: 100% (84822/84822), done.
From https://github.com/Homebrew/brew
 * [new branch]          master     -> origin/master
 * [new tag]             0.1        -> 0.1
------------------------- 생략---------------
 * [new tag]             1.8.5      -> 1.8.5
 * [new tag]             1.8.6      -> 1.8.6
HEAD is now at 7246ed368 Merge pull request #5457 from MikeMcQuaid/remove-travis-ci
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Tapping homebrew/core
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core'...
remote: Enumerating objects: 4892, done.
remote: Counting objects: 100% (4892/4892), done.
remote: Compressing objects: 100% (4696/4696), done.
remote: Total 4892 (delta 48), reused 303 (delta 4), pack-reused 0
Receiving objects: 100% (4892/4892), 4.02 MiB | 12.32 MiB/s, done.
Resolving deltas: 100% (48/48), done.
Checking out files: 100% (4909/4909), done.
Tapped 2 commands and 4676 formulae (4,934 files, 12.5MB).
==> Migrating /Library/Caches/Homebrew to /Users/lee/Library/Caches/Homebrew...
==> Deleting /Library/Caches/Homebrew...
Already up-to-date.
==> Installation successful!

==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
  https://docs.brew.sh/Analytics

==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
  https://github.com/Homebrew/brew#donations
==> Next steps:
- Run `brew help` to get started
- Further documentation: 
    https://docs.brew.sh

Installation successful! 이 나타났다면 설치가 완료된 것입니다.

 

 

brew 사용법 – 간단한 명령어를 통해 패키지 관리

홈브류를 설치하면 brew라는 명령어를 사용할 수 있게 됩니다. 이제 간단히 주요 명령어 몇가지를 살펴보겠습니다. (brew 명령어는 aptyum 패키지 관리자와 거의 비슷합니다.)

먼저 brew search 명령어를 사용하여 특정 패키지를 검색해보겠습니다. 예를 들어 vim 패키지를 검색하려면 다음과 같이 입력합니다.

mymacos:~ user$ brew search vim

아래와 같이 vim 검색어로 나타난 설치 가능한 패키지 이름들이 나타날 것입니다.

==> Formulae
avimetaedit     neovim          pyvim           vim@7.4         vimpc
macvim          pacvim          vim             vimpager

 

다음으로 검색된 vim 패키지를 설치해보겠습니다. brew install 명령을 사용합니다.

mymacos:~ user$ brew install vim

여러 패키지를 설치하려면 다음과 같이 패키지 이름을 계속 나열하면 됩니다.

mymacos:~ user$ brew install vim python lrzsz

 

패키지를 설치하는 과정 중 패키지 저장소(리포지토리, Repository라고도 부름)에서 패키지 별로 최신 버전 정보를 받아와 설치를 하게 되는데, 만약 패키지 저장소의 정보가 오래되면 이를 최신 정보로 업데이트해야 할 수 있습니다. 이 때 사용하는 명령어는 brew update입니다. 이는 실제 패키지를 업데이트하는 것이 아니라 업데이트해야 할 내용들을 가져오고 갱신하기만 합니다.

mymacos:~ user$ brew update

특별한 값을 주지 않으면 전체 업데이트 패키지를 검색하고 아래와 같이 특정 패키지 이름을 포함하여 해당 패키지에 대해서만 검색할 수도 있습니다.

mymacos:~ user$ brew update vim

 

brew update의 결과에서 업데이트가 필요한 패키지가 표시되면 아래 사진에서 vim 패키지처럼 체크 표시가 나타날 것입니다.

 

이후 brew upgrade 명령어를 사용해보겠습니다. 업그레이드 명령을 사용하여 상단에 체크된 모든 패키지를 실제로 업데이트하는 과정을 진행합니다.

mymacos:~ user$ brew upgrade

마찬가지로 특정 패키지 이름이 포함되면 해당 패키지만 업데이트하게 됩니다.

mymacos:~ user$ brew upgrade vim

brew upgrade 명령을 사용하여 vim을 업데이트하는 중입니다. 업데이트가 완료되면 커맨드 프롬프트가 다시 나타날 것입니다.

mymacos:~ user$ brew upgrade
==> Upgrading 1 outdated package:
vim 8.1.0600_2 -> 8.1.0650
==> Upgrading vim
==> Downloading https://homebrew.bintray.com/bottles/vim-8.1.0650.mojave.bottle.
######################################################################## 100.0%
==> Pouring vim-8.1.0650.mojave.bottle.tar.gz
/usr/local/Cellar/vim/8.1.0650: 1,840 files, 30.8MB

mymacos:~ user$

 

이제 설치된 vim 패키지를 삭제해보겠습니다. 간단히 brew uninstall 명령어를 사용하면 됩니다.

mymacos:~ user$ brew uninstall vim

uninstall과 동일한 동작인 remove를 사용해도 됩니다.

mymacos:~ user$ brew remove vim

brew install과 마찬가지로 여러 패키지를 동시에 삭제할 수도 있습니다.

mymacos:~ user$ brew uninstall vim python lrzsz

만약 해당 패키지가 존재하지 않는다면 다음과 같이 에러가 나타날 것입니다.

Error: No such keg: /usr/local/Cellar/vim

아래와 같이 삭제 진행 상태가 출력되고 프롬프트가 다시 나타나면 정상적으로 삭제된 것입니다.

Uninstalling /usr/local/Cellar/vim/8.1.0650... (1,840 files, 30.8MB)
mymacos:~ user$

 

 

지금까지 자주 사용하는 brew 명령어를 살펴보았습니다. 앞으로 개발에 있어서 쉽고 유용하게 사용할 수 있도록 필히 패키지 관리자에 익숙해지셨으면 하는 바램입니다.

읽어주셔서 감사합니다.

JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

2주 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

6개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

8개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

8개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

8개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

8개월 ago