LainyZine: 프로그래머 가이드 🐣

애플 실리콘 M1 용 Homebrew 설치

Homebrew는 macOS를 사용하는 프로그래머들에게는 손쉽게 다양한 패키지를 설치할 수 있게 도와주는 필수적인 프로그램입니다. 작년 2020년 애플 실리콘 M1을 탑재한 맥북이 출시되고, 2021년 2월 macOS의 커맨드라인 패키지 매니저 Homebrew에서도 3.0.0부터 애플 실리콘을 정식 지원한다고 발표하였습니다. 3.0.0이 출시되기 이전에는 강제로 iTrem이나 터미널을 Rosetta 2를 사용해 인텔 버전으로 실행해서 Homebrew를 사용했습니다만 이제는 이렇게 사용하지 않아도 정상적으로 brew 명령어를 사용할 수 있습니다.

애플 실리콘(M1)을 정식 지원하는 Homebrew 릴리스에 대해서는 아래 블로그를 참고해주세요.

이 글에서는 기존에 사용하던 Intel 용 Homebrew를 삭제하고, 애플 실리콘을 지원하는 최신 버전 Homebrew를 설치하는 방법에 대해서 소개합니다.

iTerm2 / Terminal 앱이 애플 실리콘 아키텍처로 실행중인지 확인

먼저 macOS에서 사용중인 터미널 프로그램 iTerm2나 터미널 앱이 Rosetta 2로 실행중은 아닌지 확인합니다. Finder -> 응용 프로그램에서 iTerm을 찾아 정보(Command + i)를 확인해봅니다.

일반 -> 종류응용 프로그램(Intel)이라면 먼저 iTrem을 최신 버전으로 업데이트해주세요.

응용 프로그램(Universal)이면 아래 체크 박스 중에서 Rosetta를 사용하여 열기가 해제되어있는 것을 확인해주세요. 체크 되어있으면 해제해줍니다. 터미널을 사용하고 있다면 응용 프로그램 -> 유틸리티 -> 터미널 정보에서 체크 여부를 확인합니다.

(이 글은 Apple 아키텍처로 Homebrew를 설치하는 방법을 소개하는 글이므로 Roesetta를 사용하지 않습니다. Rosetta로 Intel 아키텍처를 계속 사용하고 싶다면 iTerm을 iTerm(Intel)과 같이 복사해놓고 Rosetta를 체크해놓고 사용하는 방법이 있습니다.)

Intel 용 혹은 구 버전 Homebrew 삭제

먼저 brew가 설치되어있는지 확인해보겠습니다.

$ which brew
/usr/local/bin/brew

위와 같이 /usr/local/bin/brew가 출력된다면 구 버전의 Homebrew가 설치되어있다는 의미입니다. Homebrew가 설치되어있지 않다면 brew not found가 출력됩니다.

설치되어있다면, 다음 명령어로 기존 Homebrew를 삭제해줍니다.

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

brew를 실행했을 때 command not found 에러가 나면 잘 삭제된 것입니다.

간혹 삭제해도 brew 명령어가 남아있거나, Homebrew가 서로 다른 경로에 여러 벌 설치되는 경우가 있는데, 조금 단순 무식한 방법이지만 brew가 실행되지 않을 때까지 uninstall을 반복해줍니다.

애플 실리콘(M1) 용 Homebrew 설치 및 확인

애플 실리콘을 지원하는 최신 버전 Homebrew를 설치하는 건 어렵지 않습니다. 기존에 Homebrew를 설치하는 것과 마찬가지로 설치 스크립트를 실행하면 설치가 진행됩니다.

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

중간에 macOS 계정 패스워드나 엔터를 입력해야하니 메시지를 잘 확인해주세요. M1에서 Homebrew를 설치할 때 아래 메시지가 나오고 시간이 몇 분 정도 소요가 되었습니다. 안심하고 기다려주시면 됩니다.

Downloading Command Line Tools for Xcode
Downloaded Command Line Tools for Xcode
Installing Command Line Tools for Xcode
.....
Done with Command Line Tools for Xcode

설치가 완료되면 마지막으로 안내 메시지가 나타납니다.

