hack のためのネタ帳, etc,,,

公式ページ等

参考になるページ等

使い方

以下の操作は、基本的に cygwin 上の bash で行っている。

Shebang に関する注意点

Ruby#shebang を参照

rbenv のインストール

まず最新版の rbenv を git リポジトリから ~/.rbenv に clone した後、shell の設定ファイルに rbenv の設定を追加し、shell を再起動するため、以下のコマンドを実行する。
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
cat <<'END' >> ~/.bashrc

# configuration for rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
END
exec $SHELL
公式ページでは bash の場合 ~/.bash_profile に設定するよう書かれているが ~/.bash_profile は login 時にしか読み込まれず、一旦ログアウトしないと設定が反映されないため ~/.bashrc に設定した方が良いと思う。同様の理由で zsh の場合も ~/.zshenv じゃなくて ~/.zshrc の方が良いだろう。

ただし、init サブコマンドで生成される初期化用スクリプトでは、後述する rehash サブコマンドも実行しているので、bash の起動が遅くなるのを嫌うなら、.bashrc ではなく .bash_profile の方に init サブコマンドで生成された設定内容結果から rehash を抜いた内容を設定しておいて、rehash は手動で行った方が良いかもしれない。

任意バージョンの ruby のビルド&インストール

まずビルドする前に、readline の開発用ライブラリを入れておくこと。
これを忘れると irb のラインエディタが悲しいことになる。
2013-03-27 現在の Cygwin には readline-devel というパッケージがないのだが、readline パッケージがそれに当る模様(category が Devel になっている)。

rbenv に管理させる ruby を手動でビルド&インストールするには ~/.rbenv/versions/ 以下に配置した適当な名前のフォルダ(通常はバージョン名にする)にインストールする必要がある。これは configure & make の際、--prefix オプションを用いることで行う。
例えば、ruby-1.9.3-p286 を rbenv に管理させたいなら以下のようにする。
cd /tmp
wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p286.tar.gz
tar zxvf ruby-1.9.3-p286.tar.gz
cd ruby-1.9.3-p286
./configure --prefix=$HOME/.rbenv/versions/1.9.3-p286
make install
rbenv rehash
最後に行っている rehash は rbenv 管理下にある各バージョンの ruby で利用出来る各種コマンドへのラッパースクリプトを ~/.rbenv/shims/ 以下に生成する機能。
これをやっておかないと、例えば特定のバージョン以降の ruby で追加されたコマンドだとか gems 等で後からインストールされたコマンド等があった場合に、それらのコマンドが利用出来ない。
このため、手動で rbenv に ruby をインストールした場合や、コマンド付きの gem をインストールした場合には、適宜 rehash を行う必要がある。

インストールされているすべてのバージョンの RubyGems にインストールしておく必要があるので若干面倒だが、gem install 時に自動で rvenv rehash してくれる rbenv-rehash って gem もあるらしい。インストールは以下のようにすれば良い。
gem install rbenv-rehash
インストールされているすべてのバージョンの RubyGems に一括でインストールするなら以下のようにすれば良いだろう。
for i in system $(rbenv versions --bare); do rbenv shell $i; rbenv version; gem install rbenv-rehash; done

Ruby 1.9 では不要だが、1.8 以前のバージョンでは、RubyGems の install も必要かもしれない。
RubyGems をインストールするには、shell サブコマンドでターゲットとする Ruby を指定して、RubyGems のソースディレクトリで setup.rb スクリプトを実行すれば良い。例えば ruby-1.8.7-p371 と rubygems-1.8.24 をインストールする場合以下のようになる。
cd /tmp
wget http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p371.tar.gz
tar zxvf ruby-1.8.7-p371.tar.gz
cd ruby-1.8.7-p371
./configure --prefix=$HOME/.rbenv/versions/1.8.7-p371
make
make install
rbenv rehash
cd /tmp
wget http://production.cf.rubygems.org/rubygems/rubygems-1.8.24.tgz
tar zxvf rubygems-1.8.24.tgz
cd rubygems-1.8.24
rbenv shell 1.8.7-p371
ruby setup.rb
rbenv rehash

ruby-build のインストール

rbenv に plugin として ruby-build を入れておくと ruby の各種バージョンをインストールするのが非常に簡略になる。
最新の ruby-build を install するには git リポジトリから ~/.rbenv/plugins/ruby-build に clone すれば良い。
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

ruby-build による任意バージョンの ruby のインストール

以下のサブコマンドとオプションを用いると、インストール可能な ruby のバージョン一覧が得られる。
rbenv install -l
例えば、2012-10-25 現在、cygwin でやってみると以下のような結果が得られた。

$ rbenv install -l

