문제 발생 상황

새로 나온 Ruby 3.2.2버전을 frum으로 설치하고 bundler를 설치하려는데 오류가 발생했다.
gem install bundler를 입력하자 아래와 같이 오류가 나왔다.

➜ gem install bundler
ERROR:  While executing gem ... (Gem::Exception)
    OpenSSL is not available. Install OpenSSL and rebuild Ruby or use non-HTTPS sources (Gem::Exception)
(이하 생략)

 

원인 분석

Ruby를 설치하는 과정에서 OpenSSL 관련 의존성이 누락된것이 원인이었다.

해결 방법

Ruby를 설치하는 과정에서 OpenSSL 의존성을 정확하게 참조할 수 있도록 해야한다. 
만약 SSL이 없다면 SSL을 설치하고 Ruby 설치 시 아래와 같이 `--with-openssl-dir={OpenSSL이 설치된 경로}` 옵션을 주면 된다.
Homebrew로 설치하는 경우는 설치된 경로 대신에 아래 예시처럼 `brew --prefix openssl` 이라고 입력하면 된다.
(Intel Mac과 Apple Silicon Mac은 Homebrew가 패키지를 설치하는 경로가 다르기 때문에 위 명령어를 사용하는게 깔끔)
rvm, frum의 경우 동일한 옵션을 추가하면 된다. (asdf 는 안해봤지만 비슷하지 않을까..?)

# 1. Homebrew로 OpenSSL 설치하고 환경변수 설정
$ brew install openssl@3

#################### [~/.zshrc에 아래 항목 추가] ####################
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH
export LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"
export CPPFLAGS="-I/opt/homebrew/opt/openssl@3/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@3/lib/pkgconfig"
##################################################################

# 2. 추가한 환경변수를 터미널에 적용하기 위해 source ~/.zshrc 실행
$ source ~/.zshrc

# 3. Frum으로 Ruby 3.2.2 설치
$ frum install 3.2.2 --with-openssl-dir=`brew --prefix openssl`
==> Downloading https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.xz
==> Extracting ruby-3.2.2.tar.xz
==> Building Ruby 3.2.2


# 4. bundler gem 설치
$ gem install bundler
Fetching bundler-2.4.12.gem
Successfully installed bundler-2.4.12
Parsing documentation for bundler-2.4.12
Installing ri documentation for bundler-2.4.12
Done installing documentation for bundler after 0 seconds
1 gem installed

A new release of RubyGems is available: 3.4.10 → 3.4.12!
Run `gem update --system 3.4.12` to update your installation.

 

참고