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
thin
や unicorn
など 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
を実行していた。