Programming/OS, Program, Framework Tip

Homebrew의 Apple Silicon (M1) 정식 지원 시작, 설치 방법

awesometic 2021. 2. 23. 01:16
반응형

Homebrew on Apple Silicon

사실 정식 지원을 시작한 지는 이제 2주정도 되었습니다. ㅎㅎ

brew.sh/2021/02/05/homebrew-3.0.0/

 

3.0.0

Today I’d like to announce Homebrew 3.0.0. The most significant changes since 2.7.0 are official Apple Silicon support and a new bottle format in formulae.

brew.sh

Homebrew의 소식이 올라오는 곳입니다. 3.0.0 버전에서 드디어 M1 지원을 시작했어요.

Apple Silicon is now officially supported for installations in /opt/homebrew. formulae.brew.sh formula pages indicate for which platforms bottles (binary packages) are provided and therefore whether they are supported by Homebrew. Homebrew doesn’t (yet) provide bottles for all packages on Apple Silicon that we do on Intel x86_64 but we welcome your help in doing so. Rosetta 2 on Apple Silicon still provides support for Intel x86_64 in /usr/local.

근데 보시다시피, /opt/homebrew 아래에 설치하는 걸로 정식 지원을 시작한다고 합니다. 기존에는 /usr/local 밑에 설치되었는데, 이는 x86_64 지원을 위해 남겨두고 애플 실리콘은 /opt/homebrew 디렉토리를 사용하도록 유도하는 걸로 보이네요.

그래서 저도 바로 했습니다. 간단한 가이드를 적어볼게요. 기억에 의존한 거라 완벽하진 않지만 참고가 되면 좋겠습니다.

애플 실리콘 맥에 새로운 Homebrew 설치하는 방법

먼저 터미널을 로제타가 아닌 원래 있던 arm64용 터미널을 실행시킵니다.

일단 /opt/homebrew 디렉토리는 당연한 말이지만 원래는 없는 디렉토리입니다. 새로 만들어주면서 권한도 일반 사용자가 사용할 수 있도록 바꿔줍니다.

sudo mkdir -p /opt/homebrew
sudo chown -R 501:wheel /opt/homebrew

 

501 을 사용했는데, 정확하진 않구요 ㅎㅎ 제 맥에서 제 사용자 계정의 UID가 501이길래 저렇게 가이드했습니다. 잘 안 된다면 사용자 계정 이름으로 바꿔서 적용해주시면 됩니다.

그리고 공식 가이드의 방법대로 Homebrew를 설치해줍니다.

cd /opt
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

이제 PATH 환경변수에 새로 설치된 /opt/homebrew/bin 을 추가해주면 끝입니다. 모하비부터 zsh을 기본으로 사용하고 있으니 zsh 설정 파일 마지막에 아래처럼 추가해줍니다.

vi ~/.zshrc
export PATH="/opt/homebrew/bin:$PATH"

그리고 .zshrc 파일을 다시 실행시켜주거나 터미널을 다시 열면 이제 /opt/homebrew/bin 밑의 arm64용 바이너리들을 사용하게 됩니다.. 근데 이 부분에서, PATH를 딱히 추가해주지 않아도 됩니다. 전 인텔용 brew가 설치된 상태에서 먼저 해서 그런데, 설치용 스크립트 파일에서 M1 맥북일 경우 자동으로 PATH가 추가될 수도 있습니다.

기존 인텔용 brew 삭제 방법

근데 좀 복잡한 경우가 있습니다. 앞서 말했듯, 제 경우처럼 x86_64용 Homebrew가 이미 설치되어 있던 상태일 경우입니다. 전 iTerm2를 로제타로 실행시켜 x86_64용 Homebrew를 운용하고 있었습니다. 이 경우 /usr/local 디렉토리 밑에 인텔용 Homebrew가 있기 때문에 위처럼 제대로 설치해도 PATH 우선순위에서 밀려 제대로 실행되지 않을 것입니다. 아마도요. 제대로 실행된다 한들, 인텔용 brew와 실리콘용 brew를 따로 사용하려는 게 아닌 이상 없애주는 게 깔끔하겠죠?

그래서 전 없애는 방법을 선택했습니다. 어차피 없애도 어지간한 패키지들은 다 설치 되더라구요.

먼저, 없애기 전에 설치했던 패키지 리스트를 백업합니다.

/usr/local/homebrew/bin/brew bundle dump

이러면 Brewfile 이라는 게 생성됩니다. 그 파일 안에는 어떤 cask와 패키지들을 설치했는지 나타납니다.

그리고 공식 가이드 문서의 방법대로 기존 Homebrew를 삭제합니다. 

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

이러면 기본값으로 /usr/local 밑의 Homebrew가 삭제됩니다. 잘 안 된다면, 스크립트를 다운받아 "--path=/usr/local" 옵션을 직접 넣어 실행해줍니다.

간단한 사용기

한 2주 정도 넘게 사용하고 있습니다. 일단 제 입장에서는 설치가 불가능한 패키지는 딱히 없었습니다.

기본적으로 build tools가 arm64용으로 모두 준비가 되어 있고, 인텔 맥이었음 패키지 설치할 때 빌드된 바이너리를 받아올 것들을 거의 대부분 로컬 빌드를 해버리는 식인 것 같습니다. 그래서 거의 대부분의 패키지는 전부 실행이 되는 걸로 보여요.

영 안 되는 애들도 물론 있는데, x86_64 바이너리들은 빌드된 애들이 받아지더라도 로제타로 자연스럽게 돌아가는 것 같습니다.

마음에 듭니다. 이제 로제타용 iTerm2를 삭제해버렸어요. ㅎㅎ

반응형