[ruby] gemをユーザー領域にインストールする
CPAN moduleはMac OS Xでもlocal::libをつかってCPANモジュールを入れよう - JPerl Advent Calendar 2009
に習ってlocal::libを用いてユーザー領域にインストールしてます。
今回はrubygemsのモジュールもユーザー領域にインストールしてみたくなったので試してみました。基本的には gem installでsudoしたくないでござる絶対にsudoしたくないでござる+ - きたももんががきたん。と同じです。
rubygemsのインストール
これは別にroot権限でインストールしてもOK。入っているものとして先進みます。
.gemrcの設定
ユーザーインストールできるように設定します。
--- gem: "--user-install" :update_sources: true :bulk_threshold: 1000 :sources: - http://gems.rubyforge.org/ - http://gemcutter.org :verbose: true :backtrace: false :benchmark: false
最初の一行のgem:〜を追加します。あとはなくても問題ありません。
インストール先の指定
$HOME/.zshrcに下記を追加。
export GEM_HOME=~/extlib/gems
extlib以下はお好きなディレクトリを指定してください。ちなみにCPAN moduleもextlib/perl5にインストールしてます。これを設定しなければ、~/.gem以下にインストールされるので.gem以下で問題ない人は設定しなくても構いません。
PATHの追加
/extlib/gems/binにPATHが通ってなければPATHを通します。$HOME/.zshrcに下記を追加。
export PATH=$PATH:/extlib/gems/bin/
これでこんな感じでユーザー領域にインストールできるようになります。
$ gem install nokogiri
ここまで書いていて、気がついたのですが、そもそも--user-installを指定しなくても、GEM_HOMEでユーザー領域を指定してやればgem installで権限がないと怒られることが無くなるためユーザー領域にインストールできるようになります。逆に、GEM_HOMEを指定しなかった場合は、rootの領域にインストールしようとするため--user-installを指定する必要があります。
余談
自分の今のgem環境を調べるためには
$ gem environment
が便利です。