CPANモジュールをローカルにインストール

| コメント(0) | トラックバック(0)
通常root権限がないとCPANモジュールをインストールする時に権限がなくてエラーが発生する。
これを回避することができる。自分にフルアクセスがあるホームディレクトリに全部入れることができる。

perl -MCPAN -e shell

cpan[6]> o conf makepl_arg "LIB=~/perl/lib \
    > INSTALLMAN1DIR=~/perl/man/man1 \
    > INSTALLMAN3DIR=~/perl/man/man3"
    makepl_arg         [LIB=~/perl/lib INSTALLMAN1DIR=~/perl/man/man1 INSTALLMAN3DIR=~/perl/man/man3]
Please use 'o conf commit' to make the config permanent!
↑フルパスじゃないとダメみたい

cpan[3]> o conf makepl_arg "LIB=/mnt/nfs/home/tkobayashi/perl/lib \
    > PREFIX=/mnt/nfs/home/tkobayashi/perl \
    > INSTALLMAN1DIR=/mnt/nfs/home/tkobayashi/perl/man/man1 \
    > INSTALLMAN3DIR=/mnt/nfs/home/tkobayashi/perl/man/man3"
    makepl_arg         [LIB=/mnt/nfs/home/tkobayashi/perl/lib PREFIX=/mnt/nfs/home/tkobayashi/perl INSTALLMAN1DIR=/mnt/nfs/home/tkobayashi/perl/man/man1 INSTALLMAN3DIR=/mnt/nfs/home/tkobayashi/perl/man/man3]
Please use 'o conf commit' to make the config permanent!

↓これでちゃんと値が入力しているかチェック
cpan[5]> o conf makepl_arg
    makepl_arg         [LIB=/mnt/nfs/home/tkobayashi/perl/lib PREFIX=/mnt/nfs/home/tkobayashi/perl INSTALLMAN1DIR=/mnt/nfs/home/tkobayashi/perl/man/man1 INSTALLMAN3DIR=/mnt/nfs/home/tkobayashi/perl/man/man3]
Type 'o conf' to view all configuration items

この修正をコミットしておく
cpan[3]> o conf commit
commit: wrote '/mnt/nfs/home/tkobayashi/.cpan/CPAN/MyConfig.pm'
これだけだとインストール先のディレクトリがPerlのライブラリパスに含まれていないので、せっかくインストールしたモジュールが使えない。そこでPERL5LIBという環境変数を設定する。

export PERL5LIB=/mnt/nfs/home/tkobayashi/perl/lib:/mnt/nfs/home/tkobayashi/perl/lib/site_lib

.bash_profileなどにこの設定を書き込んでおくとそのユーザでは常に野良インストールしたモジュールが使えるようになる。逆に言えばこの設定を無効にすることで、いつでも元の環境に戻すことができる。

---------------------------------------------------------------------------------------------------------


どうやら、本文の設定だけでは完璧ではなかったらしい。$PERL5LIBの設定だけでは.pmファイルの保管場所だけを設定していて、/usr/local/lib/perl にアクセスしにいこうとしてエラーを起こす。

ここで最近流行って使われているのが local::lib のモジュールを使用することらしい。
これを使えば$PERL5LIBを含め必要な環境設定を全部してくれる。(してくれるというか、何を設定するばいいか、教えてくれる感じ)

とりあえず、このlocal::libモジュールもcpan使っては正しく入らないので、ソースファイルをダウンロードしてくる。localディレクトリを作ってその中にダウンロードしてきた、lib.pmファイルを入れる。で↓のように実行して上げたら、必要な変数が自動的にセットしてくれる。

cd /<Perlモジュールなどをインストールしてもらいたいディレクトリ>
perl -Mlocal::lib=./ ←アウトプットしてくれるだけ
eval $(perl -Mlocal::lib=./) ←実際の実行

アウトプットしたやつを.bash_profileか何かに入れておけば、毎回自動的にセットしてくれる。



トラックバック(0)

トラックバックURL: http://www.koba206.com/cgi-bin/mt/mt-tb.cgi/28

コメントする