RVM(Ruby Version Manager)によるRubyのインストール

現在,MacBook Pro(Mac OS X 10.6.6; Snow Leopard)にRuby開発環境の構築を試みているが,とりあえず,1.9系で安定している.

しかし,多くの既存システムが1.8系で動いている昨今,また今後1.8系は衰退し,徐々に1.9系に代わっていくという過渡期の中で,両方の開発環境を使いこなす業も必要である.

そこで,RVM(Ruby Version Manager)である.

バージョン管理というだけあって,PCに複数のRuby環境を構築できるツールである.
例えば,1.8系と1.9系をインストールして,それを簡単に切り替えできるというシロモノである.

RVM: Ruby Version Manager – RVM Ruby Version Manager – Documentation

これによると,「一般ユーザ」としてホームディレクトリ内に環境構築する方法と,「管理者ユーザ」としてシステムワイドに環境構築する方法と2種類ある.

多くのサイトでは前者の「一般ユーザとして」の使い方を紹介しているが,ここではシステムワイドな方法でトライしてみることにする.

事前に必要な処理を行っておく.

まずは,portsを使って git-codeをインストール
git-coreをインストールするとそれに依存するパッケージ(readline等)もインストールしてくれる.

$ sudo port install git-core

さて,これからはsudoでなくrootのシェルで作業したいので,rootのパスワードを設定しておく.
(通常,Mac OS Xでrootで作業する人は少ないと思うのだけれど,rootのパスワードを設定しておいた方が何かと都合が良いかも)

$ sudo passwd root

管理者(root)に変更する.

$ su -

ここで,現在のシェルを確認する.

# echo $SHELL
/bin/sh

現在のシェルがBourne Shell(sh)だったので,chshでシェルをbashに変更する.

# chsh

# Changing user information for root.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Login: root
Uid [#]: 0
:
Shell: /bin/bash
:
Home Phone:

再度現在のシェルを確認しておく.

# echo SHELL
/bin/bash

次に,gitなどPortsで入れたコマンドを有効にするために,環境変数PATHを設定する.
プロンプトの設定も含めて,ログイン時に有効にしたいため,~/.profileを作成する.

# vi ~/.profile

[~/.profile]

export PS1="[\u@\h \W]\\$ "

alias ls="ls -FG"
alias rm="rm -i"

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

~/.proileを有効にする.

# source ~/.profile

さて,ようやくRVMのインストール...
RVMのサイトのInstalling RVM System Wideに書いてあるとおり...

# bash < <( curl -L http://bit.ly/rvm-install-system-wide )

こうコマンドをたたけば,上記サイトからスクリプトやらなんやらをダウンロードして,勝手にインストールしてくれる.

すべてのユーザでRVMが利用できるように,/etc/bashrcに次のような1行を追加.

[/etc/bashrc]

### RVM
[[ -s '/usr/local/rvm/scripts/rvm' ]] && source '/usr/local/rvm/scripts/rvm'

一般ユーザに切り換えてrvmを試してみる.

# exit
$ rvm -v
rvm 1.2.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.begin
rescueend.com/]

続いてrootでの起動を確認.

$ su -
# rvm -v
rvm 1.2.6 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.begin
rescueend.com/]

それでもって,次のようにコマンドをたたいて,

# type rvm | head -1
rvm is a function

と出ればOKらしい...

インストールによって作られた /usr/local/bin のgroupパーミッションが気になる...

# ls -l /usr/local/
total 0
drwxrwsr-x     7 root    rvm      238 Feb 10 15:29 bin/
drwxrwsr-x    20 root    rvm      680 Feb 10 15:29 rvm/
drwxr-xr-x     3 root    wheel    102 Feb 10 13:21 src/

おそらく /usr/local 配下はRVMでしか使わないと思うけれど,一応変更しておく.

# chgrp wheel /usr/local/bin

それでは,現在のRVMでインストールできるRubyのバージョンを表示.

# rvm list known
# MRI Rubies
[ruby-]1.8.6[-p399]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p330]
[ruby-]1.8.7-head
[ruby-]1.9.1-p243
[ruby-]1.9.1[-p378]
[ruby-]1.9.1-p429
[ruby-]1.9.1-head
[ruby-]1.9.2-preview1
[ruby-]1.9.2-preview3
[ruby-]1.9.2-rc1
[ruby-]1.9.2-rc2
[ruby-]1.9.2[-p136]
[ruby-]1.9.2-head
ruby-head
:

readlineがシステム上にあるかどうか確認.

# port installed | grep readline
readline @6.1.002_0 (active)

あるね.それではRubyのバージョン1.2.9の最新パッチのものをインストールする.
irbで日本語が入力可能となるように忘れずにオプションもつけておく.

# rvm install ruby-1.9.2-head -C "--enable-shared=true,\
--with-readline-dir=/opt/local"

/usr/local/rvm/rubies/ruby-1.9.2-head, this may take a while depending on
your cpu(s)...

ruby-1.9.2-head - #fetching
Cloning from https://github.com/ruby/ruby.git, this may take a while depen
ding on your connection...

Cloning into /usr/local/rvm/repos/ruby-1.9.2-head...
remote: Counting objects: 31155, done.
remote: Compressing objects: 100% (14174/14174), done.
remote: Total 31155 (delta 23557), reused 22769 (delta 16230)
Receiving objects: 100% (31155/31155), 21.56 MiB | 794 KiB/s, done.
Resolving deltas: 100% (23557/23557), done.
Branch ruby_1_9_2 set up to track remote branch ruby_1_9_2 from origin.
Switched to a new branch 'ruby_1_9_2'
From https://github.com/ruby/ruby

* branch ruby_1_9_2 -> FETCH_HEAD
Already up-to-date.
Copying from repo to src path...
Running autoconf
ruby-1.9.2-head - #configuring
ruby-1.9.2-head - #compiling
ruby-1.9.2-head - #installing
ruby-1.9.2-head - Updating #rubygems to the latest.
Removing old Rubygems files...
Installing rubygems dedicated to ruby-1.9.2-head...
Retrieving rubygems-1.5.1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 285k 100 285k 0 0 34874 0 0:00:08 0:00:08 --:--:-- 51657
Extracting rubygems-1.5.1 ...
Installing rubygems for /usr/local/rvm/rubies/ruby-1.9.2-head/bin/ruby
Installation of rubygems completed successfully.
ruby-1.9.2-head - Updating #rubygems to the latest.
Removing old Rubygems files...
Installing rubygems dedicated to ruby-1.9.2-head...
Installing rubygems for /usr/local/rvm/rubies/ruby-1.9.2-head/bin/ruby
Installation of rubygems completed successfully.
ruby-1.9.2-head - adjusting #shebangs for (gem).
ruby-1.9.2-head - #importing default gemsets (/usr/local/rvm/gemsets/)
Install of ruby-1.9.2-head - #complete

とりあえず,きちんと /usr/local/rubies/.. に入ったようだ.

それでは,rubyのバージョンの確認.とりあえず現在の環境から.

# ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

続いて,RubyGemsのバージョン.

# gem -v
1.3.5

これらは,最初からMac OS Xに入っているRuby環境になる.

それでは,現在設定されているRVMのリストを表示してみる.

# rvm list
rvm rubies

ruby-1.9.2-head [ x86_64 ]

先ほどインストールした1.9.2の環境が表示されている.

それでは,その1.9.2の環境(ruby-1.9.2-head)に環境を切り換えてみる.

# rvm use ruby-1.9.2-head
Using /usr/local/rvm/gems/ruby-1.9.2-head

これだけ.
では,改めてRubyのバージョン確認.

# ruby -v
ruby 1.9.2p174 (2011-01-28 revision 30696) [x86_64-darwin10.6.0]

