【Rubyのバージョン管理ツール】 rbenvの使い方
はじめに
すでにHomebrewのインストールが終わった状態として記述しています。
前半はrbenvの使い方、後半はrubyをインストールする際にBUILD FAILED (macOS 14.5 on arm64 using ruby-build 20240612)
と表示され、かなりハマったのでその解決方法について記述したいと思います。
ちなみに原因は、MacBook Pro(M1チップ搭載)を使用しているにも関わらず、Intel Mac用のHomebrewをインストールして使用していたことのようでした。
rbenvとは
Rubyのバージョン管理ツールです。同じマシン上で複数のRubyのバージョンを切り替えたりすることができます。
rbenvのインストール
Homebrewを使ってmacOSにrbenv
とruby-build
のインストールしてください。
brew install rbenv ruby-build
ruby-build
ruby-build
は、実際にRubyのソースコードをダウンロードし、コンパイル・インストールするためのツールです。
例えば、rbenv install
コマンドを使用して特定のRubyバージョンをインストールするためには、システムにruby-build
がインストールされている必要があります。
したがって、rbenv
で新しいバージョンのRubyをインストールするには、ruby-build
もインストールしておく必要があります。
rbenv
を使ってRubyのバージョン管理をするために必要な設定をシェルの設定ファイル (~/.zshrc
) に追加してください。これらを追加することで、新しいシェルセッションが開始されるたびに、rbenv
を使ったRubyの管理ができるようになります。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
rbenvの実行ファイルがインストールされているディレクトリ ($HOME/.rbenv/bin
) を、現在のシェルのPATHに追加します。$HOME
はホームディレクトリ(/Users/ユーザーネーム
)を指します。
2行目は、rbenv init
を実行し、rbenv をシェルに初期化するためのコマンドを生成しています。
環境変数の表示
cat ~/.zshrc
設定ファイルに
現在のシェルを確認する
シェル(Shell)とは、OSにおいてユーザーとシステムとの間で対話を行うためのインタフェースです。
echo $SHELL
-
/bin/zsh
が表示されれば、zsh
を使用していることになります。 -
/bin/bash
が表示されれば、bash
を使用しています。
設定の反映
source ~/.zshrc
インストールできているか確認してください。
rbenv -v
インストールが確認できました。
Homebrewでインストールしたパッケージの一覧を表示してみてください。
brew leaves
# 現在のシステムにインストールされているすべてのパッケージ(依存関係を含む)を表示する場合
brew list
追加されているのがわかると思います。
ちなみに、brew list
を使用した場合は下記の表示になります。
Rubyのインストール
インストール可能なRubyのバージョン一覧を取得してください。
rbenv install --list
# すべてのバージョンが表示されます
rbenv install --list-all
今回は最新の安定版である3.3.3
をインストールしてみます。
表示されたバージョンの中からインストールしたい Ruby のバージョンを指定してインストールします。
rbenv install 3.3.3
下記が表示されたら、Rubyのバージョン3.3.3がインストールされています。
現在インストールされているRubyのバージョンを表示してインストールされたか確認してみてください。
rbenv versions
*
印がついているバージョンがrbenv
の現在のバージョンになります。
バージョンの切り替え
システム全体のデフォルトのRubyバージョンを切り替えてみます。
rbenv global 3.3.3
rubyのバージョンを確認してください。切り替わっていない場合は、source ~/.zshrc
で再読み込みするか、一度ターミナルを再起動して確認してみてください。
ruby -v
rbenv versions
プロジェクトごとに異なるRubyバージョンを使用したい場合や、特定のバージョンが必要なプロジェクトがある場合は下記のように切り替えてください。rbenv local
を使用して設定したRubyバージョンは、そのディレクトリ内でのみ有効です。
rbenv local 3.3.3
BUILD FAILED (macOS 14.5 on arm64 using ruby-build 20240612)と表示される
rbenv install 3.3.3
(rubyのインストール)を実行すると下記が表示され、原因が特定できませんでした。
ログの詳細を確認すると、最後の方に下記の記述がありました。
*** Following extensions are not compiled:
openssl:
Could not be configured. It will not be installed.
(省略します)
OpenSSL library could not be found. You might want to use --with-openssl-dir=<dir> option to specify the prefix where OpenSSL is installed.
Check ext/openssl/mkmf.log for more details.
psych:
Could not be configured. It will not be installed.
Check ext/psych/mkmf.log for more details.
*** Fix the problems, then remove these directories and try again if you want.
make[1]: *** [note] Error 1
make: *** [build-ext] Error 2
ちなみに原因は、MacBook Pro(M1チップ搭載)を使用しているにも関わらず、ターミナルのRosettaを使用して開く
にチェックが入っており、Homebrew(Intel Mac用)をインストールして使用していたことのようでした。
Homebrew(Intel Mac用)を削除した後にHomebrew(Apple Silicon用)をインストールしたところインストールできるようになりました。
解決方法は、こちらにまとめました。
解決のために参照した他の記事
試したこと
使用されているSSLを確認
openssl version
下記が表示されました。macのデフォルトのOpenSSLがLibreSSLになっているようです。
LibreSSL 3.3.6
rbenv
を使ってRubyをインストールする際、RubyバージョンがOpenSSLを必要とする場合があるようです。
Homebrewを使ってインストールしたopenssl@3
パッケージのインストール先ディレクトリ(prefix)を確認してみます。
brew --prefix openssl@3
下記が表示されました。この時点で、opt/homebrew
ではなくて/usr/local
となっていることに早く気付けば良かったです。
/usr/local/opt/openssl@3
rbenv install 3.3.3 -- --with-openssl-dir=/usr/local/opt/openssl@3
openssl@1.1のインストール
openssl@1.1の再インストールしたら解決したという記事もあったので試してみましたが、改善しませんでした。
brew reinstall openssl@1.1
コマンドの最後に--
としてからオプションを指定する必要があリます。
rbenv install 3.3.3 -- --with-openssl-dir=/usr/local/opt/openssl@1.1
依存関係の不足がないか確認
下記を確認したところ、不足はありませんでした。
brew list | grep openssl@3
brew list | grep libyaml
brew list | grep readline
終わりに
何かありましたらお気軽にコメント等いただけると助かります。
ここまでお読みいただきありがとうございます🎉
Discussion