Ruby-build は、Unix 系システム上のソースからの Ruby バージョンのインストールを簡素化するコマンドライン ツールです。
これは、 rbenv install
コマンドとして rbenv のプラグインとして、またはruby-build
コマンドとしてスタンドアロン プログラムとして利用できます。
brew install ruby-build
以下を使用してアップグレードします。
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
以下を使用してアップグレードします。
git -C " $( rbenv root ) " /plugins/ruby-build pull
まず、https://github.com/rbenv/ruby-build/releases/latest から tarball をダウンロードします。それから:
tar -xzf ruby-build- * .tar.gz
PREFIX=/usr/local ./ruby-build- * /install.sh
# As a standalone program
$ ruby-build --list # lists latest stable releases for each Ruby
$ ruby-build --definitions # lists all definitions, including outdated ones
$ ruby-build 3.2.2 ~ /.rubies/ruby-3.2.2 # installs Ruby 3.2.2
$ ruby-build -d ruby-3.2.2 ~ /.rubies # alternate form for the previous example
# As an rbenv plugin
$ rbenv install 3.2.2 # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
警告
Ruby-build は、ソースから Ruby をダウンロードしてコンパイルしようとする前に、システムの依存関係が存在するかどうかをほとんど検証しません。ビルド ツールや開発ヘッダーなどの必要なライブラリがすべてシステム上に存在していることを確認してください。
基本的に、Ruby バージョンをインストールするときに Ruby-build が行うことは次のとおりです。
./configure --prefix=/path/to/destination
を実行します。make install
実行して Ruby をコンパイルします。コンテキストに応じて、ruby-build は上記よりも少しだけ多くのことを行います。たとえば、OpenSSL 自体をダウンロードしてコンパイルすることを意味する場合でも、Ruby を適切な OpenSSL バージョンにリンクしようとします。これは、libyaml や readline などのいくつかのライブラリの Homebrew でインストールされたインスタンスを検出してリンクします。
Ruby-build で認識されないバージョンの Ruby をインストールするには、Ruby バージョン番号の代わりにカスタム ビルド定義ファイルへのパスを指定できます。
定義ファイルの記述方法の例として、デフォルトのビルド定義を確認してください。
ビルド プロセスは、次の環境変数を通じて構成できます。
変数 | 関数 |
---|---|
TMPDIR | 一時ファイルが保存される場所。 |
RUBY_BUILD_BUILD_PATH | ソースがダウンロードされ、ビルドされる場所。 (デフォルト: TMPDIR のタイムスタンプ付きサブディレクトリ) |
RUBY_BUILD_CACHE_PATH | ダウンロードしたパッケージ ファイルをキャッシュする場所。 (デフォルト: rbenv プラグインとして起動した場合、 ~/.rbenv/cache ) |
RUBY_BUILD_HTTP_CLIENT | ダウンロードに使用するaria2c 、 curl 、またはwget のいずれか。 (デフォルト: PATH で最初に見つかったもの) |
RUBY_BUILD_ARIA2_OPTS | ダウンロードのためにaria2c に渡す追加オプション。 |
RUBY_BUILD_CURL_OPTS | ダウンロードのためにcurl に渡す追加オプション。 |
RUBY_BUILD_WGET_OPTS | ダウンロードのためにwget に渡す追加のオプション。 |
RUBY_BUILD_MIRROR_URL | カスタムミラー URL ルート。 |
RUBY_BUILD_MIRROR_PACKAGE_URL | カスタムの完全なミラー URL (例: http://mirror.example.com/package-1.0.0.tar.gz)。 |
RUBY_BUILD_SKIP_MIRROR | ダウンロード ミラーをバイパスし、元の URL からすべてのパッケージ ファイルを取得します。 |
RUBY_BUILD_TARBALL_OVERRIDE | Ruby tarball を取得する URL をオーバーライドします。オプションで#checksum を続けます。 |
RUBY_BUILD_DEFINITIONS | ビルド定義ファイルを検索するパスのコロンで区切られたリスト。 |
RUBY_BUILD_ROOT | ビルド定義ファイルを検索するためのパスのプレフィックス。非推奨: RUBY_BUILD_DEFINITIONS を使用してください |
RUBY_BUILD_VENDOR_OPENSSL | システムが openssl と互換性がある場合でも、openssl をビルドしてベンダーに提供する |
CC | C コンパイラへのパス。 |
RUBY_CFLAGS | 追加のCFLAGS オプション (たとえば、 -O3 オーバーライドするため)。 |
CONFIGURE_OPTS | 追加の./configure オプション。 |
MAKE | カスタムのmake コマンド ( gmake など)。 |
MAKE_OPTS / MAKEOPTS | 追加のmake オプション。 |
MAKE_INSTALL_OPTS | 追加のmake install オプション。 |
RUBY_CONFIGURE_OPTS | 追加の./configure オプション (Ruby ソースにのみ適用されます)。 |
RUBY_MAKE_OPTS | 追加のmake オプション (Ruby ソースにのみ適用されます)。 |
RUBY_MAKE_INSTALL_OPTS | 追加のmake install オプション (Ruby ソースにのみ適用されます)。 |
NO_COLOR | 出力で ANSI カラーを無効にします。デフォルトでは、端末に接続された出力に色が使用されます。 |
CLICOLOR_FORCE | 端末に接続されていない場合でも、出力で ANSI カラーを使用します。 |
rbenv install
とruby-build
コマンドは両方とも、ビルド前に Ruby ソース コードにパッチを適用するための-p/--patch
フラグをサポートしています。パッチは標準入力から読み取られます。
# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <( curl -sSL http://git.io/ruby.patch )
# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
Ruby-build にバンドルされているすべての Ruby 定義ファイルには、パッケージのチェックサムが含まれています。つまり、外部からダウンロードされたすべてのパッケージは、取得後に整合性が自動的にチェックされます。
チェックサムの作成方法の詳細については、次のセクションを参照してください。
ダウンロードを高速化するために、ruby-build は Amazon CloudFront でホストされているミラーからパッケージ ファイルを取得します。これを活用するには、パッケージでチェックサムを指定する必要があります。
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
Ruby-build はまず$RUBY_BUILD_MIRROR_URL/
(注: これは完全な URL) からこのパッケージを取得しようとします。
はファイルのチェックサムです。次の場合は、元の場所からパッケージをダウンロードするようにフォールバックします。
RUBY_BUILD_SKIP_MIRROR
が有効になります。 RUBY_BUILD_MIRROR_URL
を設定することでカスタム ミラーを指定できます。
ミラー サイトが上記の URL 形式に準拠していない場合は、 RUBY_BUILD_MIRROR_PACKAGE_URL
設定することで完全な URL を指定できます。完全な URL である点を除けば、 RUBY_BUILD_MIRROR_URL
と同じように動作します。
デフォルトの Ruby-Build ダウンロード ミラーは Basecamp によって後援されています。
ruby-build
とrbenv install
どちらも-k
または--keep
フラグを受け入れます。これは、インストール後にダウンロードしたソースを保持するように Ruby-build に指示します。これは、Ruby でgdb
とmemprof
使用する必要がある場合に役立ちます。
rbenv install
コマンドで--keep
使用すると、ソース コードは並列ディレクトリ ツリー~/.rbenv/sources
に保存されます。 ruby-build
で--keep
使用する場合は、 RUBY_BUILD_BUILD_PATH
環境変数でソース コードの場所を指定する必要があります。
一般的な問題の解決策については、ruby-build wiki を参照してください。
Wiki で答えが見つからない場合は、問題トラッカーで問題を開いてください。ビルド失敗に関する完全なビルド ログを必ず含めてください。