7月1日のハッカソンではrubyを使ってみたいな、と思っていた。
そこでPCに初めから入ってるrubyのバージョンを調べてみたら
$ ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
せめて1.9にしたいなと思ったけど、もとから入ってるrubyに上書きする形でバージョンアップはしたくなかったので、
rubyのバージョン管理が楽になるツールを探してみた。
するとrbenvとかrvmとかがあるらしいとわかったけど、
「設定がいろいろめんどくさくて、もういやだ!!」
みたいな記事を見つけたりもして、その中でchrubyなるものを見つけたので、
それを使ってみることにした。
すでに日本語で書かれたブログ記事があるけど、自分のためにも書いておく。
chrubyのインストール
homebrewで簡単に入った。
$ brew install chruby
で.bashrcとか.zshprofileとかに
source /usr/local/share/chruby/chruby.sh
source /usr/local/share/chruby/auto.sh
を追加して、再読み込みする。これでchrubyが使えるようになる。
ただし、大事なことがあってchrubyをインストールするだけで他バージョンのrubyをインストールできる訳ではない。
rubyは自分で別バージョンをインストールする必要がある。
ruby-installかruby-buildのようにいろんなバージョンのrubyのインストール補助をしてくれるソフトが便利だと思う。
chrubyのデフォルトでは/opt/rubies
または~/.rubies
配下にインストールされたrubyを認識するようになっている。
rubyのインストール先は自分で設定してchrubyに教えてやることもできる(RUBIES
変数をいじればよい)けど、面倒なら/opt/rubies
か~/.rubies
配下にインストールするのが手っ取り早い。
chrubyの使い方
既に/opt/rubies
や~/.rubies
にrubyをインストールしていれば、現在利用できるruby一覧が次のコマンドで確認できる。
$ chruby
ruby-1.9.3-p448
ruby-2.0.0-p247
この中から自分が使いたいrubyを選ぶ。
たとえばこんな感じ
$ chruby 1.9.3
選んでからruby --version
で確認してみたらちゃんと変更されているはず。
ちなみに初めからOSにインストールされていたrubyに戻したいときは
$ chruby system
を実行すれば、もとにもどる。
chrubyの次回アップデートで期待されること
~/.rubies
や/opt/rubies
にrubyをインストールした直後、同じターミナルでchruby
としても、インストールしたrubyが見つからなかった。
でも新規ウィンドウで開いてchruby
を実行するとインストールされたrubyがリスト表示される。
このことはissueにあがっていて、次期バージョンで改善してくれるらしい。
待ち遠しいなぁ。
その他:ruby-build VS ruby-install
rubyのインストーラーはruby-build
とruby-install
のどっちがいいんだろうと思って結局どっちもhomebrewでインストールしてみた。
先にruby-build
で1.9と2.0をインストールしてみた(特にエラーも起きなかった)から、ruby-install
で1.8を入れてみようと思ったらエラーをはいてinstallできなかった。
?と思ってruby-build
で同じく1.8をインストールしようとすると、次のようなエラーをはいた。
$ ruby-build 1.8.7-p374 ~/.rubies/ruby-1.8.7-p374
ERROR: This package must be compiled with GCC, but ruby-build couldn't
find a suitable `gcc` executable on your system. Please install GCC
and try again.
DETAILS: Apple no longer includes the official GCC compiler with Xcode
as of version 4.2. Instead, the `gcc` executable is a symlink to
`llvm-gcc`, a modified version of GCC which outputs LLVM bytecode.
For most programs the `llvm-gcc` compiler works fine. However,
versions of Ruby older than 1.9.3-p125 are incompatible with
`llvm-gcc`. To build older versions of Ruby you must have the official
GCC compiler installed on your system.
TO FIX THE PROBLEM: Install Homebrew's apple-gcc42 package with this
command: brew tap homebrew/dupes ; brew install apple-gcc42
You will need to install the official GCC compiler to build older
versions of Ruby even if you have installed Apple's Command Line Tools
for Xcode package. The Command Line Tools for Xcode package only
includes `llvm-gcc`.
BUILD FAILED
要するに私が使ってるPCにはruby1.8に必要なバージョンのgccコンパイラが入ってない。
ruby-install
では
(いろいろエラーはいて・・・)
make[1]: *** [stubs.o] Error 1
make: *** [all] Error 1
!!! Compiling ruby 1.8.7-p371 failed!
で、別にエラーちゃんと読んだらわかるんだろうけど、ruby-build
の方がruby1.8のインストールに関しては対応策が表示されてわかりやすかった。
一時ファイル保存先は
ruby-install
でrubyをインストールするとき~/src
で
ruby-build
では/var/folders/なんか長いハッシュ/ruby-build・・・
みたいな感じになってた。
一時フォルダはruby-install
の方がわかりやすい気がする。
またそれぞれのソフトを作った人をみると
ruby-install
: postmodern(chrubyの作者)
ruby-build
: Sam Stephenson(rbenvの作者)
だった。
chruby
を作ったのがruby-install
の作者と同じで、ruby-install
のデフォルトrubyインストール先が~/.rubies
であることを考えると、ruby-install
の方が食い合わせはよいのかもしれない。
ruby-build
をrbenv
なしで使おうとするとrubyのインストール先をフルパスで指定しなきゃ行けないのが結構めんどくさかったりする。
というわけで、結局ruby1.8のインストールもruby-install
の問題ではなくgccコンパイラのせいだったわけだし、chruby
を使うのであればruby-installで良いんじゃないかなぁ。
開発が始まったのはruby-build
の方が先でruby-install
の方が新しいので、情報はruby-build
の方が多い気がする。でもどっちのソフトも元々できることがそんなに多くないことを思うと、どっちを選んだからってすごい差が出るようにも思えない。元々使っていたのがrbenv
の人ならruby-build
のままでいいと思う。
参考リンク
- postmodern/chruby · GitHub
- Rubyの複数バージョン管理にchrubyを使う - PiyoPiyoDucky
- Towards Simplicity: From rbenv to chruby | zaiste.net
- Getting started with chruby - Literate Programming
- Chruby
- postmodern/ruby-install · GitHub
- sstephenson/ruby-build · GitHub
- sstephenson/rbenv · GitHub
- もうひとつのRubyインストーラ: ruby-install | ユニキャストラボ