2018年以降の記事はGitHub Pagesに移行しました

複数のRuby環境の管理・切替ができるrvmをインストールした

あらすじ

先にWindowsにてRubyのバージョン管理ができるpikをインストールしていたので、今度はWindows以外にrvmをインストールする。

まとめ

とりあえず以下のコマンドを覚える。

  • rvm list known
    • インストールできるRubyの一覧
  • rvm list
    • インストールしているRubyの一覧
  • rvm install x.x.x
    • インストール
  • rvm use x.x.x
    • Rubyの切り替え

事前準備

  • 既にインストールされていたRubyは全部消した。

手順

インストールのため下記コマンドをうつ。

$ bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

ホームディレクトリに.rvmが生成される。list knownでインストールできるRuby一覧が表示される。
(2012/04/07追記)command not foundが出る場合はPATHが通ってない。

Installing RVM to /Users/kk_Ataka/.rvm/
Adding rvm PATH line to /Users/kk_Ataka/.bashrc /Users/kk_Ataka/.zshrc.
RVM sourcing line found in /Users/kk_Ataka/.bashrc.

$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p352]
[ruby-]1.8.7-head
[ruby-]1.9.1-p378
[ruby-]1.9.1[-p431]
[ruby-]1.9.1-head
[ruby-]1.9.2-p180
[ruby-]1.9.2[-p290]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3[-p0]
[ruby-]1.9.3-head
ruby-head

# GoRuby
goruby

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.1
jruby-1.6.2
jruby-1.6.3
jruby-1.6.4
jruby[-1.6.5]
jruby-head

# Rubinius
rbx-1.0.1
rbx-1.1.1
rbx-1.2.3
rbx-1.2.4
rbx[-head]
rbx-2.0.0pre

# Ruby Enterprise Edition
ree-1.8.6
ree[-1.8.7][-2011.03]
ree-1.8.6-head
ree-1.8.7-head

# Kiji
kiji

# MagLev
maglev[-head]
maglev-1.0.0

# Mac OS X Snow Leopard Only
macruby[-0.10]
macruby-nightly
macruby-head

# IronRuby -- Not implemented yet.
ironruby-0.9.3
ironruby-1.0-rc2
ironruby-head

とりあえず1.8系のために1.8.7、1.9系のために1.9.3をインストールする。installコマンドを使う。

$ rvm install ruby-1.8.7
Installing Ruby from source to: /Users/kk_Ataka/.rvm/rubies/ruby-1.8.7-p352, this may take a while depending on your cpu(s)...

ruby-1.8.7-p352 - #fetching
ruby-1.8.7-p352 - #downloading ruby-1.8.7-p352, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 4108k  100 4108k    0     0  1718k      0  0:00:02  0:00:02 --:--:-- 2576k
ruby-1.8.7-p352 - #extracting ruby-1.8.7-p352 to /Users/kk_Ataka/.rvm/src/ruby-1.8.7-p352
ruby-1.8.7-p352 - #extracted to /Users/kk_Ataka/.rvm/src/ruby-1.8.7-p352
Applying patch 'stdout-rouge-fix' (located at /Users/kk_Ataka/.rvm/patches/ruby/1.8.7/stdout-rouge-fix.patch)
ruby-1.8.7-p352 - #configuring
ruby-1.8.7-p352 - #compiling
ruby-1.8.7-p352 - #installing
Retrieving rubygems-1.8.10
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  243k  100  243k    0     0   533k      0 --:--:-- --:--:-- --:--:-- 1113k
Extracting rubygems-1.8.10 ...
Removing old Rubygems files...
Installing rubygems-1.8.10 for ruby-1.8.7-p352 ...
Installation of rubygems completed successfully.
ruby-1.8.7-p352 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.8.7-p352 - #importing default gemsets (/Users/kk_Ataka/.rvm/gemsets/)
Install of ruby-1.8.7-p352 - #complete
$ rvm install ruby-1.9.3
Installing Ruby from source to: /Users/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...

