Development/Daily Error

Apple Silicon Mac 에서 Ruby 설치 문제 해결

Shane Park 2025. 6. 14. 09:22
반응형

Intro

MacOS 에는 기본적으로 Ruby 가 설치되어 있다. 그런데 그걸 이용해서 바로 gem install 등의 명령어를 사용하려 하면

You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

이라는 에러를 맞이하게 되는데, Ruby 환경을 별도로 분리해서 설치해줘야 한다.

그런데 Ruby 설치가 간단하게 되지는 않는다.

설치

일단 제일 먼저 rbenv 를 설치해야 한다.

# rbenv 설치
brew install rbenv ruby-build

# 셀 초기화 파일 수정
echo 'eval "$(rbenv init - zsh)"' >> ~/.zshrc
source ~/.zshrc

여기까지는 보통 아무 문제 없다.

그런데 여기에서 원하는 Ruby 버전을 설치 할 때 문제가 발생하는데

rbenv install 3.2.2
rbenv global 3.2.2

에러

에러 전문은 아래와 같다.

==> Installing ruby-3.2.2...
ruby-build: using readline from homebrew
ruby-build: using libyaml from homebrew
ruby-build: using gmp from homebrew
-> ./configure "--prefix=$HOME/.rbenv/versions/3.2.2" --with-openssl-dir=/opt/homebrew/opt/openssl@3 --enable-shared --with-readline-dir=/opt/homebrew/opt/readline --with-libyaml-dir=/opt/homebrew/opt/libyaml --with-gmp-dir=/opt/homebrew/opt/gmp --with-ext=openssl,psych,+

BUILD FAILED (macOS 15.5 on arm64 using ruby-build 20250610)

You can inspect the build directory at /var/folders/31/yp1smy8j3l3gqywfgs3pr1kr0000gn/T/ruby-build.20250614083423.69006.xwyxfr
See the full build log at /var/folders/31/yp1smy8j3l3gqywfgs3pr1kr0000gn/T/ruby-build.20250614083423.69006.log
rbenv: version 3.2.2' not installed

여기에서 보면 macOS 버전을 명시하기 때문에 OS 버전과 아키처의 문제로 보이며 OS 업데이트를 제때 안한 사용자에들이 찔려하며 OS 업데이트를 하는 일이 일어날 수 있는데. 일단 명시된 빌드 에러 로그를 확인해봐야 한다.

위에서는 /var/folders/31/yp1smy8j3l3gqywfgs3pr1kr0000gn/T/ruby-build.20250614083423.69006.log 로그를 확인하라고 써 있는데 사람마다 다를 수 있으니 각자 콘솔에 뜬 로그를 확인해본다.

view /var/folders/31/yp1smy8j3l3gqywfgs3pr1kr0000gn/T/ruby-build.20250614083423.69006.log

로그를 확인해보니 나의 경우는 아래와 같았다.

checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /opt/homebrew/bin/ginstall -c
checking for a race-free mkdir -p... /opt/homebrew/bin/gmkdir -p
checking for dtrace... dtrace
checking for dot... no
checking for doxygen... no
checking for pkg-config... pkg-config
checking whether it is Android... no
checking for cd using physical directory... cd -P
checking whether CFLAGS is valid... yes
checking whether LDFLAGS is valid... no
configure: error: something wrong with LDFLAGS="-L/opt/homebrew/opt/node@14/lib"
external command failed with status 1

LDFLAGS 라는 환경변수가 node14 경로로 오염된걸로 보인다.

해결

문제가 된 환경변수들을 unset LDFLAGS 로 제거해서 재 시도 할 수 있지만 몇개의 환경변수가 오염된지 알 수 없으니 깨끗한 셀에서 시도해본다.

env -i HOME=$HOME PATH=/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin rbenv install 3.2.2

잘 설치가 되었다면 이어서 해당 버전을 기본(global)으로 사용하도록 설정한다.

rbenv global 3.2.2

터미널을 새로 켜서 버전을 확인해준다.

ruby --version
#ruby 3.2.2 (2023-03-30 revision e51014f9c0) [arm64-darwin24]

해결이 되는걸 볼 수 있다.

요즘엔 이러한 대부분의 문제는 검색하거나 LLM에 물어보면 손쉽게 해결되는데, 이상하게도 이 문제는 그렇지가 않았다.

로그까지 파고 들어가서 에러 원인에 대한 분기를 시키지 않으면 문제 원인이 너무 다양한 모양이다.

반응형