Tech Racho エンジニアの「?」を「!」に。
  • 開発

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

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

ruby-install

ruby-installはRubyのビルド・インストールに特化したツールです。rbenvやRVMなどのRubyバージョン管理と共存できるので、rbenvや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が最新と表示されました(上述のスクリーンショット)。

関連記事

[Rails 5] rbenvでRubyをインストールして新規Rails開発環境を準備する


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。