2013年4月4日木曜日

Mac OS X でrubyのバージョン管理

Mac OS X でrubyのバージョン管理

rbenvを使います。 そのために、opensslとreadlineとlibyaml入れます。
# brew 入れてない場合入れて /usr/local に入ります
$ /usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)"
# 指定の場所 ~/brew 以下とかに入れたい場合
$ git clone https://github.com/mxcl/homebrew.git ~/brew

# OS X に標準添付されている opensslは、SEGV を引き起こす事があるため
$ brew install openssl

# OS X 標準添付の readlineは libedit なので
$ brew install readline

# 標準添付ライブラリの yaml パーサーの psych に必要
$ brew install libyaml

rbenvをgithub から インストールする

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ mkdir -p ~/.rbenv/plugins
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

~/.bashrc に以下の行を追加

$ vi ~/.bashrc
  export PATH="$HOME/.rbenv/bin:$PATH"
  eval "$(rbenv init -)"
# 設定し終わったら
$ source .bashrc

インストールできるrubyのバージョンを確認する

$ rbenv install --list

ruby buildを使ってruby をインストールする

$ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl) --with-libyaml-dir=$(brew --prefix libyaml)"  rbenv install 1.9.3-p429

$ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)"  rbenv install 2.0.0-p0

$ RUBY_CONFIGURE_OPTS="--enable-shared --with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)"  rbenv install 2.0.0-p195

インストールしたrubyを確認する

$ rbenv versions

バージョンを指定してrubyを有効にする

$ rbenv global 2.0.0-p0

pathを通るようにしておく

OS X なら /etc/paths に /Users/<ユーザ名>/.rbenv/shims を先頭に書いてあげて、pathが通るようにしておく

余談

というかメモ
# ちなみに、これを書いたときの brewのstableのrubyは 2.0.0-p0でした
$ brew info ruby
ruby: stable 2.0.0-p0, HEAD

# rbenv入れる前にインストールされてたrubyのバージョン
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]

# gem list rubyのバージョンによってgem listは変わる
$ gem list

*** LOCAL GEMS ***

archive-tar-minitar (0.5.2)
bigdecimal (1.1.0)
chef (11.4.0)
childprocess (0.3.9)
diff-lcs (1.1.3)
erubis (2.7.0)
ffi (1.6.0)
highline (1.6.16)
i18n (0.6.4)
io-console (0.3)
ipaddress (0.8.0)
json (1.5.4)
log4r (1.1.10)
mime-types (1.21)
minitest (2.5.1)
mixlib-authentication (1.3.0)
mixlib-cli (1.3.0)
mixlib-config (1.1.2)
mixlib-log (1.4.1)
mixlib-shellout (1.1.0)
net-scp (1.0.4)
net-ssh (2.6.6, 2.2.2)
net-ssh-gateway (1.2.0)
net-ssh-multi (1.1)
ohai (6.16.0)
rake (0.9.2.2)
rdoc (3.9.4)
rest-client (1.6.7)
rspec (2.11.0)
rspec-core (2.11.1)
rspec-expectations (2.11.3)
rspec-mocks (2.11.3)
systemu (2.5.2)
vagrant (1.0.7)
yajl-ruby (1.1.0)

# そして
$ rbenv shell 1.9.3-p392
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin11.4.2]

$ gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
io-console (0.3)
json (1.5.5)
minitest (2.5.1)
rake (0.9.2.2)
rdoc (3.9.5)

# vagrant(ベイグラント)を入れてみる
$ gem install vagrant

# えっw
$ vagrant
bash: vagrant: command not found

# gem install とか uninstall とかの度に必要になってくる
$ rbenv rehash

# 使えるようになる
$ vagrant

    -v, --version                    Print the version and exit.
    -h, --help                       Print this help.

Available subcommands:
     box
     destroy
     gem
     halt
     init
     package
     provision
     reload
     resume
     ssh
     ssh-config
     status
     suspend
     up

For help on any individual command run `vagrant COMMAND -h`

# めんどいので 下記を入れて 自動で rehashしてくれるようにする
$ gem install rbenv-rehash

# rehashされて、使えるようになってますね。
$ rails -v
Rails 3.2.13

おしまい

0 件のコメント:

コメントを投稿