m1macにasdf install ruby latestで苦戦しまくった話

ruby

こんにちは。趣味グラマのNobu(@nm_aru)です。

プライベートで職場が変わったりと色々あり、全くブログが書けていませんでした。
そして個人開発からも遠ざかっていて、久しぶりにFlutterの環境を作ろうとしたら、その手前のrubyのインストールで大苦戦…。

検索しても中々答えが見つからなかったので、備忘録として残しておこうと思います。

asdf install ruby latestでエラーになる

[user@:~]$ asdf install ruby latest
Downloading ruby-3.0.2.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.2.tar.gz
Installing ruby-3.0.2...
mkdir: /usr/local/opt/openssl/lib: Permission denied

BUILD FAILED (macOS 11.6 using ruby-build 20210720)

Inspect or clean up the working tree at /var/folders/t4/6p5ghcm54hq7dpgh3l9xwrww0000gn/T/ruby-build.20211027000305.28389.CNSoy3
Results logged to /var/folders/t4/6p5ghcm54hq7dpgh3l9xwrww0000gn/T/ruby-build.20211027000305.28389.log

Last 10 log lines:
/var/folders/t4/6p5ghcm54hq7dpgh3l9xwrww0000gn/T/ruby-build.20211027000305.28389.CNSoy3 ~
/var/folders/t4/6p5ghcm54hq7dpgh3l9xwrww0000gn/T/ruby-build.20211027000305.28389.CNSoy3/ruby-3.0.0 /var/folders/t4/6p5ghcm54hq7dpgh3l9xwrww0000gn/T/ruby-build.20211027000305.28389.CNSoy3 ~

ログを見る限り、opensslで問題がありそうです。

opensslはbrewでインストールしてあり、そもそも「/usr/local/opt/openssl/lib」というパスではなく「/opt/homebrew/opt/[email protected]」に入っています。

[user@:~]$ brew --prefix [email protected]
/opt/homebrew/opt/[email protected]

Google先生に聞くと、RUBY_CONFIGURE_OPTSという環境変数を設定すると良いという記事が沢山見つかるので、bashrcに追記して再度実行してみますが結果は変わりません…。

M1チップ搭載MacBook Pro環境構築手順(Ruby on Railsバージョン) - Qiita
先に結論・感想私は主にRuby on Railsのフレームワークを使用するので、Railsを使うための環境構築メインです。(Slackとか周辺アプリもついでにインストールしているけど。。。)個…
rbenv installがopensslで失敗する - Qiita
2020-03-26追記: Ruby 2.3の場合を追加。環境: macOS Catalina結論から先に:環境変数RUBY_CONFIGURE_OPTSを足す。rbenv installがo…

ビルドに関わる変数をm1 macのbrew配下を見るように設定する

あれこれ試し、悩むこと2時間ほど。

直接的には関係ない投稿なのですが、例によってStack Overflowの記事に助けられました。

Install older Ruby versions on a M1 MacBook?
Installing Ruby 3.0.x works fine on M1 MacBooks using rbenv or asdf. But older versions like 2.7.x and 2.6.x are having ...

bashrcに以下を追記する事でエラーは解消されました。

export RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])"
export LDFLAGS="-L/opt/homebrew/opt/readline/lib"
export CPPFLAGS="-I/opt/homebrew/opt/readline/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/readline/lib/pkgconfig"
export optflags="-Wno-error=implicit-function-declaration"
export LDFLAGS="-L/opt/homebrew/opt/libffi/lib"
export CPPFLAGS="-I/opt/homebrew/opt/libffi/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig"

正直なところ、どの変数が解決に繋がったかは分かっていません…。

まとめ

凄い雑な記事になりました…。

趣味グラマにとっては環境構築に時間がかかる事ほど苦痛な事は無いので、2時間程度で解決出来て良かったと思います。

数カ月ぶりにFlutterアプリの開発に着手したいと思います!

コメント

タイトルとURLをコピーしました