まとめ
- 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
以上