これ何
古いruby(2.4以下のバージョン)がMacにインストールできなくて困っているあなたへ送るやつです。
なぜ古いrubyでビルドエラーが発生するのか
古いrubyではopenssl 1.1系しかない環境だとビルドエラーになる。
しかし、openssl1.0系をインストールしようとしてもここに書いてある通り、openssl 1.0系はEOLを迎えたのでhomebrewで素でインストールする事ができなくなっている。
どうするの?
以下のコマンドで無理やりインストールする。
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/64555220bfbf4a25598523c2e4d3a232560eaad7/Formula/openssl.rb
上記のコマンドの実行で、 /usr/local/Cellar/openssl/1.0.2t
に OpenSSL 1.0.2t を入れることはできる。
さらにこんな感じでシンボリックリンク付け替えておかないとエラーになる。
$ cd /usr/local/opt
$ rm openssl
$ ln -s ../Cellar/openssl/1.0.2t openssl
あとはrbenvでrubyをインストールする時にこれを使えるようにしておく。
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/Cellar/openssl/1.0.2t" rbenv install 2.3.8
大変面倒だが、bundle installする時にもopensslを参照しているので該当のリポジトリを触っている間は古いopensslを使いつづなければいけない・・・
bundle installが終わってサービスを起動したらopensslのシンボリックリンクを戻しておく。
$ cd /usr/local/opt
$ rm openssl
$ ln -s ../Cellar/openssl@1.1/1.1.1d openssl
そもそも・・・
本来であれば、EOLを迎えている物をインストールしようと試みること自体が良くない話なのだが、止むに止まれぬ事情で必要になる人もいると思ったので記録を残しておくことにしたのであった。