`rbenv install` で BUILD FAILED

こんにちは、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 # エラーが出ず、正常に動作