Ruby のバージョンマネージャー rvm を Ubuntu で使う

flickrholdr_470_180_ubuntu_linux_1
  • ????????????????????

Ubuntu 11.04 を導入しました。いままでは windows から Redhat にログインするという形で使っていたのですが、yum はパッケージの依存関係とかに時間を取られてしまって Ubuntu ならそのへん楽になるんじゃないかと。

実際非常に楽でした。いいですね、Ubuntu。

ただ認証プロキシ下での rvm (Ruby version manager) の設定ですこしハマったのでメモを残しておきます。

rvm のインストールの前に

まず、rvm のインストール前に apt-get と wget の認証プロキシ設定をします。apt-get は /etc/apt/apt.conf, wget は /etc/wgetrc にそれぞれ認証プロキシの設定をします。検索するといろいろ出てきます。ようするに apt-get, wget (そして git)が認証プロキシ下でも問題なく使えることがポイントです。

以下、apt-get の設定は終わっている人は無視してください。

apt-get を初めて使う場合は apt-get update する。ただしこれをやるには GPG とレポジトリを追加しなければならない。

Ubuntu 11.04の場合:
(レポジトリをミラーに変更 : Ubuntu ソフトウェアセンターから変更可能)
$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add –
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add –
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/natty.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update

apt.conf, wgetrc などのファイルはパーミションの設定が他人からも見えるようになっています。平文でパスワードを書きたくなかったので、私の場合はローカルに squid というプロキシサーバを立てて apt-get と wget がそこを経由するように設定しました。

squid も squid.conf というファイルにパスワードを書きますが、このファイルのパーミッションは 600 なので自分だけが sudoer の場合は少しだけセキュリティが上がります。squid を apt-get で導入するときは apt.conf にパスワード各必要ありますが…

rvm のインストールと利用

rvm のインストールは

$ sudo bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

ですね。sudo つけないとホームディレクトリにインストールされます。うまくインストールできない場合、curl のオプション -s を外してみましょう。エラーメッセージが表示されるかもしれません。

私のケースでは git のプロキシ認証の部分でこけていました。git は wget を使うので、wgetrc でちゃんとプロキシ設定がされていないと失敗します。

無事、rvm がインストールされたでしょうか?

いくつかの注意点

  • 認証プロキシの下で rvm を使うときは環境変数 http_proxy, https_proxy だけじゃなくて ftp_proxy も設定しないとエラーになります。
  • マルチユーザーで rvm を使うとき、rvmsudo rvm install 1.X.X みたいな感じで、sudo じゃなくて rvmsudo を使う。この rvmsudo は環境変数をいい感じにしてくれるようです。sudo は使っちゃダメ、絶対。
  • gem でパッケージをインストールするときも rvmsudo gem install hogehoge

gem でハマる

rvmsudo gem install hogehoge すると no such file to load — zlib みたいなエラーがでるかもしれません。

こうすれば解決しました:

$ sudo apt-get install libghc6-zlib-dev
$ cd /usr/local/rvm/src/ruby-1.X.X-pXXX/exp/zlib
$ rvmsudo ruby extconf.rb
$ rvmsudo make
$ rvmsudo make install
$ rvmsudo gem install rake        # OK!!

まとめ

なんとかなりましたが、ubuntu に限らず、認証プロキシにはいつも苦労させられます。ローカルプロキシ立てちゃえばいいのですが、それでも設定ファイルがあちこちに散らばるのを何とか統一的に扱えないものでしょうか…

はてなブックマーク - Ruby のバージョンマネージャー rvm を Ubuntu で使う
Pocket