はじめに
homebrew、anyenv、rbenvを導入しM1 MacでRubyの環境構築を行なった際にエラーで詰まったので記事に残そうと思います。
homebrewからanyenvまでの導入は以下記事をご参照ください。
M1 Macで初めての環境構築 (homebrew, anyenv, nodenv使用)
Ruby環境構築
anyenvからrbenvを導入する
anyenv install rbenv
シェルの再起動
rbenvのインストールが完了したらシェルを再起動する
exec $SHELL -l
インストール可能なバージョンを確認
rbenv install -l
Rubyをインストール
Ruby公式サイトより安定版を確認しインストールする
しばらく時間が掛かります。
rbenv install {任意のバージョン}
エラーが発生
どこかで間違えたのか
Downloading ruby-3.2.1.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.1.tar.gz
Installing ruby-3.2.1...
BUILD FAILED (macOS 13.2.1 using ruby-build 20230309-1-gf3c1ccc)
Inspect or clean up the working tree at /var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313221439.5208.wd6YFD
Results logged to /var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313221439.5208.log
Googleで調べる
GitHubのIssueにまったく同じエラーで詰まっていた人を発見
Installation issues with Arm Mac (M1 Chip) #1691
どうやらrbenv install
の前にRUBY_CFLAGS="-w"
を付ければ解決するらしい
再インストール
RUBY_CFLAGS="-w" rbenv install 3.2.1
また同じエラーが起きた
BUILD FAILED (macOS 13.2.1 using ruby-build 20230309-1-gf3c1ccc)
Inspect or clean up the working tree at /var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.n055lY
Results logged to /var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.log
Last 10 log lines:
Check ext/psych/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.
Generating RDoc documentation
/private/var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.n055lY/ruby-3.2.1/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
DeepLで翻訳してみると
BUILD FAILED (macOS 13.2.1 ruby-build 20230309-1-gf3c1ccc を使用)
var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.n055lYの作業ツリーを点検またはクリーンアップします。
Results logged to /var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.log
直近の10行のログです。
詳細はext/psych/mkmf.logを確認してください。
*** 問題を修正した後、これらのディレクトリを削除し、必要であれば再試行してください。
RDocドキュメントの生成
/private/var/folders/wc/zw016qq16dnbgshf5_r7lnmr0000gn/T/ruby-build.20230313222147.80358.n055lY/ruby-3.2.1/lib/yaml.rb:3: warning: あなたのrubyインストールには、(YAML出力用の)psychが欠けているようです。
この警告を消すには、libyamlをインストールして、rubyを再インストールしてください。
うおおおぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉぉ RDocに問題が発生しました。
そのようなファイルを読み込むことができません -- psych
完全なバックトレースを得るために --debug を付けて実行する。
どうやらlibyaml
が必要みたいだ。
libyaml
とは
そもそもlibyaml
とは何なのか調べてみた。
C言語でYAMLファイルのコード解析と出力を簡単にするためのライブラリらしい
Ruby 3.2.0よりlibyaml
は同梱が廃止になったらしい
libyaml
を導入
homebrewよりlibyaml
をインストールする
brew install libyaml
再々インストール
今度こそうまくいってくれ
rbenv install {任意のバージョン}
インストールに成功したメッセージが表示されました。
Downloading ruby-3.2.1.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.1.tar.gz
Installing ruby-3.2.1...
ruby-build: using libyaml from homebrew
Installed ruby-3.2.1 to /Users/ユーザー名/.anyenv/envs/rbenv/versions/3.2.1
NOTE: to activate this Ruby version as the new default, run: rbenv global 3.2.1
最後にNOTE:
にある通りグローバルのRubyのバージョンを設定します。
rbenv global 3.2.1
rbenvに認識させるために以下を実行
rbenv rehash
バージョン確認
ruby -v
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [arm64-darwin22]
最後に
エラーメッセージを最初からちゃんと読んでいればRUBY_CFLAGS="-w"
の工程はなくてもよかったと感じました。
エラーメッセージはきちんと読むべきです。