(Ubuntu)(Ubuntu12.04)(ruby)(rvm)(Ubuntu 12.04 に rvm で ruby のマルチバージョン環境を構築してみた)

 これまでと同じくVirtualBoxの環境下のUbuntuにrvmをインストールしてみました
過去のバージョンはこちらを参照の事です
Ubuntu10.10 → http://d.hatena.ne.jp/morakana/20110103/1294084275
Ubuntu11.04 → http://d.hatena.ne.jp/morakana/20110716/1310797968


 今回は https://rvm.io/rvm/install/ に書いてある事を参考にしてインストールしてみました
とはいえ、いつもの通りに「git-core」と「curl」が必要なので
まだインストールが出来てない場合は、端末上で
[]sudo apt-get update[]
[]sudo apt-get install aptitude[]
[]sudo aptitude update[]
[]sudo aptitude install git-core curl[]
などのようにしてインストールしておきます
aptitudeを使っていますが apt-getでも特に問題は無いかと思います)



 続いて 先ほど書いた https://rvm.io/rvm/install/ を参考にして、端末上で
curl -L get.rvm.io | bash -s stable
を実行して「rvm」をインストールします



 続いて、端末上で
source ~/.rvm/scripts/rvm
を実行してrvm関係の環境設定をロードします



 そのまま続けて、端末上で
rvm requirements
を実行して、必要なライブラリなどを調べます
必要なのは「# For Ruby / Ruby HEAD (MRI, Rubinius, & REE), install the following:」の所なので
そこを適当に読み変えて
[]sudo aptitude install build-essential openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool bison subversion[]
などとして実行します、これで必要なライブラリなどがインストールされます



 とりあえず一旦端末を閉じて再起動し
あとはいつものように
rvm install 1.8.7
rvm install 1.9.2
rvm install 1.9.3
等々として 使いたいバージョンをインストールし
rvm use 1.8.7 --default
などとしてデフォルトで使用するバージョンを指定します
(「rvm use」を使おうとするとエラーが発生する場合は次の項を参照してください)



(「rvm use」を使おうとするとエラーが発生する場合にこの設定をしてください)
 続いて、 https://rvm.io/rvm/install/ に説明には書いてありませんが
「rvm use ・・・」を使おうとするとエラーが発生して
使用するrubyのバージョンを指定できなくなる原因を潰します
「~/.bashrc」をテキストエディタで開き
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
の行の後ろに
source "$HOME/.rvm/scripts/rvm"
の一行を追加します
もう一度端末を終わらせ、再起動し「rvm use ・・・」を試してください
これでもうまく行かない場合は違う方法を探してみてください



 あとは、この時点では /usr/bin/ruby が存在しないので
スクリプトの一行目が
#!/usr/bin/ruby -Ku
などであっても従来どおり実行できるように、端末上で
sudo ln -s /home/<ユーザー名>/.rvm/bin/ruby /usr/bin/ruby
としてリンクを貼ります
これで --defaultで指定したバージョンで実行されるようになります



 さらに応用として各バージョンに対応するために
sudo ln -s /home/<ユーザー名>/.rvm/bin/ruby-1.8.7-p<パッチ番号> /usr/bin/ruby187
sudo ln -s /home/<ユーザー名>/.rvm/bin/ruby-1.9.3-p<パッチ番号> /usr/bin/ruby193
等として各バージョンのリンクを作っておけば
スクリプトの一行目を
#!/usr/bin/ruby187 -Ku

#!/usr/bin/ruby193 -Ku
等とすることで実行するrubyのバージョンを指定できるようになります
バージョン依存するスクリプトの場合はこちらで指定した方がラクかな?と 笑)