Perl バイナリモジュールの追加 覚え書き
カテゴリー: レンタルサーバーやcgi
2009-06-22
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 |
|
|||
例 |
例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 |
|
|||
注意 |
make installだと ~/local/perl/lib/perl5/site_perl/5.8.9/mach/Digest/SHA.pm みたいになるので注意。 @INCに追加するスクリプト書いてそれをrequireすると簡単に指定できます。 |