Apr 20th, 2012

start using rbenv

rbenv 始めました。

Ruby管理ツールはずっと使うことを遠慮していたのだけど、サーバ環境のバージョンが違っていることで、問題出てきたので、入れてみました。
かねてより気になっていた rbenv の方を使ってみようということで。
入れるサーバは debian squeeze と Ubuntu 11.10 を想定してます。

Install

前準備で git, build-essential, libssl-dev が必要なので入れます。 後ついでに gem でビルドする際に必要になりそうな libxslt1-dev, libxml2-dev も一緒に入れます。

# apt-get install git-core build-essential libssl-dev libxslt1-dev libxml2-dev

これが終わったら Shared install of rbenv を参考に。

# cd /usr/local/
# git clone git://github.com/sstephenson/rbenv.git rbenv
# git clone git://github.com/sstephenson/ruby-build.git rbenv/plugins/ruby-build
# chgrp -R staff rbenv
# chmod -R g+rwxXs rbenv

この後、上のwikiには環境変数をユーザ単位で設定するようにに書いてあるけれど、これは /etc/profile.d/rbenv.sh に書くことにした。

bash rbenv.sh export RBENV_ROOT=/usr/local/rbenv export PATH="/usr/local/rbenv/bin:$PATH" eval "$(rbenv init -)"

Howto using

rbenv install

rbenv install でインストール可能なバージョンが確認出来るけど、表示されるリストが多いので以下のようにすると絞れる。

# rbenv install 2>&1|grep 1.9.3
  1.9.3-dev
  1.9.3-p0
  1.9.3-p125
  1.9.3-p194
  1.9.3-preview1
  1.9.3-rc1

試しに最新版をインストール。

# rbenv install 1.9.3-p194

オプションを指定したい場合は次の様にすれば良いようだ。

# CONFIGURE_OPTS="-with-readline-dir=/usr/" rbenv install 1.9.3-p194

結果的に次のバージョンを入れた。
1.9.2-p290 は Ubuntu 11.10 の ruby1.9.1 で入るバージョン。

# rbenv versions
  1.9.2-p290
  1.9.2-p318
  1.9.3-p0
  1.9.3-p194

rbenv rehash

インストールが終わったら、 rbenv rehash を必ずする必要があるので注意。gemでインストールを行った場合も同様。

thinunicorn など gem install xxx でbin以下にスクリプトが入るときには rbenv rehash が必要なようだ。

rbenv global & rbenv local

普段使うバージョンは rbenv global で、特定の環境(ディレクトリ)のみで使う場合には rbenv local で指定する。

# rbenv global 1.9.3-p194
# rbenv versions
  1.9.2-p290
  1.9.2-p318
  1.9.3-p0
* 1.9.3-p194 (set by /usr/local/rbenv/version)
$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
# su - www-data
$ mkdir -p vhost/dev
$ cd vhost/dev
$ rbenv local 1.9.2-p290
$ rbenv versions
* 1.9.2-p290 (set by /var/www/vhost/dev/.rbenv-version)
  1.9.2-p318
  1.9.3-p0
  1.9.3-p194
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]

ちなみに、特定のディレクトリ以下で使うバージョンは以下の方法でリセット出来る。

$ rbenv local --unset

2012-04-21 03:35 update
rbenv rehashの項の訂正。
ruby-build インストール後に実行可能な rbenv install xxx は、スクリプトの最後に rbenv rehash を実行していた。