==> Next steps:
- Add Homebrew to your PATH in /Users/<USER_ID>/.zprofile:
    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<USER_ID>/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)"
- Run `brew help` to get started
- Further documentation:
    https://docs.brew.sh

안내를 따라 다음 2줄을 실행해줍니다.

$ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<USER_ID>/.zprofile
$ eval "$(/opt/homebrew/bin/brew shellenv)"

최신 Homebrew가 잘 설치되었는지 설치 위치와 버전을 확인해봅니다.

$ which brew
/opt/homebrew/bin/brew

$ brew --version
Homebrew 3.1.5
bHomebrew/homebrew-core (git revision 543e4a048e; last commit 2021-05-05)

brew 명령어의 경로가 /opt/homebrew/bin/brew으로 잡혀있는 것을 확인할 수 있습니다. 3.0.0부터는 기본 경로가 변경되어서 이걸로 최신 버전이 설치되었음을 확인할 수 있습니다. 버전은 3.1.5인 것을 확인할 수 있습니다. 버전 값은 설치한 시점에 따라 달라질 수 있습니다.

보너스: Homebrew 패스 설정 명령어 해설

마지막에 실행한 내용이 어떤 작업인지 궁금할 수도 있습니다. 간단하게 해설해보자면 다음과 같습니다. 먼저 첫 번째 줄에 대해서 살펴보겠습니다.

eval "$(/opt/homebrew/bin/brew shellenv)"

첫 번재 줄은 위 컨텐츠를 /Users/<USER_ID>/.zprofile 파일에 리다이렉트 해줍니다. >>를 사용하면 해당 파일의 맨 아래에 내용을 추가하거나, 파일이 없으면 새로 만들어줍니다. 이 파일은 ZSH 셸이 실행될 때 실행되는 초기화 스크립트 중 하나입니다. 안내 메시지는 현재 사용중인 셸을 판단해서 어떤 파일에 내용을 넣을지 알려줍니다. Bash를 사용중이라면 ~/.bash_profile이나 다른 셸을 사용중이라면 ~/.profile 파일에 같은 내용을 넣어주면 됩니다.

두 번째 줄은 바로 첫 번째 줄의 내용을 현재 실행중인 셸에 적용하는 명령어입니다. 자세히 보면 내용이 똑같습니다.

$ eval "$(/opt/homebrew/bin/brew shellenv)"

아래 명령어를 직접 실행해보면 홈브류와 관련된 패스 설정 명령어들이 나타납니다.

$ /opt/homebrew/bin/brew shellenv
export HOMEBREW_PREFIX="/opt/homebrew";
export HOMEBREW_CELLAR="/opt/homebrew/Cellar";
export HOMEBREW_REPOSITORY="/opt/homebrew";
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin${PATH+:$PATH}";
export MANPATH="/opt/homebrew/share/man${MANPATH+:$MANPATH}:";
export INFOPATH="/opt/homebrew/share/info:${INFOPATH:-}";

셸의 $() 구문을 이용하면 명령어의 실행 결과(텍스트)를 다른 명령어에 넘겨줄 수 있습니다. 이 텍스트를 eval에 넘겨서 현재 셸에서 실행해줍니다. 어떤 변화가 있는지 아래와 같이 확인해볼 수 있습니다.

$ env | grep HOMEBREW

$ eval "$(/opt/homebrew/bin/brew shellenv)"

$ env | grep HOMEBREW
HOMEBREW_PREFIX=/opt/homebrew
HOMEBREW_CELLAR=/opt/homebrew/Cellar
HOMEBREW_REPOSITORY=/opt/homebrew

처음에는 HOMEBREW로 검색되는 환경변수가 없습니다만, eval을 실행하고나면 HOMEBREW가 키에 포함된 환경변수들이 등록된 것을 확인할 수 있습니다. .zprofile 파일에 이 내용을 등록했으니, 다음부터는 ZSH을 실행할 때마다 자동적으로 이 환경변수들이 셸에 추가되고 brew 명령어를 사용할 수 있습니다.

추천 문서

LainyZine은 쿠팡 파트너스 활동에 따른 수수료를 제공받습니다.