- Rails 雑感 - Ruby on Rails with OIAX / 2012-05-05: Ruby on Rails 3.2 を Cygwin にインストールする手順をかなり丁寧に説明してみました
- むかぁ〜 どっと こむ / 2012-03-12: 最新Rubyを使いたいけど「動かない」の心配をしている人へ|rbenv。
- Route 477 / 2012-02-03: rvmからrbenvに乗り換えた
Ruby#shebang を参照
まず最新版の rbenv を git リポジトリから ~/.rbenv に clone した後、shell の設定ファイルに rbenv の設定を追加し、shell を再起動するため、以下のコマンドを実行する。
ただし、init サブコマンドで生成される初期化用スクリプトでは、後述する rehash サブコマンドも実行しているので、bash の起動が遅くなるのを嫌うなら、.bashrc ではなく .bash_profile の方に init サブコマンドで生成された設定内容結果から rehash を抜いた内容を設定しておいて、rehash は手動で行った方が良いかもしれない。
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 は手動で行った方が良いかもしれない。
まずビルドする前に、readline の開発用ライブラリを入れておくこと。
これを忘れると irb のラインエディタが悲しいことになる。
2013-03-27 現在の Cygwin には readline-devel というパッケージがないのだが、readline パッケージがそれに当る模様(category が Devel になっている)。
rbenv に管理させる ruby を手動でビルド&インストールするには ~/.rbenv/versions/ 以下に配置した適当な名前のフォルダ(通常はバージョン名にする)にインストールする必要がある。これは configure & make の際、--prefix オプションを用いることで行う。
例えば、ruby-1.9.3-p286 を rbenv に管理させたいなら以下のようにする。
これをやっておかないと、例えば特定のバージョン以降の ruby で追加されたコマンドだとか gems 等で後からインストールされたコマンド等があった場合に、それらのコマンドが利用出来ない。
このため、手動で rbenv に ruby をインストールした場合や、コマンド付きの gem をインストールした場合には、適宜 rehash を行う必要がある。
インストールされているすべてのバージョンの RubyGems にインストールしておく必要があるので若干面倒だが、gem install 時に自動で rvenv rehash してくれる rbenv-rehash って gem もあるらしい。インストールは以下のようにすれば良い。
Ruby 1.9 では不要だが、1.8 以前のバージョンでは、RubyGems の install も必要かもしれない。
RubyGems をインストールするには、shell サブコマンドでターゲットとする Ruby を指定して、RubyGems のソースディレクトリで setup.rb スクリプトを実行すれば良い。例えば ruby-1.8.7-p371 と rubygems-1.8.24 をインストールする場合以下のようになる。
これを忘れると 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
rbenv に plugin として ruby-build を入れておくと ruby の各種バージョンをインストールするのが非常に簡略になる。
最新の ruby-build を install するには git リポジトリから ~/.rbenv/plugins/ruby-build に clone すれば良い。
最新の ruby-build を install するには git リポジトリから ~/.rbenv/plugins/ruby-build に clone すれば良い。
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
以下のサブコマンドとオプションを用いると、インストール可能な ruby のバージョン一覧が得られる。
例えば 1.9.3-p286 のように /^ *[0-9]+\.[0-9]+\.[0-9]+-(dev|p[0-9]+|rc[0-9]+|preview[0-9]+)$/ のパターンになっているのが本家の ruby。
最初の3組の数字がバージョンで、ハイフン以降が同一バージョン内でのリリース情報。
新しい順に並べると以下のようになる。
ただし、レシピ情報は必ずしも最新リリースに追従出来ているとは限らないので、最新版が必要な場合には手動でインストールする必要があるかもしれない。
また、2012-10-26 現在、Cygwin では 1.8.7-p370 がコンパイルエラーになるので、これもパッチなどを当てながら手動でインストールしてやる必要がある。
関連:
本家以外にも、rbx(Rubinus), JRuby, MagLev, ree(Ruby Enterprize Edition 等が install 出来る模様。
ソースを取って来てコンパイルするので、少々時間がかかるため、CPU がマルチコアなら、環境変数の MAKEOPTS または MAKE_OPTS に -j オプションを設定しておくと若干マシになる。設定がない場合は -j2 にされる模様。
インストールしたいのが 1.9.3-p286 で 8 thread 使ってでビルドさせるなら以下のようにすれば良い。
なお、ruby-build を使って install/uninstall する場合、自動的に rehash してくれるので手動で rehash する必要はない。
rbenv install -l例えば、2012-10-25 現在、cygwin でやってみると以下のような結果が得られた。
例えば 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]+ はプレビュー版(α版とかβ版に当たる)
- p,rc,preview は公式のリリース履歴(http://ftp.ruby-lang.org/pub/ruby/)からリリース版のソースを取得
- dev は開発用の subversion リポジトリ(http://svn.ruby-lang.org/repos/ruby/branches/)から最新版のソースを取得
ただし、レシピ情報は必ずしも最新リリースに追従出来ているとは限らないので、最新版が必要な場合には手動でインストールする必要があるかもしれない。
また、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/versions/ 以下にあるフォルダのうち目的のものを適当に削除するだけで良い。
プラグインとして ruby-build を入れている場合は uninstall サブコマンドが利用出来るので例えば以下のようにすれば良い。
なお、通常は init サブコマンドを bash の設定ファイルに登録したことで bash_completion が有効になっているはず。
この場合、rbenv 管理下にあるサブコマンドやオプション、バージョン番号等は、丸暗記したり、いちいち頭からお尻まで手打ちする必要はない。
適当に TAB キーを叩けば、候補を示してくれるので、候補を絞り込むのに十分な先頭文字だけ入力したらもう一度 TAB キーを叩けば良い。
プラグインとして ruby-build を入れている場合は uninstall サブコマンドが利用出来るので例えば以下のようにすれば良い。
rbenv uninstall 1.9.3-p286
なお、通常は init サブコマンドを bash の設定ファイルに登録したことで bash_completion が有効になっているはず。
この場合、rbenv 管理下にあるサブコマンドやオプション、バージョン番号等は、丸暗記したり、いちいち頭からお尻まで手打ちする必要はない。
適当に TAB キーを叩けば、候補を示してくれるので、候補を絞り込むのに十分な先頭文字だけ入力したらもう一度 TAB キーを叩けば良い。
ユーザーの環境全体で用いる Ruby のバージョンを変更するには globa サブコマンドを用いて、例えば以下のように指定する。
特定のディレクトリ以下で用いる Ruby のバージョンを変更するには、目的のディレクトリへ移動した後 local サブコマンドを用いて、例えば以下のように指定する。
現在使用しているシェル内限定で Ruby のバージョンを変更するには shell サブコマンドを用いて、例えば以下のように指定する。
local, shell サブコマンドではバージョンの代わりに --unset オプションを与えると、設定してあるバージョン情報をクリア出来る。
バージョンの代わりに system を与えると、システムにインストールされている Ruby を利用する。
設定の優先順位は高い順に shell, local, global となっている。
現在、選択されている Ruby のバージョンは version サブコマンドを用いて以下のようにすれば確認出来る。
PATH は bash の設定ファイルの見直し、shems の生成については前述の rehash サブコマンドを実行してみると良い。
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 versionrbenv が実際に呼んでいるコマンドのパスは which サブコマンドを用いて以下のようにすれば確認出来る。
rbenv which ruby動作がおかしいようなら which コマンドで ~/.rbenv/shims 以下のコマンドが呼ばれているかも確認してみると良い。
which ruby~/.rbenv/shims/ruby が呼ばれていない場合、PATH の設定がおかしいか、shems が生成されてない可能性がある。
PATH は bash の設定ファイルの見直し、shems の生成については前述の rehash サブコマンドを実行してみると良い。
git で以下のように pull してやれば良い。
for i in ~/.rbenv ~/.rbenv/plugins/*; do cd $i; pwd; git pull; doneと言うか、これをこのまま update プラグインとかに加工してしまった方が良いのかも?
タグ
コメントをかく