例えば 1.9.3-p286 のように /^ *[0-9]+\.[0-9]+\.[0-9]+-(dev|p[0-9]+|rc[0-9]+|preview[0-9]+)$/ のパターンになっているのが本家の ruby。
最初の3組の数字がバージョンで、ハイフン以降が同一バージョン内でのリリース情報。
新しい順に並べると以下のようになる。
  • dev は開発版(リリース前の最新版)
  • p[0-9]+ は公式リリース版(の patchlevel)
  • rc[0-9]+ はリリース候補版(Release Candicate)
  • preview[0-9]+ はプレビュー版(α版とかβ版に当たる)
個別のバージョンがどこからソースを拾ってくるのかは、~/.rbenv/plugins/ruby-build/share/ruby-build/ 以下にある各バージョン用のレシピ情報を見ないと分からないが、基本的には、以下のようになっている。 と言うことで、特殊な事情がない限りは、とりあえず目的のバージョンで p[0-9]+ の数字が一番が大きいものをインストールしておけば良い。

ただし、レシピ情報は必ずしも最新リリースに追従出来ているとは限らないので、最新版が必要な場合には手動でインストールする必要があるかもしれない。
また、2012-10-26 現在、Cygwin では 1.8.7-p370 がコンパイルエラーになるので、これもパッチなどを当てながら手動でインストールしてやる必要がある。
関連:
  • Cygwin - ruby-1.8.7-p371 ← 2012-10-26 現在の最新リリース(ruby-build のレシピは p370 なので 1 つ古いという例でもある)

本家以外にも、rbx(Rubinus), JRuby, MagLev, ree(Ruby Enterprize Edition 等が install 出来る模様。

ソースを取って来てコンパイルするので、少々時間がかかるため、CPU がマルチコアなら、環境変数の MAKEOPTS または MAKE_OPTS に -j オプションを設定しておくと若干マシになる。設定がない場合は -j2 にされる模様。
インストールしたいのが 1.9.3-p286 で 8 thread 使ってでビルドさせるなら以下のようにすれば良い。
export MAKEOPTS=-j8
rbenv install 1.9.3-p286
デフォルトでは /tmp/ 以下でビルドされ、~/.rbenv/versions/ 以下にインストールされる。

なお、ruby-build を使って install/uninstall する場合、自動的に rehash してくれるので手動で rehash する必要はない。

rbenv 管理下にある Ruby のアンインストール

手動で行う場合は ~/.rbenv/versions/ 以下にあるフォルダのうち目的のものを適当に削除するだけで良い。
プラグインとして ruby-build を入れている場合は uninstall サブコマンドが利用出来るので例えば以下のようにすれば良い。
rbenv uninstall 1.9.3-p286

なお、通常は init サブコマンドを bash の設定ファイルに登録したことで bash_completion が有効になっているはず。
この場合、rbenv 管理下にあるサブコマンドやオプション、バージョン番号等は、丸暗記したり、いちいち頭からお尻まで手打ちする必要はない。
適当に TAB キーを叩けば、候補を示してくれるので、候補を絞り込むのに十分な先頭文字だけ入力したらもう一度 TAB キーを叩けば良い。

使用する Ruby のバージョン切り替え

ユーザーの環境全体で用いる Ruby のバージョンを変更するには globa サブコマンドを用いて、例えば以下のように指定する。
rbenv global 1.9.3-p286
利用するバージョン情報は ~/.rbenv/varsion に設定される。

特定のディレクトリ以下で用いる Ruby のバージョンを変更するには、目的のディレクトリへ移動した後 local サブコマンドを用いて、例えば以下のように指定する。
rbenv local 1.9.3-p286
利用するバージョン情報は ./.rbenv-version に設定される。

現在使用しているシェル内限定で Ruby のバージョンを変更するには shell サブコマンドを用いて、例えば以下のように指定する。
rbenv shell 1.9.3-p286
利用するバージョン情報は環境変数 RBENV_VERSION に設定される。

local, shell サブコマンドではバージョンの代わりに --unset オプションを与えると、設定してあるバージョン情報をクリア出来る。
バージョンの代わりに system を与えると、システムにインストールされている Ruby を利用する。
設定の優先順位は高い順に shell, local, global となっている。

現在、選択されている Ruby のバージョンは version サブコマンドを用いて以下のようにすれば確認出来る。
rbenv version
rbenv が実際に呼んでいるコマンドのパスは which サブコマンドを用いて以下のようにすれば確認出来る。
rbenv which ruby
動作がおかしいようなら which コマンドで ~/.rbenv/shims 以下のコマンドが呼ばれているかも確認してみると良い。
which ruby
~/.rbenv/shims/ruby が呼ばれていない場合、PATH の設定がおかしいか、shems が生成されてない可能性がある。
PATH は bash の設定ファイルの見直し、shems の生成については前述の rehash サブコマンドを実行してみると良い。

rbenv およびプラグインのアップデート

git で以下のように pull してやれば良い。
for i in ~/.rbenv ~/.rbenv/plugins/*; do cd $i; pwd; git pull; done
と言うか、これをこのまま update プラグインとかに加工してしまった方が良いのかも?
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます