Perl バイナリモジュールの追加 覚え書き
Perl 目次
・目次
・インストール
・
・
|
エラー
|
レンタルサーバーでエラー:さくら
|
仮想 OS内で再現することを確認
モジュールがインストールされていないことに起因する。
スクリプト実行 Can't locate Digest/SHA.pm in @INC (@INC contains: /home/username/lib/perl/ /usr/local/lib/perl5/5.8.8/BSDPAN
Can't locate loadable object for module Digest::SHA in @INC (@INC contains: /home/username
【結論】
足りないモジュールをインストールして
push(@INC, 'パス');
で追加する
サーバー会社サポートに追加してほしいと要望するのが一番楽で確実。
以下は、応急処置的な方法
|
Step1 |
まず共通の読み込みできるファイルを作ります。
これは、パス変更時に1回の修正で済ませることができるようにするためです。
(例)
|
push(@INC, "/home/username/local/perl/lib/perl5/site_perl/".sprintf("%vd", $^V).'/mach');
push(@INC, '/home/username/local/perl/lib/perl5/site_perl/5.8.9/mach'); |
注: perlがバージョンアップした場合のために上記のように変数と 定数固定の2つを用意する
# UNIX $ENV{HOME}
# Windows $ENV{HOMEPATH}
は、apacheのconfで定義されていない場合があるので使用しない方が無難。
|
Step2
|
既存のスクリプトに上記のファイルを読み込むように設定します
require "上の内容のファイル";
|
Step3
|
cpanを実行して初期値を代入
cpanの初期設定でインストール先を指定します
(cpan初回起動時に表示されます)
If you don't understand this question, just press ENTER.
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=~/local/perl LIB=~/local/perl/lib/perl5/site_perl/5.8.9/mach
Parameters for the 'make install' command?
Typical frequently used setting:
UNINST=1 to always uninstall potentially conflicting files
最後までいくと 設定を保存するコマンドが書いてあるので
実行すると次回から聞いてこなくなります。
(2回目の実行からは聞いてこないので間違わないように。)
|
Step4
|
必要なモジュールをインストールします
|
コマンドラインで
cpan モジュール名 |
cpanの中で install モジュール名 |
|
例
|
例1
cpan Digest::SHA
例2
cpan
install Digest::SHA
更新
cpan
cpanを実行後 ? でコマンド説明を表示して
update /regexp/ でアップデートするといいでしょう
update /.*/
自動更新方法は、不明
|
tips
|
更新する名前を1行ずつ書いたファイルを用意します
例: cpan-install-list.txt
Digest
Digest::SHA
次に
cat cpan-install-list.txt | xargs cpan
を実行するとまとめてインストールできます
|
cpanの再設定
|
cpan
|
cpan> |
o conf init
|
非推奨 |
全部手動更新 |
仮想 OS内で再現することを確認
push(@INC,"/home/username/lib/perl/");
スクリプト実行 Can't locate Digest/SHA.pm in @INC (@INC contains: /home/username/lib/perl/ /usr/local/lib/perl5/5.8.8/BSDPAN
cp -Rp blib/lib/* /home/username/lib/perl/
Can't locate loadable object for module Digest::SHA in @INC (@INC contains: /home/username
cp -Rp blib/arch/* /home/username/lib/perl/
正常実行
【結論】 ~/lib/per直下に置く場合
perl -I$HOME/lib/perl Makefile.PL PREFIX=~/lib/perl
make
cp -Rp blib/lib/* /home/username/lib/perl/
cp -Rp blib/arch/* /home/username/lib/perl/
|
Step1 |
cpanのホームページで検索して、
圧縮ファイルを取得
(ソースコード単体ではないので注意)
(cpanのソフトでのインストールは不明。)
|
Step2
|
圧縮ファイルの展開
|
Step3
|
perl -I$HOME/local/perl/lib/perl5/site_perl/5.8.9/mach Makefile.PL PREFIX=$HOME/local/perl |
make |
make install |
|
注意
|
make installだと
~/local/perl/lib/perl5/site_perl/5.8.9/mach/Digest/SHA.pm
みたいになるので注意。
@INCに追加するスクリプト書いてそれをrequireすると簡単に指定できます。
|