Rubyistみたいな

2009-06-05

Rubygemsパッケージとか $HOME/.gem 以下にインストールするだろjk

| 17:05

/usr/bin/* を勝手に荒らされるという話。

404 Not Found

Rubygems 1.3.0から Gem.user_dir というメソッドが追加されていて、gemコマンドでインストールされるディレクトリにデフォルトで $HOME/.gem 以下も追加してくれています。しかもこれ、Rubyの処理系ごと(1.8.x,1.9.x,JRuby等)にディレクトリを分けてくれます。

例えば1.8.xの場合

$HOME/.gem/ruby/1.8

1.9.xの場合

$HOME/.gem/ruby/1.9.1

JRubyの場合

$HOME/.gem/jruby/1.8

となります。

ただ、JRuby--1.9オプションを付けてgemを実行しても、 $HOME/.gem/jruby/1.8 になってしまう問題はあります。Rubygemsはバージョン指定の部分はRbConfig::CONFIG['ruby_version']を取って指定しているだけなので、1.9.1でなくて1.8を返しているJRuby側の問題っぽいです。

デフォルト以外の場所にインストールする場合、環境変数GEM_HOMEを指定しちゃう方法が一番有名かもしれません。

たぶん、環境変数 GEM_HOME をローカルのどこかに設定してユーザー権限で gem install すればうまくいくんじゃないでしょか。

はてなダイアリー

これだと1.8.xだろうが1.9.xだろうがJRubyだろうが同じディレクトリのgemを参照することになり、なんとも気持ち悪いことになってしまいます。単一処理系しか動かさないのなら問題はありませんが、複数処理系を動かす場合問題が起きてしまうことがあります。

なので僕は基本GEM_HOMEも何も設定せずにユーザ権限で gem install するようにしています。ただ、この場合、処理系の数だけPATHに追加しないといけないので、結構面倒かもしれません。

ゲスト



トラックバック - http://rubyist.g.hatena.ne.jp/from_kyushu/20090605