ruby-1.9.3-p0 - #fetching
ruby-1.9.3-p0 - #downloading ruby-1.9.3-p0, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9330k  100 9330k    0     0  1775k      0  0:00:05  0:00:05 --:--:-- 2094k
ruby-1.9.3-p0 - #extracting ruby-1.9.3-p0 to /Users/kk_Ataka/.rvm/src/ruby-1.9.3-p0
ruby-1.9.3-p0 - #extracted to /Users/kk_Ataka/.rvm/src/ruby-1.9.3-p0
Fetching yaml-0.1.4.tar.gz to /Users/kk_Ataka/.rvm/archives
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  460k  100  460k    0     0   155k      0  0:00:02  0:00:02 --:--:--  261k
Extracting yaml-0.1.4.tar.gz to /Users/kk_Ataka/.rvm/src
Configuring yaml in /Users/kk_Ataka/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/kk_Ataka/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/kk_Ataka/.rvm/usr
ruby-1.9.3-p0 - #configuring
ruby-1.9.3-p0 - #compiling
ruby-1.9.3-p0 - #installing
Removing old Rubygems files...
Installing rubygems-1.8.10 for ruby-1.9.3-p0 ...
Installation of rubygems completed successfully.
ruby-1.9.3-p0 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.3-p0 - #importing default gemsets (/Users/kk_Ataka/.rvm/gemsets/)
Install of ruby-1.9.3-p0 - #complete

gemは最新版? が入ってしまった。

※ところで、rvmでインストールしたRubyたちは~/.rvm/rubies下に入れられていく。Ruby切り替え時にパスなんかをセットしてくれるスクリプトが.rvm/scriptの下にあるのでシェル起動時に実行してくれるようにする必要がある。

if [[ -s .rvm/scripts/rvm ]] ; then source .rvm/scripts/rvm ; fi

インストールしたRubyはlistコマンドで確認できる。

$ rvm list

rvm rubies

   ruby-1.8.7-p352 [ i686 ]
   ruby-1.9.3-p0 [ x86_64 ]

Rubyを切り替えるときはuseコマンドを使う。1.8に切り替え。

$ rvm use 1.8.7
Using /Users/kk_Ataka/.rvm/gems/ruby-1.8.7-p352
$ rvm list

rvm rubies

=> ruby-1.8.7-p352 [ i686 ]
   ruby-1.9.3-p0 [ x86_64 ]
$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin10.8.0]

.rvm/rubies/ruby-1.8.7xxx/bin下のものを使っている。

$ which ruby
/Users/kk_Ataka/.rvm/rubies/ruby-1.8.7-p352/bin/ruby
$ which gem
/Users/kk_Ataka/.rvm/rubies/ruby-1.8.7-p352/bin/gem
$ gem -v
1.8.10

bundlerとrakeはデフォルトで入っている模様。

$ gem list

*** LOCAL GEMS ***

bundler (1.0.21 ruby)
rake (0.9.2)

次は1.9に切り替え。

$ rvm use 1.9.3
Using /Users/kk_Ataka/.rvm/gems/ruby-1.9.3-p0
$ rvm list

rvm rubies

   ruby-1.8.7-p352 [ i686 ]
=> ruby-1.9.3-p0 [ x86_64 ]
$ ruby -v
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin10.8.0]

きちんと1.9に切り替わっている。パスも。

$ which ruby
/Users/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
$ which gem
/Users/kk_Ataka/.rvm/rubies/ruby-1.9.3-p0/bin/gem
$ gem -v
1.8.10
$ gem list

*** LOCAL GEMS ***

bundler (1.0.21 ruby)
rake (0.9.2)

rvm listで"=>"の矢印ができていれば切り替え成功。

切り替えたのに矢印が出ていなかったら、rvm導入前に既にインストールしているRubyが優先的に見られている?*1 pikでやらかした時みたいにパスがうまく書き換わっていないという凡ミスをしている可能性があるかもしれない。

今後

rvmには一つのRubyバージョンに対して複数のgem環境を持たせることもできるらしい。1.8.7のtest環境用とかRails動かす用みたいな感じで。これはまた今度学ぶ。

*1:ただ、rvm環境以外のRubyとも行き来ができる(rvm system)らしいのでよくわからん。