環境
Ubuntu20.4
Ruby3.3.0
内容
rbenvを使って、Ruby3.3.0をインストールすると、エラーが出てきたので、そのトラブルシュートです。
err.sh
$rbenv install -v 3.3.0
*** Following extensions are not compiled:
fiddle:
Could not be configured. It will not be installed.
/tmp/ruby-build.20240704151132.2566.Axj65T/ruby-3.3.0/ext/fiddle/extconf.rb:78: missing libffi. Please install libffi or use --with-libffi-source-dir with libffi source location.
Check ext/fiddle/mkmf.log for more details.
psych:
Could not be configured. It will not be installed.
Check ext/psych/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.
make[1]: *** [exts.mk:2422: note] Error 1
make[1]: Leaving directory '/tmp/ruby-build.20240704151132.2566.Axj65T/ruby-3.3.0'
make: *** [uncommon.mk:398: build-ext] Error 2
external command failed with status 2
BUILD FAILED (Ubuntu 20.04 on x86_64 using ruby-build 20240702-2-g490428a)
You can inspect the build directory at /tmp/ruby-build.20240704151132.2566.Axj65T
どうも、fiddleとpsychという2つのライブラリがインストールされていないことが原因のようです。
fiddleに関しては、エラーメッセージにあるように、libffiというライブラリをインストールすれば解決するようですが、psychに関しては、エラーメッセージに具体的にどうすればいいかといった説明が記載されていません。ググってみるとpsychに関しては、libyamlというライブラリが必要なようです。では、そのように記載してくれればいいものを・・・
fiddleをインストールします。
$sudo apt-get install libffi-dev
psychをインストールします。
$sudo apt-get install libyaml-dev
この後、再度、Rubyをインストールすれば、最後に次のメッセージが表示され、正常にインストールが完了しました。
ok.sh
==> Installed ruby-3.3.0 to /home/vagrant/.rbenv/versions/3.3.0
参考リンクにもある通り、Ruby3.2.0以降では、libffi、libyamlといった、サードパーティ製のライブラリの同梱が廃止されたようです。
ぐぐっていると、同じようなエラーでトラブっている人は割と多くいるようです。
参考