2013-03-19

rbenv で複数バージョンの Ruby をインストール

rbenv でも複数のバージョンの Ruby をインストール・切り替えが出来ると聞いたので試してみた。

rbenv と ruby-build のインストール

予め必要とされるライブラリーのインストール。

$ sudo apt-get install build-essential libreadline-dev libssl-dev zlib1g-dev

次に必要とされる rbenv コマンドと ruby-build コマンドをインストールする。rbenv はローカル環境にインストールするけど、ruby-build コマンドはシステムにインストールする。

rbenv のインストール

rbenv は git リポジトリーからインストールする。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv

.bashrc もしくは .zshrc に次のコードを追記:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
ruby-build のインストール

ruby-build も git リポジトリーからインストールする。

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

以上で、rbenv と ruby-build のインストールは終了。

Ruby のインストール

rbenv は rvm と違って ruby のインストールをデフォールトで行なわない。

現在最新の Ruby 2.0.0-p0 と 1.9 系最後の 1.9.3-p392 をインストールする。

まず、rbenv でインストール可能な ruby を確認。

$ rbenv install -l
Available versions:
  1.8.6-p383
  1.8.6-p420
  1.8.7-p249
  1.8.7-p302
  1.8.7-p334
  1.8.7-p352
  1.8.7-p357
  1.8.7-p358
  1.8.7-p370
  1.8.7-p371
  1.9.1-p378
  1.9.2-p180
  1.9.2-p290
  1.9.2-p318
  1.9.2-p320
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
  1.9.3-p286
  1.9.3-p327
  1.9.3-p362
  1.9.3-p374
  1.9.3-p385
  1.9.3-p392
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-p0
  2.0.0-preview1
  2.0.0-preview2
  2.0.0-rc1
  2.0.0-rc2
  2.1.0-dev
  jruby-1.5.6
  jruby-1.6.3
  jruby-1.6.4
  jruby-1.6.5
  jruby-1.6.5.1
  jruby-1.6.6
  jruby-1.6.7
  jruby-1.6.7.2
  jruby-1.6.8
  jruby-1.7.0
  jruby-1.7.0-preview1
  jruby-1.7.0-preview2
  jruby-1.7.0-rc1
  jruby-1.7.0-rc2
  jruby-1.7.1
  jruby-1.7.2
  jruby-1.7.3
  maglev-1.0.0
  maglev-1.1.0-dev
  rbx-1.2.4
  rbx-2.0.0-dev
  rbx-2.0.0-rc1
  ree-1.8.6-2009.06
  ree-1.8.7-2009.09
  ree-1.8.7-2009.10
  ree-1.8.7-2010.01
  ree-1.8.7-2010.02
  ree-1.8.7-2011.03
  ree-1.8.7-2011.12
  ree-1.8.7-2012.01
  ree-1.8.7-2012.02

rvm と同じく数が多いのも嬉しい。今のぼくは、素の ruby しかインストールしないので、それほどありがたみはないけれど...

少し嫌なのは、rvm と違ってパッチ番号まで指定しないといけないことかな。rvm なら 1.9.3 と指定すれば Ruby 1.9.3 の最新パッチがインストールされたけど、rbenv は 1.9.3-p392 と指定しないといけない。面倒。

先に書いた通り 2.0.0 と 1.9.3-p392 をインストールする。インストールには rbenv install を使う。

$ rbenv install 2.0.0-p0
Downloading ruby-2.0.0-p0.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
Installing ruby-2.0.0-p0...
Installed ruby-2.0.0-p0 to /home/masayuki/.rbenv/versions/2.0.0-p0

$ rbenv install 1.9.3-p392
...

Ruby の変更

今、使っている ruby の確認。

$ rbenv version
system (set by /home/ataka/.rbenv/version)
$ ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux]

おやおや。昔、システムにインストールした Ruby が動いてる。

今、rbenv でインストールしている ruby のバージョンを確認。

$ rbenv versions
* system (set by /home/ataka/.rbenv/version)
  1.9.3-p392
  2.0.0-p0

rbenv global でバージョンを指定。

$ rbenv global 2.0.0
rbenv: version `2.0.0' not installed
$ rbenv global 2.0.0-p0
$ rbenv rehash
$ rbenv version
2.0.0-p0 (set by /home/ataka/.rbenv/version)
$ ruby --version
ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]

バージョン番号だけじゃ Ruby の変更は出来ないのか。ちゃんとパッチ番号まで含めて変更。rbenv rehash を忘れずに。また railsなど、コマンドが付いてくるタイプのgemをインストールしたとき、rbenv rehashを実行する必要がある とのこと。

特定のディレクトリーでの Ruby 指定

rbenv --local を使うと、そのディレクトリー以下での Ruby のバージョンを指定できる。

$ cd ~/project/first-project/
$ rbenv local 2.0.0-p0

bundler コマンドの --path オプションを併用することで、特定のディレクトリー下の gem も指定することができる。

$ bundle install --path vendor/bundle
$ bundle list

あとがき

rvm は cd などの shell のコマンドを上書きすると聞き、不安になったので rbenv をインストールしてみた。マシンによっては rvm が残ってるものもあるので、移行しなきゃなあ。

rbenv rehash の存在が面倒だけど、それ以外は rvm よりスマートな気がする。

ref

No comments:

Post a Comment