Ruby
tool
rbenv
rbenv/rbenv: Manage your app's Ruby environment
rubyのnpm相当。
ruby-buildプラグインとセットで使って、任意のバージョンのrubyをインストールして、該当するモジュール類をインストールできる。
# list latest stable versions: rbenv install -l # list all local versions: rbenv install -L # list all installed Ruby versions rbenv versions rbenv version # current version # install a Ruby version: rbenv install 3.1.2 rbenv local 3.1.2 # set the Ruby version for this directory # uninstall rbenv uninstall <version>
rbenv installで指定したバージョンをインストールして、rbenvで現在ディレクトリーのrubyのバージョンを変更する。
rbenv localは.ruby-versionにバージョン番号を出力するだけで、rbenvはこのファイルのバージョンを見ている。
そのほかのコマンド。
exec
rbenv exec gem installのように使う。rbenvで適用済みのrubyの該当コマンドを使うらしい。普通使う必要はない。なぜならば、rbenvの設定で、デフォルトでrbenvの環境が優先されるから。
ruby-build
About
rbenv/ruby-build: A tool to download, compile, and install Ruby on Unix-like systems.
ruby-build | rbenv日本語リファレンス | Ruby STUDIO
rubyをソースコードからビルドするためのツール。rbenvのプラグインとして利用可能。
基本はrbenvのプラグインとして使うが、単独版もある。プラグインとして使う場合は、rbenv installのinstallのサブコマンドがruby-buildのこと。
RUBY_CONFIGURE_OPTS 環境変数。rubyのビルド時の./configureに指定するオプション。
rbenv install --versionでruby-build自体のバージョン表示になる。
-vでビルド時のログが出る。
Install
rbenv/ruby-build: A tool to download, compile, and install Ruby on Unix-like systems.
rbenvのプラグインとして使う場合、以下のコマンドでインストールする。
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
rbenv installの仕組み
ruby 実行環境の構築 - rbenvの使い方とその仕組み | 割り箸ポテチ
ビルド定義ファイル (build definition file) があり、それに基づいてruby-buildは必要なファイルをダウンロードしてビルドする。
以下のディレクトリーな度に格納されている。
~/.rbenv/plugins/ruby-build/share/ruby-build/ /usr/share/ruby-build/1.9.3-p551
1.8.6-p383のようなバージョン番号のファイル名で格納されている。
ビルド定義ファイルの中身は以下のような感じ。
https://github.com/rbenv/ruby-build/blob/master/share/ruby-build/3.3.6
install_package "openssl-3.0.15" "https://github.com/openssl/openssl/releases/download/openssl-3.0.15/openssl-3.0.15.tar.gz#23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533" openssl --if needs_openssl:1.0.2-3.x.x install_package "ruby-3.3.6" "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.6.tar.gz#8dc48fffaf270f86f1019053f28e51e4da4cce32a36760a0603a9aee67d7fd8d" enable_shared standard
rubyとopensslのtgzのURLとハッシュの記載となっている。
openssl --if needs_openssl:1.0.2-3.x.xとなっているように、OSに該当バージョンがなくて、必要な場合に自動インストールするようになっている (M1 MacでRuby 2.4〜3.2をrbenvでビルドする最小限のセットアップを全部調べた|TechRacho by BPS株式会社)。
なお、このビルド定義ファイルは、2022-07-10に大幅な変更があった (Install openssl 1 when openssl is 3 · rbenv/ruby-build@fb0e82c)。
それまで、opensslのインストールはmacくらいだったが、OSの標準opensslが3になってきたので、mac以外もインストールするようになった。
これがあるので、aptなどのOSのruby-buildではなく、最新のruby-buildをインストールした方がいい。