ruby-build

ruby-buildは、UNIX系のシステム上で異なるバージョンのRubyをコンパイルしインストールするための、 rbenv installコマンドを提供するrbenvのプラグインです。

rbenvが無く、Rubyのバージョンのインストールを細かく制御する必要がある環境でも、 ruby-buildを使用することが可能です。

リリース一覧を確認し、 各バージョンの変更を確認して下さい。

インストール

rbenvプラグインとしてインストール(推奨)

rbenvプラグインとしてruby-buildをインストールすることで、rbenv installコマンドが使用可能になります。

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

これは、~/.rbenv/plugins/ruby-buildディレクトリ内に、ruby-buildの最新の開発版をインストールします。 このディレクトリから、特定のリリースタグをチェックアウトすることが出来ます。 ruby-buildを更新するには、最新の変更をダウンロードするためにgit pullを実行します。

スタンドアローンのプラグラムとしてインストール(上級者向け)

スタンドアローンのプログラムとしてruby-buildをインストールすることで、 Rubyのバージョンのインストールを細かく制御することの出来るruby-buildコマンドが使用可能になります。 もし、rbenvがインストールされていれば、rbenv installコマンドも使用可能になります。

git clone https://github.com/sstephenson/ruby-build.git
cd ruby-build
./install.sh

これは、/usr/localへruby-buildをインストールします。 もし、/usr/localへの書き込み権限が無ければ、 代わりにsudo ./install.shを実行する必要があります。 PREFIX環境変数を設定することで、異なる接頭辞でのインストールが可能です。

インストール後にruby-buildを更新するには、リポジトリをクローンした場所でgit pullを実行し、 インストールスクリプトを再実行します。

Homebrewを使用したインストール(OS Xユーザー)

Mac OS Xユーザーは、Homebrewパッケージマネージャーを使用してruby-buildをインストールすることが可能です。 これにより、ruby-buildコマンドへのアクセスが可能になります。 もし、rbenvがインストールされていれば、rbenv installコマンドも使用可能になります。

もし、Homebrewを使用してrbenvをインストールしているのであれば、 これがお勧めのインストール方法になります。

brew install ruby-build

また、もし最新の開発リリースをインストールしたいのであれば、次のように実行します。

brew install --HEAD ruby-build

使用方法

始める前にあなたのビルド環境が、 必要とするRubyのバージョンをコンパイルするための適切なシステム依存を持つことを確認する必要があります。 (推奨環境参照)

rbenvを使用したrbenv installの使用方法

rbenvを使用して各バージョンのRubyをインストールするには、 インストールしたい正確なバージョン名を付けて、rbenv installを実行します。 例えば、下記のように実行します。

rbenv install 2.2.0

各バージョンのRubyは、~/.rbenv/versions下のバージョンと同じ名前のディレクトリ内にインストールされます。

全ての利用可能なRubyのバージョンの一覧を確認するには、rbenv install --listを実行します。 また、もしrbenvが適切な設定でインストールされていれば、完全なタブ付きのRubyバージョンを使用することも可能です。

ruby-buildスタンドアローンの使用方法

もしスタンドアローンのプログラムとしてruby-buildをインストールしているのであれば、 ruby-buildコマンドを使用して、特定の場所に各バージョンのRubyをコンパイルしてインストールすることが可能です。

インストールしたい正確なバージョン名とインストールしたいフルパスを付けて、 ruby-buildコマンドを実行して下さい。 例えば、下記のように指定します。

ruby-build 2.2.0 ~/local/ruby-2.2.0

利用可能なRubyの全バージョンの一覧を確認するには、ruby-build --definitionsを実行します。

インストール処理で何が行われているかを確認するために、 -vまたは--verboseフラグを第一引数として渡してください。

カスタム定義

rbenv installruby-buildのどちらも、 バージョン名の代わりとなるカスタム定義ファイルのパスを受け入れます。 カスタム定義は、ruby-buildで未だサポートされていないRubyのバージョンのインストールと開発を可能にしてくれます。

カスタム定義ファイルを作るにあたり、 ruby-build組み込み定義を確認してください。

特別な環境変数

ビルドの処理を制御するための、特別な環境変数を設定することが可能です。

