macOS는 유닉스 시스템에 기반한 운영체제입니다. 운영체제에 내장된 터미널에는 일반적으로 자주 쓰이는 배시 셸(Bash Shell) 명령어를 사용할 수 있도록 고안되어 있으며 이에 따라 리눅스 명령어로 파일 관리나 시스템 작업을 처리할 수 있습니다.
macOS에서 응용 프로그램 패키지를 설치할 때는 애플 앱스토어나 웹 사이트에서 파일 다운로드를 진행하면 되지만, 기존의 리눅스에서 yum
이나 apt
와 같은 명령줄 인터페이스로 패키지를 macOS에도 간편하게 설치할 수 있습니다.
먼저 macOS에는 기본으로 탑재된 패키지 관리자가 없습니다. 때문에 홈브류(Homebrew)라는 별도의 패키지 관리자를 직접 설치해야 합니다. (참고로 MacPorts라는 패키지 관리자가 또 하나 있지만 개인적으로는 홈브류를 추천드리는 바입니다.)
Homebrew는 의존성 패키지를 체크하는 기능은 물론 빠른 설치와 삭제가 가능하여 개발자들에 의해 많이 쓰이는 패키지 관리자입니다. 오늘 포스팅에서는 홈브류를 설치하고 간단히 사용해보도록 하겠습니다.
홈브류를 설치하기 위해 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
명령어는 apt
와 yum
패키지 관리자와 거의 비슷합니다.)
먼저 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 명령어를 살펴보았습니다. 앞으로 개발에 있어서 쉽고 유용하게 사용할 수 있도록 필히 패키지 관리자에 익숙해지셨으면 하는 바램입니다.
읽어주셔서 감사합니다.
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…