こんにちは、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が最新と表示されました(上述のスクリーンショット)。