Ubuntu12.04 にRVM を導入して、かなしみを吹っ飛ばしました
RVM (Ruby Version Manager) を導入しました。
あと、shebang に"#!/usr/bin/ruby"とかハードコードされている場合でもRVM によるスイッチングを効かせられるようにしました。
RVM とは1つの環境に複数のRuby のバージョンを共存させるための管理ツールのことです。(ご存知だとは思いますが念のため)
とは言うものの、Ruby は専門外ですのでRVM に関する詳しい情報はググってください。
僕はRuby に関しては「読めない」「書けない」「喋れない」の3重苦に襲われているので、
基本的にはRuby で書かれたプログラムやアプリケーションを使うだけの人間です。
ただ一口に「使う」と言っても、プログラムによっては
「1.8系のRuby じゃなきゃやーよ!!」
だとか、
「1.9系以外はRuby じゃねえ!!」
だとか言われるので、1.8系と1.9系のどちらも欲しかったりします。
Linux だとバージョン指定でRuby をインストールさせたりも出来ますが、1.8系と1.9系のスイッチングが少々面倒臭いです。
RVM はそこら辺上手くやってくれるので、1つの環境に1.8系と1.9系を同居させるためにRVM をインストールしましたとさ。
インストール(Ubuntu 12.04 のばあい)
$ sudo apt-get install git-core $ sudo apt-get install curl $ curl -L get.rvm.io | bash -s stable $ source ~/.rvm/scripts/rvm上記のコマンド群を流し込めばOK だと思います。
注意!
$ sudo apt-get install ruby-rvmでインストールできるRVM は入れてはいけません。
大変残念な気持ちになりますし、大変残念な環境になります。
(インストール出来るRuby が微妙に古かったりするし、そもそもなんか上手く動かない)
RVM の使い方
指定したバージョンのRuby の利用
$ rvm use <target>例えば、
$ rvm use 1.8.7としてやると、バージョン1.8.7 のRuby を使用することになります。
$ rvm use 1.8.7 --defaultとすると、バージョン1.8.7 をデフォルトで使用する設定になります。
現在の状況の確認
$ rvm list
繰り返しになりますが、詳しくはググりましょう。
かなしみ到来
`rvm use xxx` でRuby のスイッチングは可能になりましたが、少し問題があります。プログラムのshebang に
'#!/usr/bin/ruby'
とか書かれていると、RVM のスイッチングは反映されません。
普通に'/usr/bin/ruby' のruby が実行されます。かなしい……
かなしみ少し解決
$ cd /usr/bin $ sudo ln -s ~/.rvm/bin/ruby rubyとかしてやると、RVM でインストールしたRuby が使えるようになりますが、
これは"--default" で指定したバージョンのRuby しか使えません。
なので、
$ rvm use 1.8.7 --defaultの状態で
$ rvm use 1.9.3としても、1.8.7 のRubyしか使えません。 ちょっとかなしい。
かなしみ解決
このかなしみをどうしよう…………そうか、
Perl で解決すりゃ良いんだ!!!!!
というわけで、このかなしみを吹っ飛ばしてくれるスクリプトをPerl で書きました。
このプログラムを"ruby" と名付けて保存して、
$ chmod 755 rubyとかしてやって、
$ sudo cp ruby /usr/bin/してやるとRVM のスイッチングが反映されるようになります。
うれしい!!!!!!
とは言うものの
これ、本当にしっかり動くのかな……運用し始めて1日しか経ってないから普通に不具合出るかも……
「これをいきなり本番環境に持ってったら死んだ!」とか言われても責任は負えませんのでよろしくお願いします。