環境変数 説明
TMPDIR ruby-buildが一時的にファイルを格納する場所を設定します。
RUBY_BUILD_BUILD_PATH ソースをダウンロードしビルドを行う場所を設定します。 デフォルトでは、TMPDIRのサブディレクトリになります。
RUBY_BUILD_CACHE_PATH 設定されいる場合、ダウンロードされたパッケージファイルをキャッシュするのに使用するディレクトリを指定します。
RUBY_BUILD_MIRROR_URL デフォルトのミラーURLのルートを、選んだものに上書きします。
RUBY_BUILD_SKIP_MIRROR 設定されている場合、 ruby-buildにミラーを使用する代わりに、そららの元のソースのURL先からパッケージをダウンロードする事を強制します。
RUBY_BUILD_ROOT share/ruby-build/内で検索されるビルド定義から、デフォルトの場所を上書きします。(翻訳に自信なし)
RUBY_BUILD_DEFINITIONS ビルド定義を検索する際に、追加の検索場所を取得するコロン区切りのパスのリストを指定します。
CC Cコンパイラのパスを設定します。
RUBY_CFLAGS デフォルトのCFLAGSへ追加オプションを渡すことを可能にしてくれます。 例えば、-03オプションを上書きするために使用します。
CONFIGURE_OPTS ./configureへ追加のオプションを渡すことを可能にしてくれます。
MAKE makeのために使用されるコマンドの上書きを可能にしてくれます。 特定のシステム上で、GNU make(gmake)を指定するのに便利です。
MAKE_OPTS
(またはMAKEOPTS)
makeへ追加オプションを渡すことを可能にしてくれます。
MAKE_INSTALL_OPTS make installへ追加オプションを渡すことを可能にしてくれます。
RUBY_CONFIGURE_OPTS
RUBY_MAKE_OPTS
RUBY_MAKE_INSTALL_OPTS

RUBY_CONFIGURE_OPTSRUBY_MAKE_OPTS
RUBY_MAKE_INSTALL_OPTSは、 MRI(Matz' Ruby Implementation -- Rubyの公式実装の1つ)のビルドのための、 設定とmakeのためのオプションの指定を可能にします。

これらの変数は、Rubyにだけ渡されるものであり、 いずれのパッケージ(例: libyaml)に依存するものではありません。

コンパイル前のRubyへのパッチの適用

rbenv installruby-buildは、 --patch(-p)フラグをサポートします。 このフラグは、./configureとコンパイルの手順の前にRuby、JRuby、Rubiniusソースコードへ適用されるべき、 標準入力からのパッチを示します。

下記は、その使用例になります。

# 1つのパッチの適用
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch

# HTTP経由でのパッチの適用
$ rbenv install --patch 1.9.3-p429 < <(curl -sSL http://git.io/ruby.patch)

# 複数のパッチを適用
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429

チェックサム検証

もし、shasumopenssl、またはsha256sumツールがインストールされているのであれば、 ruby-buildはダウンロードされた各パッケージのインストール前に、 自動的にSHA2チェックサム検証を行います。

ミラーからのパッケージのダウンロード

ruby-buildは、最初にAmazonのCloudFront上にホストされたミラーから、 パッケージをダウンロードすることを試みます。 もし、ミラーのサーバーがダウンしている、またはそのダウンロードに不具合がある等の理由で、ミラー上でパッケージが利用出来なければ、 ruby-buildは定義ファイルに指定されている公式のURLにフォールバックします。

RUBY_BUILD_MIRROR_URL環境変数を指定することで、ruby-buildに別のミラーを設定することが可能で、 これは例えば、あなた自身のローカルのミラーを実行したい場合に便利です。 パッケージミラーのURLはこの変数を加えることで、パッケージファイルのSHA2チェックサムと一緒に構築されます。

もし、SHA2プログラムがインストールされていなければ、ruby-buildはミラーからのダウンロードをスキップし、 代わりに公式のURLを使用します。 RUBY_BUILD_SKIP_MIRROR環境変数を設定することで、 ミラーを経由することをruby-buildに強制させることが可能です。

公式のruby-buildのダウンロードミラーは、 37signals社をスポンサーをしています。

ダウンロードしたパッケージのキャッシュ

RUBY_BUILD_CACHE_PATH環境変数を設定することで、ダウンロードしたパッケージファイルのローカルキャッシュを、 ruby-buildに保持するように指示することが可能です。 この設定を行い、最初のダウンロードが成功した後に、このディレクトリにパッケージファイルが保持されると、 その後のruby-buildrbenv installの実行はこれを再利用します。

rbenv installコマンドは、デフォルトでこのパスを~/.rbenv/cacheにするため、 ほとんどのケースで単純にこのディレクトリをサウ製することで、ダウンロードのキャッシュを有効にすることが可能です。

インストール後にビルドディレクトリを保持

ruby-buildrbenv installのどちらも、 インストール後にダウンロードされたソースを保持するようにruby-buildに伝える-kまたは--keepフラグを受け入れます。 これは、Rubyと一緒にgdbmemprofを使用する必要があるケースで便利かもしれません。

ソースコードは、rbenv installコマンドで--keepが使用された場合は、 ~/.rbenv/sourcesディレクトリーツリーに並列に保持されます。 ruby-build--keepを使用する場合は、 環境変数RUBY_BUILD_BUILD_PATHを指定して、ソースコードの置き場所を指定する必要があります。

ヘルプ

一般的な問題の解決方法については、ruby-build wikiを参照して下さい。

もし、wiki上に回答が無ければ、 Issues trackerでイシューを作成して下さい。 その際には、ビルドに失敗した完全なビルドログを含めるようにして下さい。

ライセンス

(The MIT License)

Copyright (c) 2012-2013 Sam Stephenson

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

 Back to top

© 2010 - 2017 STUDIO KINGDOM