2012年3月28日水曜日

ubuntuにruby-1.9をインストール

ちょっと入れてみたいOSSがあり、それがデータ作成にruby-1.9を使ってました。最初、ubuntu11.10にもrubyが入っていたのでいいと思ったら、どうもエラーがでます。よく見たら、force_encodingという関数が見つからない様子。調べてみたら、ruby-1.9から追加された関数らしい。
ubuntuのサーバにはruby-1.8までしかなく(調べてみると、大抵のディストリビューションがまだ1.8系らしい)、かといって既存のものをいきなり外して新しいのを入れるのもどうかと・・・(ruby使ってるツールがありそうで、最初に外したところでエラーでとまっちゃいそうな気がして) 調べてみたらrvmというコマンドがあるらしい。(ruby version managerというらしく、複数バージョンを使い分けられるらしい)ただデフォルトではrvmが入っていません。Ubuntuのサーバにはありました。

$ sudo apt-get install rvm

これでrvmが使えるようになりました。

$ sudo rvm install 1.9.2

こうすると/usr/share/ruby-rvm以下にソースをgetしてきて、展開しビルドしてくれます。とここまではいいんですが、どうもSSL2のところでエラーがでます。色々調べてたら、英語のページで同様の現象とその対策がありました。

/usr/share/ruby-rvm/src/ruby-1.9.2-p180/ext/openssl/ossl_ssl.c


// OSSL_SSL_METHOD_ENTRY(SSLv2),
// OSSL_SSL_METHOD_ENTRY(SSLv2_server),
// OSSL_SSL_METHOD_ENTRY(SSLv2_client),

100行目くらいにある上記の3行をコメントアウトしてしまいます。(いいんかい!という気もしますが、まあとりあえず外部接続に使う気はないんで)その後、ビルドできました。
ただ、バージョンがどうにもうまく切り替えれません。rvmをインストールすると、${HOME}/.rvmというディレクトリが作られ、その下に展開されるらしいんですが当該ディレクトリができていません。もう少し格闘しないといけなさそうです。

PS
ようやくわかりました。どうも/etc/profile.d/rvm.shを実行しないといけないようです。${HOME}/.rvm以下にスクリプトを展開するというものもあるようですが、ubuntuの現状だと/usr/share/ruby-rvm以下に展開されてしまい、そういう場合はrvm.shを実行しないといけないようです。rootになるとhomeに.bashrcがないので/etc/bash.bashrcが実行され、そこからrvm.shが実行されるんですが、通常ユーザーの場合は~/.bashrcがあるので、そこの最後に以下の行を追加しました。

source /etc/profile.d/rvm.sh

これでrvm関係の環境変数がセットされ、バージョンが切り替わるようになりました。というこで、やっと目的のOSSのインストールにかかれます。、

0 件のコメント:

コメントを投稿