LoginSignup
0

posted at

rbenvでRubyのインストールにコケた話

Ruby

自分はXcode開発においてパッケージマネージャとしてSPMばかり利用しているのでRubyを必要とする機会はあまり多くないのですが、今回たまたまGemfileを利用しているコードがあり、その対応のためにRubyをインストールしようとしてコケた話と解決方法を載せておきます。

環境構築

まずはhomebrewをインストールします。

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

その後、ruby-buildとrbenvをインストールします。

brew install ruby-build, rbenv

で、ここまでは問題ありません。

エラー内容

rbenvでRubyをインストールしようとすると以下のエラーが出てコケる人が対象です。

$ rbenv install 2.7.6
Downloading openssl-1.1.1n.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a
Installing openssl-1.1.1n...

BUILD FAILED (macOS 12.0 using ruby-build 20220415)

Inspect or clean up the working tree at /var/folders/6y/6m_84_f16cn458b9myctdsp80000gn/T/ruby-build.20220420172334.9649.UrADEQ
Results logged to /var/folders/6y/6m_84_f16cn458b9myctdsp80000gn/T/ruby-build.20220420172334.9649.log

ポイントとしてはopenssl関連の辺りでコケていることが重要です。

更に、ログを見ると

apps/bf_prefix.c:10:10: fatal error: crypto/aes/aes_ecb.c:10:10: apps/s_socket.c'stdio.h' file not found
fatal error:11:crypto/aes/aes_core.capps/s_cb.c:: 10:11 :'assert.h' file not found:10: fatal error39apps/apps.cfatal error: : 'stdio.h' file not found
:'stdio.h' file not found

このようにassert.hstdio.hが見つからないというエラーが出ている必要があります。

原因

環境変数に不要なPATHが通っていることが原因です。

.zshrc

.zshrcで不要なパスを通している可能性があるのでチェックしましょう。

export PATH=/usr/local/opt/openssl@3/bin:$PATH

みたいにopenssl@3にパスを通すような内容が書き込まれているとダメなので消しましょう。

source ~/.zshrcで反映させた設定を読み込むことができます。

環境変数

export -p

として全ての環境変数一覧を見てみます。

export -T PATH path=( /opt/homebrew/opt/openssl@3/bin /opt/homebrew/bin /opt/homebrew/sbin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /opt/devkitpro/tools/bin /Library/Apple/usr/bin )

するとこんな感じで/opt/homebrew/opt/openssl@3/binというところにPATHが通っている場合があります。どうも.zshrc以外でもなにかの拍子にPATHが通ってしまう場合があるみたいなので、この場合も削除しましょう。

対策後

$ rbenv install 2.7.6
Downloading openssl-1.1.1n.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a
Installing openssl-1.1.1n...
Installed openssl-1.1.1n to /Users/devonly/.rbenv/versions/2.7.6

Downloading ruby-2.7.6.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.6.tar.bz2
Installing ruby-2.7.6...
ruby-build: using readline from homebrew
Installed ruby-2.7.6 to /Users/devonly/.rbenv/versions/2.7.6

無事にインストールができました。

$ rbenv versions
* system
  2.7.6

このままだとシステムのRubyを使ってしまうのでrbenvでユーザが管理するRubyを使うようにします。

$ rbenv global 2.7.6

このコマンドで2.7.6のRubyが使われるようになります

$ rbenv versions      
  system
* 2.7.6 (set by /Users/devonly/.rbenv/version)

ただし、このままではコマンドから実行したときにシステムのRubyが使われてしまうので、rbenvのRubyが使われるようにパスを通します。

.zshrc
[[ -d ~/.rbenv  ]] && \
  export PATH=${HOME}/.rbenv/bin:${PATH} && \
  eval "$(rbenv init -)"
source ~/.zshrc

で忘れずに設定を反映させましょう。

$ which gem
$ which ruby

のようなコマンドでrbenvのパスが表示されれば成功です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0