Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.2 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法
結論
以下の記事と同じですので、こちらを見るとすぐに解決します。
環境
- Ubuntu 24.04 LTS
- WSL2
$ rbenv install 3.3.2 実行時のエラー画面とエラーログ
make[2]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA/ruby-3.3.2/ext/date' から出ます
linking shared-object ripper.so
make[2]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA/ruby-3.3.2/ext/ripper' から出ます
make[2]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA/ruby-3.3.2' に入ります
tool/file2lastrev.rb:6:in `require': cannot load such file -- optparse (LoadError)
from tool/file2lastrev.rb:6:in `<main>'
./tool/file2lastrev.rb:6:in `require': cannot load such file -- optparse (LoadError)
from ./tool/file2lastrev.rb:6:in `<main>'
make[2]: *** [uncommon.mk:1322: .revision.time] エラー 1
make[2]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA/ruby-3.3.2' から出ます
make[1]: *** [exts.mk:99: ruby] エラー 2
make[1]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA/ruby-3.3.2' から出ます
make: *** [uncommon.mk:397: build-ext] エラー 2
external command failed with status 2
RUBY_CONFIGURE_OPTS 環境変数にて --with-baseruby を指定したらビルドできた
環境変数 RUBY_CONFIGURE_OPTS="--with-baseruby=$HOME/.rbenv/versions/3.2.4/bin/ruby" を付与して実行したところ、インストールが正常に終了しました。3.2.4 というのは適当に入れた値です*1。
$ RUBY_CONFIGURE_OPTS="--with-baseruby=$HOME/.rbenv/versions/3.2.4/bin/ruby" rbenv install 3.3.2
==> Downloading ruby-3.3.2.tar.gz...
-> curl -q -fL -o ruby-3.3.2.tar.gz https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.2.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 21.0M 100 21.0M 0 0 67.4M 0 --:--:-- --:--:-- --:--:-- 67.3M
==> Installing ruby-3.3.2...
-> ./configure "--prefix=$HOME/.rbenv/versions/3.3.2" --enable-shared --with-ext=openssl,psych,+ "--with-baseruby=$HOME/.rbenv/versions/3.2.4/bin/ruby"
-> make -j 20
-> make install
==> Installed ruby-3.3.2 to /home/USERNAME/.rbenv/versions/3.3.2
参考
*1:もちろん、すでに当該バージョンがインストールされている必要があるのと、現状 3.3 系 を指定するとビルドに失敗します
