この日記の方針。
- この日記では、超初心者向けの内容は取り扱っておりません。モジュールの利用など、実践的な内容が中心となります。
- ここに貼られるソースは、基本的にそのままでは動かないものばかりです。各自の責任でご利用ください。
- 内容が間違っていることがあります。その際はご指摘いただけるとありがたいです。「検証してみたら違う結果が出た」などの報告も大歓迎です。
- perl -e die
2006-08-25 (Fri)いろいろ欲しいものがある
■ [CPAN] CPANでローカルインストール

レンタルサーバでArchive::Zipが使いたくて試行錯誤。CPANって、インストール時にroot権限がないとダメなのかと思ったが、実はそうでもないらしい。
CPANの設定時*1に、PREFIXを指定してやる。ご親切にヒントまで出てました。
Parameters for the 'perl Makefile.PL' command?
Typical frequently used settings:
PREFIX=~/perl non-root users (please see manual for more hints)
Your choice: []
ここで、
PREFIX=~/perl
と入れてやる。すると、/home/(user)/perl 以下にすべてインストールされる。これで必要なモジュールが使えるようになる。
但し、パスが通っていないのでそのままでは使いにくい。プログラムごとに
use lib qw( ~/perl/lib/perl5/site_perl/5.8.4 );
とかやるのもどうかと思うわけで。
↑だとうまく行きません。フルパスで入れてください。use lib qw( /home/user/perl/lib/perl5/site_perl/5.8.4 )
@INCってどうやって変えるの?
要するに、@INCの中身を変更してやれれば良いわけで。
ここで設定を書き換えても、CGIから利用する環境変数は書き換わりません。.htaccessのSetEnvとか必要です。
そんなわけで、.bashrc*2に書き込んでみます。
# .bashrc export PERL5LIB=/home/cre/perl/lib/perl5/site_perl/5.8.4:/home/cre/perl/lib/perl5/5.8.4
PATHと一緒でカンマ区切り。ログインシェルがCSH系なら勿論setenvです。ログインシェルに合わせて。
動作確認
ちゃんと動いているかどうか試してみました。
$ vi .bashrc $ source .bashrc $ perl -e 'use Archive::Zip; print $Archive::Zip::VERSION;' 1.16
大丈夫みたいですね。ちゃんと動いてます。
perldoc
環境変数 PERL5LIB を設定しておくと、perldoc もちゃんと見られるようになります。
perldoc Archive::Zip
これも問題なし。
今さら思うこと
モジュールのインストールのために管理者にお願いする必要ないよね・・・これだと。GDとか複雑なモジュールも入れられるのかな?Archive::Zipも十分複雑だとは思うが。
追記
環境変数PERL5LIBの設定だけでは、CGI動作時のモジュールのパス指定は出来ない。やっぱり、use lib qw( ) なのかなあ。一行くらい入れても良いけど。
SetEnvが使えれば話は早かったのだが、流石にそうも行かなかった。
情報&人柱(^_^;)、ありがとうございました。