こんにちは、ryohei_515 です。
Ruby を扱う開発者であれば、rbenv を扱う機会があると思います。
今回ローカル作業用のプログラムを改善しようと思い、Ruby の 2.7 系の最新のバージョンをインストールしたのですが、 BUILD FAILED とエラーが出たので、対応内容を備忘で残しておきます。
環境
MacBook Pro intel Core i5
Big Sur (11.2.3)
結論
rbenv の Wiki に、各バージョンやOS毎に推奨環境について記載があります。
Home · rbenv/ruby-build Wiki
事前に整えてからインストールしましょう。
# 今回の件と関係ないけどやっておいたほうがいい(2.7 系の最新を 2.7.4 と誤認してしまった。。) $ brew upgrade rbenv # Ruby 2.7.6 にアップデートするために、環境を整える $ brew install openssl@1.1 readline libyaml gmp $ export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" $ rbenv install 2.7.6 $ rbenv versions system * 2.6.3 (set by /Users/makabe/.rbenv/version) 2.7.6
エラーログ
何もせずにインストールすると、以下の通りエラーとなってしまいました。
$ rbenv install 2.7.6 To follow progress, use 'tail -f /tmp/ruby-build.20221115115704.70909.log' or pass --verbose Downloading openssl-1.1.1q.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca Installing openssl-1.1.1q... patching file test/v3ext.c Installed openssl-1.1.1q to /Users/makabe/.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 ruby-build: using gmp from homebrew BUILD FAILED (macOS 11.2.3 using ruby-build 20221101) Inspect or clean up the working tree at /tmp/ruby-build.20221115115704.70909.kjm5UV Results logged to /tmp/ruby-build.20221115115704.70909.log Last 10 log lines: from ./tool/rbinstall.rb:846:in `block (2 levels) in install_default_gem' from ./tool/rbinstall.rb:279:in `open_for_install' from ./tool/rbinstall.rb:845:in `block in install_default_gem' from ./tool/rbinstall.rb:835:in `each' from ./tool/rbinstall.rb:835:in `install_default_gem' from ./tool/rbinstall.rb:799:in `block in <main>' from ./tool/rbinstall.rb:950:in `block in <main>' from ./tool/rbinstall.rb:947:in `each' from ./tool/rbinstall.rb:947:in `<main>' make: *** [do-install-all] Error 1
出力された /tmp/ruby-build.20221115115704.70909.log
を確認すると
... /private/tmp/ruby-build.20221115115704.70909.kjm5UV/ruby-2.7.6/lib/rubygems/core_ext/kernel_require.rb:83:in `require': cannot load such file -- openssl (LoadError) from /private/tmp/ruby-build.20221115115704.70909.kjm5UV/ruby-2.7.6/lib/rubygems/core_ext/kernel_require.rb:83:in `require' from /private/tmp/ruby-build.20221115115704.70909.kjm5UV/ruby-2.7.6/lib/rubygems/specification.rb:2430:in `to_ruby' from ./tool/rbinstall.rb:846:in `block (2 levels) in install_default_gem' from ./tool/rbinstall.rb:279:in `open_for_install' from ./tool/rbinstall.rb:845:in `block in install_default_gem' from ./tool/rbinstall.rb:835:in `each' from ./tool/rbinstall.rb:835:in `install_default_gem' from ./tool/rbinstall.rb:799:in `block in <main>' from ./tool/rbinstall.rb:950:in `block in <main>' from ./tool/rbinstall.rb:947:in `each' from ./tool/rbinstall.rb:947:in `<main>' make: *** [do-install-all] Error 1
とあります。
ファイルがない…何か事前に対応がいるのか?
そこでエラーログで検索してみると、Qiita の以下の記事を見つけました。
`require': cannot load such file -- openssl (LoadError) というエラーが出てRuby 2.7.6がインストールできない場合の対処法 - Qiita
エラー内容は全く同じだったのですが、解決策として記載されたコマンドが、現時点の rbenv の Wiki のものと異なっていました。
Qiita の記事は 2022/07 公開だったので、この短い期間で変わってしまったようです。
Home · rbenv/ruby-build Wiki
後は「結論」に記載のコマンドで、問題なくインストールできました。
ちなみに
インストールの試行錯誤の過程でこんなエラーも出ました。
rbenv: cannot rehash: /Users/xxx/.rbenv/shims/.rbenv-shim exists
検索してみると .rbenv-shim
を削除して解決したという記事を見かけました。
流石に削除は怖いなと思ったのですが、こちらで削除してよいとあったので、削除で大丈夫そうです。
$ rm /Users/xxx/.rbenv/shims/.rbenv-shim $ rbenv rehash # エラーが出ず、正常に動作