Tips

rbenv installでエラーが出るときの対処策

rbenvでruby 2.1.2をインストールしようとしたらエラーが発生して、思った以上に時間がかかってしまいました。最終的にインストールできた対処策をお伝えします。

エラー発生

OS X : 10.13.2(17C88)

発生日:2020/3/20

対処策

色々試したのですが、結論から言うと brew upgrade ruby-build をしたらインストールできました。

この後に、 rbenv install 2.1.2 をすると

きちんとインストールできました。

この記事にruby-buildを最新版にしようということが書いていたのですが、ruby-buildの更新の仕方について、rbenv pluginというのを使うと書いていたのですが、ruby-buildのgithubページを見ると、homebrewでinstallしていたので、最初は brew install ruby-build しました。すると、

と表示されたので、brew upgrade ruby-buildをしました。

rbenv pluginでやった方がよかったのかはわかりません。とりあえず動いたのでよしとしました。

経緯

推測ですが、python3をhomebrewで入れた際に、homebrew update かupgradeが走ったか、自分で実行してしまい、opensslのバージョンが上がってしまったのが根本的な原因だと考えています。

その後、pryをすると以下のようなエラーが出たので、

上の記事を見て、もともとインストールされていたruby 2.1.2をuninstallし、再installしようとしたら、冒頭のエラーが出てしまったということです。

ちなみに、pryのエラーの他に、次の記事に書いたように、middlemanというrubyのツールを起動する時もエラーが発生していました。

cannot load such file -- bundler/setup (LoadError)の対処策middlemanを起動しようとしたら、次のようなエラーが発生しました。対処策をご紹介します。 エラー発生 $ middleman ...

今考えると、rubyの再インストールしなくても、次の章で紹介するリンクの張り替えやPATHを通すだけでもpryは動いたのかもしれません。

対処策に至るまでに他に試した事

対処策にたどり着く前に、次のことを試しました。もしかしたら、これとの合わせ技で、動いたのかもしれません。

上述した対処策で動かなかった場合は、以下もためして見てください。

opensslのpathを指定してrbenv install

opensslの再install

uninstallしてからのinstallもしてみました。

brew link --force openssl

openssl@1.1にPATHを通す

brew switch openssl 1.0.2s

どうもopensslの1.0系が必要な感じがしたのでこれをやってみました。

ちなみに、インストールしたはずのより新しい1.1.1dを指定するとエラーが発生します。不思議ですね。

これは、もちろん、 brew reinstall openssl@1.1 した後にやっています。

奇妙なopensslのバージョン認識

ちなみに、ここまで紹介opensslをアップデートしたり、リンクを変えたりするなどの対策を紹介しましたが、何をやっても、 brew list openssl をやると一貫して以下のように1.0.2sが表示されるんですよね。

でも、 brew info openssl をすると、新しいバージョンの1.1.1dと表示されます。不思議です。