macOS BigSurで`rbenv install`が失敗する問題を解決した


# 困っていたこと
- 次のように`rbenv install`で指定のバージョンのrubyをインストールしようとしても失敗してしまい、いろいろ試してみた備忘録として残しておこうと思います
- 環境
  - macOS BigSur 11.6
  - rbenv 1.2.0

```bash
$ rbenv install 2.7.4             
Downloading openssl-1.1.1l.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1
Installing openssl-1.1.1l...
Installed openssl-1.1.1l to /Users/mikan3rd/.rbenv/versions/2.7.4

Downloading ruby-2.7.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.bz2
Installing ruby-2.7.4...
ruby-build: using readline from homebrew

BUILD FAILED (macOS 11.6 using ruby-build 20211019)

Inspect or clean up the working tree at /var/folders/87/m36zhwq965962q0215n__39c0000gn/T/ruby-build.20211105234112.85765.uxhGSH
Results logged to /var/folders/87/m36zhwq965962q0215n__39c0000gn/T/ruby-build.20211105234112.85765.log

Last 10 log lines:
    ^
./include/ruby/ruby.h:59:35: note: expanded from macro 'UNREACHABLE_RETURN'
#  define UNREACHABLE_RETURN(val) return (val)
                                  ^
compiling vm_dump.c
1 warning and 1 error generated.
make: *** [vm.o] Error 1
make: *** Waiting for unfinished jobs....
1 warning generated.
1 warning generated.
```

# 1. Xcodeを再インストールしてみる
- いくつか調べてみてXcodeの再インストールで直ったケースがあったようなので試してみました
  - もともとApp Store経由でのアップデートしようとしてもローディングで停止してしまう問題があり気になっていたので
- 次で公式からダウンロードできます（先にXcode関連を消しておいた方が良いかも）
  - https://developer.apple.com/download/all/
- しかしエラーに変化はありませんでした

# 2. CommandLineToolsの再インストールと`.zsh`に環境変数などを追記してみる
- こちらのgistが大変参考になりました
  - https://gist.github.com/Neutrollized/37841827940b28b27ec2e54abbbcc408

- 次のコマンドを実行してCommandLineToolsの再インストールとrbenv関連ツールをインストール

```bash
$ sudo rm -rf /Library/Developer/CommandLineTools
$ sudo xcode-select --install
$ brew install rbenv ruby-build openssl readline libyaml zlib
```

- `vi ~/.zshrc`などで`.zshrc`を次のように編集
  - `source ~/.zshrc` をお忘れなく

```.zshrc:.zshrc
# rbenv
export CFLAGS="-Wno-error=implicit-function-declaration"
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-zlib-dir=$(brew --prefix zlib)"

# Load rbenv
eval "$(rbenv init -)"
```

- 次のようにエラー内容は少し変化したものの解決には至りませんでした


```bash
$ rbenv install 2.7.4
Downloading ruby-2.7.4.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.bz2
Installing ruby-2.7.4...

BUILD FAILED (macOS 11.6 using ruby-build 20211019)

Inspect or clean up the working tree at /var/folders/87/m36zhwq965962q0215n__39c0000gn/T/ruby-build.20211106015135.30152.9UGSCU
Results logged to /var/folders/87/m36zhwq965962q0215n__39c0000gn/T/ruby-build.20211106015135.30152.log

Last 10 log lines:
RSA_SSLV23_PADDING
^
107 warnings and 1 error generated.
installing default openssl libraries
make[2]: *** [ossl_pkey_rsa.o] Error 1
make[2]: *** Waiting for unfinished jobs....
93 warnings generated.
4 warnings generated.
make[1]: *** [ext/openssl/all] Error 2
make: *** [build-ext] Error 2
```


# 3. `openssl@1.1`を指定してみる
- こちらのIssueなど見ていてopensslのバージョン周りが怪しそうだったので次のように`openssl@1.1`を指定するようにしました
  - https://github.com/rbenv/ruby-build/issues/1489

```bash
$ brew install openssl@1.1
```

- 前段で変更した`.zshrc`のうち、`RUBY_CONFIGURE_OPTS`を次のように変更します
  - `source ~/.zshrc` をお忘れなく

```.zshrc:.zshrc
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1) --with-readline-dir=$(brew --prefix readline) --with-libyaml-dir=$(brew --prefix libyaml) --with-zlib-dir=$(brew --prefix zlib)"
```

- 自分の場合はこれで`rbenv install`が成功するようになりました！
  - 誰かの参考になれば幸いです