Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

rbenv で複数の Ruby 環境を整える その1

 公私ともに Ruby を扱うことが多くなってきたのと、バージョンが異なる Ruby を動かさなくてはならなくなったので、rbenv を導入してバージョンの異なる Ruby を使っていくことにした。因みに、Bash on Ubuntu on Windows 上、そして Virtual Box と Vagrant で管理されたエミュレーター上の Ubuntu 上での使用であるが、ここでは主としてBash on Ubuntu on Windows 上での整備に留める。

ビルド環境を整える

 既に /etc/hosts の設定や、最短のパッケージ・リポジトリの設定は終わっているとする。

必要なパッケージ

 もしパッケージが足りないようであれば、次のようにパッケージをインストールしてからRubyをインストールすればよい。しかしmysqlを使わなくてよいならlibmysqlclient-devをインストールしなくてもよい。

sudo aptitude -y install libssl-dev zlib1g-dev libreadline-dev libmysqlclient-dev sqlite3 libsqlite3-dev g++ git

 OS、ディストロ、環境よっては必須なパッケージがOSインストール時にインストールされていることもある。目的に沿った必要最小限パッケージを得たい場合は調査に時間をかけるか、試行錯誤するしかない。

インストール

githubからrbenvをcloning

 次を実行するだけでよい。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

githubからruby-buildをcloning

 実はもう一つのソフトウェアruby-buildが必要である。他所では.profile/.bash_profileを編集してからインストールしているのがあるが、連続してcloneしてもかまわない。

 ruby-buildはrbenvのプラグインの一つでrbenvのinstallオプションを担っている。

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

 とりあえず、これでインストールは可能である。

ruby-buildを共有し、Rubyインストールに融通を利かせたい

ruby-buildのREADME.mdに書いてあるが、自分一人で使うのであれば、インストール作業は上記までである。更新もgit pullを行うだけでよい。しかし、stand-alone、ディスク節約のため*1、統制のために、環境内で唯一無二のコマンドとして全ユーザーに使わせたいとき、そしてRubyのインストール先などを指定したい場合は、install.shスクリプトを実行してインストールすればよいと、これもREADME.mdに書いてある。git clone後に次を実行すれば、デフォルトでは/usr/local以下に配置され、そして任意のディレクトリにRubyをインストールすることができるようになる。

$ cd ~/.rbenv/plugins/ruby-build/
$ sudo ./install.sh

Installed ruby-build at /usr/local

利用方法

先ず.profileまたは.bash_profileを編集しておく

 パスの設定とrbenvを初期化するコマンドを.profileに書いておく。こうすることでbashが立ち上がる度に自動的にrvenvが使える。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
$ echo 'eval "$(rbenv init -)"' >> ~/.profile
$ source ~/.profile

.bash_profile をつかっているときは、上記 .profile を .bash_profile にし、次の一行を .bash_profile に加えるとよい:

test -r ~/.bashrc && . ~/.bashrc
すでにpyenvなどを使っている場合

 pyenvなどを使っている場合、おそらく.profileではなく.bash_profileを使っていることが多いだろう。そしてその中の最終行で"test -r ~/.bashrc && . ~/.bashrc"を実行させていることだろう。ここではそれを前提とする。その場合、一度、一時的なファイルに書き出してから、それを.bash_profileにリネームすればよい。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/tmp
$ echo 'eval "$(rbenv init -)"' >> ~/tmp
$ cat .bash_profile >> tmp
$ mv tmp .bash_profile
$ source ~/.bash_profile

インストール可能なバージョンを調べる

 以下を実行すればズラリとインストール可能なバージョンが表示される。希望のバージョン探したいときや、リストを絞りたいときはgrepコマンドにパイプすればよいだろう。

$ rbenv install --list

グローバル・インストール

 環境全域で利用可能なバージョンのインストールは次のように行う:

$ rbenv install 2.4.0
(snip)
$ rbenv global 2.4.0

2.4.0はRubyのバージョン番号である。globalオプションでインストールしたものを環境全域で使えるように指定するのである。

 因みにこのglobalオプションの実行で~/.rbenv/version に使うバージョンが書き込まれる。

ローカル・インストール

 あるディレクトリ以下でglobalで指定しているバージョンとは異なるrubyを実行したいときは、次のようにインストールし、設定する。

$ rbenv install 2.4.1
(snip)
$ cd hogehoge
$ rbenv local 2.4.1
  2.4.0 (set by /Users/username/.rbenv/version)
* 2.4.1
$

 因みにlocalオプションの実行で実行したディレクトリの .ruby-version に使うバージョンが書き込まれる。

*1:ruby-buildはバージョン毎に処理方法が詳細に書かれており、バージョンが多数存在する。