ruby-install: 任意のバージョンのRubyをスマートにビルド・インストールするツール

こんにちは、hachi8833です。明日の週刊Railsウォッチを準備していてちょっと便利なツールを見つけましたのでご紹介します。

ruby-install

ruby-installはRubyのビルド・インストールに特化したツールです。rbenvやRVMなどのRubyバージョン管理と共存できるので、rvenvやRVMなどだけでは足りない部分を補ってくれます。

現状のrbenv + ruby-buildで事足りているのであれば無理にインストールする必要はありませんが、ruby-buildにないバージョンをちょっと使ってみたい場合などに便利だと思います。

rbenvにはruby-buildというプラグインがあり、Rubyのバージョン情報取得とビルドを担当します。ruby-installはちょうどこのruby-buildの代わりに使うイメージです。

ruby-installはrbenvの作者からも好意的な評価をいただいているようです↓。GitHubの☆も1000個を超えています。

私はrbenvを使っていますので、以下rbenvを中心に説明します(参考: rbenvでRubyをインストールして新規Rails開発環境を準備する)。

特徴

  • Rubyのバージョンをいろんな指定方法で即インストールできる
    • ruby-install --latestのようなざっくりとした指定も可
  • Ruby以外にもJRuby、Rubinius、MagLev、mrubyもインストールできる
  • パッチ、ビルドオプション、インストールディレクトリ、md5などの照合などを自由に指定できる
  • Chefでも使える
  • HomebrewやaptやMacportsなどさまざまな方法でMac/Linux/FreeBSDなどにインストールできる

trunk/HEADはサポートしないそうです。

たぶんこんなときに便利

  • rbenv install -lのリストにないレアなバージョンをインストールしたい
  • JRubyやRubinius、MagLevといったエッジなRubyをインストールしたい
  • rbenvやRVMだとHomebrew周りの依存関係などが原因でビルドに失敗する
  • パッチを即適用したい
  • Rubyの最新バージョン番号をすっと確認したい

繰り返しますが、普段使いならrbenv + ruby-buildで十分だと思います。

インストール

以下が必要です(参照元)。

  • bash >= 3.x
  • wget > 1.12 または curl
  • md5sum、md5、openssl md5
  • tar
  • bzip2
  • patch (--patchオプションを使う場合)
  • gcc >= 4.2またはclang

Macの場合はHomebrewでインストールできます。

brew install ruby-install

注意

ruby-installは無指定の場合、~/.rubiesディレクトリにRubyをインストールします。デフォルトのインストールディレクトリをrbenvの~/.rbenv/versionsに変更したかったのですが、それ用の設定ファイルや環境変数が見当たらないので、~/.bashrcに以下を追記してしのぎました。

alias ruby-install='ruby-install -i ~/.rbenv/versions'

~/.rbenv/versionsにインストールすると、ちゃんとローカルの.ruby-version(rbenv local xxxで作成する)のバージョンに合わせて~/.rbenv/shims以下のgemリンクもバージョンに合わせて切り替わりました。rbenv rehashを実行する必要もなく、~/.rbenv/default-gemsに記述したデフォルトgemも自動でインストールされました。

注意

少なくともRubiniusでは~/.rbenv/shims以下のgemリンクは切り替わってくれませんでした。rbenvへの影響がどうしても心配な場合はデフォルトの~/.rubiesディレクトリにインストールするのが無難かもしれません。

使い方

以下はrbenvを使用していることが前提です。

オプションについてはman ruby-installで詳しい使い方を参照できます。

ruby-installと打つと最新バージョンのRubyを表示してくれます。rbenv install -lだと利用可能な全バージョンがドバっと表示されるので、「今最新バージョンっていくつだっけ?」がすぐわかる分気が利いています。

初めて実行するときはバージョン情報のfetchに多少時間がかかるようです。

インストールの例

最新のRubyをインストール
ruby-install --latest ruby
取得元を指定
ruby-install -M http://www.mirrorservice.org/sites/ftp.ruby-lang.org/pub/ruby ruby 2.0.0-p645
パッチを適用
ruby-install -p https://raw.github.com/gist/4136373/falcon-gc.diff ruby 1.9.3-p551

Rubyのアンインストール

公式ページではrm -rf ~/.rubies/ruby-2.4.0のように手動で削除せよとのことです。アンインストールの面倒までは見ないんですね。

rbenvディレクトリにインストールした場合は普通にrbenv uninstall 2.4.0のように削除できます。

追伸: ruby-installを使うまでの経緯

  • Macbook ProにRubinius 3.69をrbenvでインストールしようとした(rbenv install rbx-3.69
  • rbenvでエラー: 現在のLLVMではビルドできない: brew tap homebrew/versions ; brew install llvm36でインストールせよとの指示が表示された
  • しかし実行するとHomebrewではLLVMの3.7と3.8しか取れず、3.6を取れない
  • Rubiniusのissue #3655で中の人がruby-installをおすすめしていた
  • ruby-installを導入し、ruby-install --install-dir ~/.rbenv/versions/rbx-3.69 rbx-3.69を実行したところストンとインストールできた

おまけ: 記事執筆時点でrbenv install -lでバージョンリストを取るとRubiniusの最新バージョンは3.69でした(下のスクリーンショット)が、ruby-installのリストでは3.70が最新と表示されました(上述のスクリーンショット)。

関連記事

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833 コボラー、ITコンサル、ローカライズ業界を経てなぜかWeb開発者志願。 これまでにRuby on Rails チュートリアルの大半、Railsガイドのほぼすべてを翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

Rubyスタイルガイドを読む

BigBinary記事より

ActiveSupport探訪シリーズ