6
2

More than 1 year has passed since last update.

【Ubuntu】Ruby3.2.2 をインストールしようとしたらエラーになった

Posted at

まとめ

  • Ruby(3.2.0)からlibyamllibffiの同梱が廃止された。
  • 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.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) からlibyamllibffiの同梱が廃止されたために起きたエラーだった。

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

以上

6
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2