ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Mac 개발환경 설정] 4. HomeBrew 설치
    Mac 2023. 2. 6. 01:29

    HomeBrew는 MacOS용 Package Manager이다. Ubuntu에서 사용하던 apt-get(apt)랑 같은 역할을 하는 녀석이다.

    이런 Package Manager는 하나만 사용하는 게 꼬이는 일도 방지하고 좋다.

     

    개발을 할 때 필요한 의존성을 설치해야 하는 일이 종종 생긴다.

    그 때 해당 의존성을 개발한 개발자가 권장하는 방법으로 의존성을 설치하는 게 무조건 맞다.

    개발자가 권장하는 방법이 없거나, 권장하는 방법이 여러 개일 때 패키지 매니저는 Brew만 사용하기로 약속하면서 시작해보자.

     

    HomeBrew도 원하는 prefix에 설치할 수 있다. 그래서 $DEV_SDK에 설치해서 사용하려고 했지만, 그렇게 설치하면 아래와 같은 경고를 만나게 될 것이다.

    Warning: Your Homebrew's prefix is not /opt/homebrew.

    HomeBrew의 Bottle들(Brew가 양조한다는 뜻이라 binary를 bottle이라 부르는 듯 하다) 중 상당수가 default prefix, 즉 /opt/homebrew에 설치되어 있지 않으면 동작하지 않는다고 한다. 그러면 직접 빌드해야 한다는 말인데, 이러면 상당히 많은 시간이 걸리게 된다.

    그러므로 HomeBrew는 default prefix에 설치하도록 하자.

    설치

    설치하는 과정에 git clone이 있으니 playgroud로 이동해서 진행하자.

    그 다음 Homebrew/install.git을 클론 받고, install.sh를 실행하면 된다.

    `sudo` access를 위해 로그인 password를 요구할테니 입력해주자.

    이후 어떤 폴더를 만들건지 알려주는데, enter를 누르면 설치가 시작된다.

    cd $WORKSPACE/playground
    git clone https://github.com/Homebrew/install.git
    bash install/install.sh

    설치하는데에 시간이 좀 걸릴 것이다.

    설치 후에 환경변수 설정을 해 주자.

    ~/.zshrc에 아래 내용을 추가해준다.

    # >>> brew >>>
    eval "$(/opt/homebrew/bin/brew shellenv)"
    # <<< brew <<<

    source ~/.zshrc를 통해 변경사항을 적용해준 후, brew doctor로 설치가 잘 되었는지 확인하자.

    source ~/.zshrc
    brew doctor

    이렇게 나오면 잘 설치된 것이다.

    > brew doctor
    Your system is ready to brew.

    ※ ~/.zshrc 파일에서의 위치?

    DEV_ROOT, zsh 설치보다 앞에 두자.

     

    우리가 명령어를 실행할 때 shell은 PATH 환경변수에 등록된 경로들에서 명령어와 같은 이름의 실행파일을 찾아 실행한다.

    그리고 ~/.zshrc 파일에 추가한 eval~ 명령어는 PATH에 /opt/homebrew/bin 폴더를 추가한다.

    이 때 export PATH=$HOMEBREW:$PATH와 같은 형태로 PATH의 맨 앞에 /opt/homebrew/bin, sbin 폴더가 추가된다.

     

    Shell은 PATH를 앞에서부터 탐색하면서 등록된 경로에 명령어와 같은 이름의 실행파일이 있는지 찾고, 있으면 실행한 후 탐색을 멈춘다.

    따라서 같은 이름의 실행파일이 있다면 echo $PATH로 확인된 path들 중에서 앞의 폴더에 있는 실행파일이 실행된다.

    즉, path의 뒤쪽에 추가될수록 그 의존성 혹은 명령어는 무시되어 실행되지 않을 가능성이 커진다.

    DEV_ROOT에는 우리가 설치할 의존성이 있고, zsh 설치에는 우리가 커스텀한 zsh 설정이 들어가 있으므로 이들은 homebrew에 의해 무시되어서는 안 된다.

     

    대부분의 PATH 업데이트 방식이 export PATH=$SOMETHING_TO_ADD:$PATH처럼 기존 path 앞에 새로운 경로를 추가하는 방식이므로, ~/.zshrc 파일의 뒤쪽에 있을수록 덮어씌워질 염려가 적다.

    그러므로 DEV_ROOT, zsh 설치와 같이 중요한 설정이 brew에 의해 무시되지 않도록 brew를 PATH에 먼저 등록해주자.


    Apple Silicon 지원

    이제는 Apple Silicon인 m1과 m1이 탑재된 첫 Mac인 MacBook Air(M1, 2020)이 출시된지도 2년도 넘었다. 그래서 어지간하면 대부분의 의존성이 지원이 되지만, 간혹 intel cpu만 지원하고 Apple Silicon은 지원하지 않는 소프트웨어도 있다.

     

    그래서 혹시 필요한 상황을 대비해 intel용 homebrew 설치 방법도 남겨두겠다.

    brew_root="$DEV_SDK/intel-homebrew" #원하는 경로
    brew_bin="$brew_root/bin"
    sudo mkdir $brew_root 
    sudo chown $(whoami) $brew_root
    curl -L https://github.com/Homebrew/brew/tarball/master | tar xz -C $brew_root --strip 1

    여기까지는 그냥 homebrew를 원하는 위치에 설치하는 내용이다.

    이제 저 원하는 경로에 설치된 homebrew를 ibrew라고 부르기로 하자.

    $DEV_ROOT/.zshrc에 아래 내용을 추가해주자.

    # >>> Intel Homebrew >>>
    export INTEL_HOMEBREW=$DEV_SDK/intel-homebrew
    alias ibrew='arch -x86_64 $INTEL_HOMEBREW/bin/brew' 
    export PATH="$PATH:$INTEL_HOMEBREW/bin"
    # <<< Intel Homebrew <<<

    여기서 PATH의 맨 뒤에 intel homebrew의 bin 폴더를 추가해 우선순위를 맨 뒤로 낮추자.

     

    이제 작성한 내용을 적용해준 후(source ~/.zshrc), ibrew doctor를 입력하면 설치가 진행될 것이다.

    source ~/.zshrc
    ibrew doctor

    그리고 intel용으로 설치해 주어야 하는 의존성은 brew 명령어를 ibrew로만 바꾸면 설치할 수 있다.

     

    댓글

Designed by Tistory.