前提
macOS
13.2.1(22D68)
uname
$ uname -a Darwin FOOBAR.local 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:43 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T8112 arm64
Xcode
$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version version: 14.2.0.0.1.1668646533
rbenv
rbenv
のインストール方法は、リポジトリから直接 git clone
してくる方法である。
$ rbenv --version rbenv 1.2.0-59-g0704e65
rbenv-build
rbenv-build
のインストール方法は、リポジトリから直接 git clone
してくる方法である。
$ cd ~/.rbenv/plugins/ruby-build $ git log --oneline | head --line 1 f3c1ccc Remove AWS access key ID from version control (#2163)
結論
まず Homebrew で以下をインストールする。
$ brew install openssl@3 readline libyaml gmp
そして以下のようなオプション(環境変数定義)を付けて rbenv
を実行するとうまくいった。
RUBY_CFLAGS="-w"
LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib"
RUBY_CONFIGURE_OPTS="--disable-shared --with-openssl-dir=$(brew --prefix openssl@3)"
$ RUBY_CFLAGS="-w" LDFLAGS="-L/opt/homebrew/opt/openssl@3/lib" RUBY_CONFIGURE_OPTS="--disable-shared --with-openssl-dir=$(brew --prefix openssl@3)" rbenv install 3.2.1 -> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.1.tar.gz Installing ruby-3.2.1... ruby-build: using readline from homebrew ruby-build: using libyaml from homebrew ruby-build: using gmp from homebrew Installed ruby-3.2.1 to /Users/FOOBAR/.rbenv/versions/3.2.1 NOTE: to activate this Ruby version as the new default, run: rbenv global 3.2.1
エラー時のログ(最終10行)
インストールに失敗してエラーが出たときのログは次のとおり。
Installing ruby-3.2.1... ruby-build: using readline from homebrew ruby-build: using libyaml from homebrew ruby-build: using gmp from homebrew Last 10 log lines: checking for dtrace... dtrace checking for dot... no checking for doxygen... no checking for pkg-config... no checking whether it is Android... no checking for cd using physical directory... cd -P checking whether CFLAGS is valid... yes checking whether LDFLAGS is valid... no configure: error: something wrong with LDFLAGS="-L/Users/FOOBAR/.rbenv/versions/3.2.1/lib " make: *** No targets specified and no makefile found. Stop.
感想
環境がやや特殊なので、Mac に直接環境構築してハマるとつらいものがある*1。
ビルドや環境は、CI や コンテナ や Codespaces みたいなところでやるのが好ましいのかもしれません。
関連ページ
*1:解決知識も汎用的なものではないし、可搬性も低い