まとめ
- Ruby(3.2.0)から
libyamlやlibffiの同梱が廃止された。 - Rubyインストール前に
apt-getコマンドでlibyaml-devを別途インストールする必要がある。
$ sudo apt-get install libyaml-dev
環境
- Windows(10)
- [WSL2]Ubuntu(20.04)
- rbenv(3.2.2)
-
ruby-build追加済み -
.bashrcにいろいろ追記済み
-
どうした
rbenvからRuby(3.2.2)をインストールしようとしたらエラーになった。
エラー内容
Ruby(3.2.2)をインストール
$ rbenv install 3.2.2
To follow progress, use 'tail -f /tmp/ruby-build.YYYYMMDD.00000.log' or pass --verbose
Downloading ruby-3.2.2.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
Installing ruby-3.2.2...
BUILD FAILED (Ubuntu 20.04 using ruby-build YYYYMMDD)
Inspect or clean up the working tree at /tmp/ruby-build.YYYYMMDD.00000
Results logged to /tmp/ruby-build.YYYYMMDD.00000.log
Last 10 log lines:
*** Fix the problems, then remove these directories and try again if you want.
make[1]: Leaving directory '/tmp/ruby-build.YYYYMMDD.00000/ruby-3.2.2'
Generating RDoc documentation
/tmp/ruby-build.YYYYMMDD.00000/ruby-3.2.2/lib/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
uh-oh! RDoc had a problem:
cannot load such file -- psych
run with --debug for full backtrace
make: *** [uncommon.mk:598: rdoc] Error 1
/tmp/ruby-build.YYYYMMDD.00000.logを見てみると最終行辺りにエラーが吐き出されている。
/tmp/ruby-build.YYYYMMDD.00000/ruby-3.2.2/lib/yaml.rb:3: warning: It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
uh-oh! RDoc had a problem:
cannot load such file -- psych
run with --debug for full backtrace
make: *** [uncommon.mk:598: rdoc] Error 1
Ruby のインストールに使用されるYAML出力用のpsychが欠けているかららしい。
どうして
Ruby(3.2.0) からlibyamlやlibffiの同梱が廃止されたために起きたエラーだった。
3rd パーティライブラリのソースコード同梱廃止
libyaml や libffi のような 3rd パーティのライブラリのソースコードの同梱を廃止しましたPsych に同梱していた libyaml のソースコードは削除されました。ユーザーは自身で Ubuntu や Debian プラットフォームなら libyaml-dev パッケージを
インストールする必要があります。このパッケージ名称はプラットフォームごとに異なります。Fiddle に同梱していた libffi のソースコードも削除されました
解決
Ubuntuにlibyaml-devパッケージをインストールした。
$ sudo apt-get install libyaml-dev
Rubyをインストールして無事にインストール完了。
$ rbenv install 3.2.2
$ rbenv global 3.2.2
$ ruby -v
ruby 3.2.2
補足
不足しているパッケージを一度にインストールするコマンドがある(動作確認無)
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev
解決に導いた記事様方
https://zenn.dev/fuuukeee3/articles/22caeb537cf1a6
https://qiita.com/n-yamanaka/items/3268cdd2179d31a93ee3
以上