続いて,RubyGems.

# gem -v
1.5.1

すごい! きちんと1.9系の環境になってしまっている!
ついでに,現在の環境変数PATHの中身を確認してみる.

# echo $PATH
/usr/local/rvm/gems/ruby-1.9.2-head/bin:/usr/local/rvm/gems/ruby-1.9.2-head@gl
obal/bin:/usr/local/rvm/rubies/ruby-1.9.2-head/bin:/usr/local/rvm/bin:/opt/loc
al/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/b
in

きちんとruby 1.9.2へのパスが通っている.
もっと,詳しい1.9.2の環境について次のコマンドで確認してみる.

# rvm info

ruby-1.9.2-head:

system:
uname: "Darwin bullseye.local 10.6.0 Darwin Kernel Version 10.6.0: W
ed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386"

bash: "/bin/bash => GNU bash, version 3.2.48(1)-release (x86_64-
apple-darwin10.0)"
zsh: "/bin/zsh => zsh 4.3.9 (i386-apple-darwin10.0)"

rvm:
version: "rvm 1.2.6 by Wayne E. Seguin (wayneeseguin@gmail.com)
[http://rvm.beginrescueend.com/]"

ruby:
interpreter: "ruby"
version: "1.9.2p174"
date: "2011-01-28"
platform: "x86_64-darwin10.6.0"
patchlevel: "2011-01-28 revision 30696"
full_version: "ruby 1.9.2p174 (2011-01-28 revision 30696) [x86_64-
darwin10.6.0]"

homes:
gem: "/usr/local/rvm/gems/ruby-1.9.2-head"
ruby: "/usr/local/rvm/rubies/ruby-1.9.2-head"

binaries:
ruby: "/usr/local/rvm/rubies/ruby-1.9.2-head/bin/ruby"
irb: "/usr/local/rvm/rubies/ruby-1.9.2-head/bin/irb"
gem: "/usr/local/rvm/rubies/ruby-1.9.2-head/bin/gem"
rake: "/usr/local/rvm/gems/ruby-1.9.2-head/bin/rake"

environment:
PATH: "/usr/local/rvm/gems/ruby-1.9.2-head/bin:/usr/local/rvm/gems/ruby
-1.9.2-head@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-head/bin:/usr/local/rv
m/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/
bin:/usr/X11/bin"
GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.2-head"
GEM_PATH: "/usr/local/rvm/gems/ruby-1.9.2-head:/usr/local/rvm/gems/rub
y-1.9.2-head@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.2-head"
IRBRC: "/usr/local/rvm/rubies/ruby-1.9.2-head/.irbrc"
RUBYOPT: ""
gemset: ""

なんちゃらと,パスが長いのが気になるが,まぁ仕方が無いでしょう.

では,また一般ユーザに戻ってみる.

# exit
logout

$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

あれっ?一般ユーザではバージョン1.8.7のままなんだ.
再度,管理者ユーザに切り換えて...と

$ su -

# ruby -v
ruby 1.9.2p174 (2011-01-28 revision 30696) [x86_64-darwin10.6.0]

rootの方はやっぱりバージョン1.9.2...
ちなみに,次のコマンドを実行すると,デフォルトの(システムの)バージョン環境に戻る.

# rvm reset

# ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]

ほらね.
今度は,1.9.2に切り換えるときに「–default」オプションを入れてみる.

# rvm --default use ruby-1.9.2-head
Using /usr/local/rvm/gems/ruby-1.9.2-head

すると,今度は一般ユーザに切り替わっても...
(ターミナルを再起動させた方が良いかもしれない...)

$ ruby -v
ruby 1.9.2p174 (2011-01-28 revision 30696) [x86_64-darwin10.6.0]

$ gem -v
1.5.1

きちんと1.9.2の環境になっている.これで全てのユーザが1.9.2を利用することができるのじゃ.
凄いね.いつでも1.8の環境に戻せるし...

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中