通常root権限がないとCPANモジュールをインストールする時に権限がなくてエラーが発生する。
これを回避することができる。自分にフルアクセスがあるホームディレクトリに全部入れることができる。
perl -MCPAN -e shell
↓これでちゃんと値が入力しているかチェック
この修正をコミットしておく
export PERL5LIB=/mnt/nfs/home/tkobayashi/perl/lib:/mnt/nfs/home/tkobayashi/perl/lib/site_lib
.bash_profileなどにこの設定を書き込んでおくとそのユーザでは常に野良インストールしたモジュールが使えるようになる。逆に言えばこの設定を無効にすることで、いつでも元の環境に戻すことができる。
これを回避することができる。自分にフルアクセスがあるホームディレクトリに全部入れることができる。
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これだけだとインストール先のディレクトリがPerlのライブラリパスに含まれていないので、せっかくインストールしたモジュールが使えない。そこでPERL5LIBという環境変数を設定する。
commit: wrote '/mnt/nfs/home/tkobayashi/.cpan/CPAN/MyConfig.pm'
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か何かに入れておけば、毎回自動的にセットしてくれる。


コメントする