7

Fedora 11を使用Net::Fingerして正常に実行された perl プログラムがあります。 サーバーを Fedora 18 にアップグレードしたところ、これらの同じ perl プログラムは cron から実行されなくなりましたが、root としてログインするとコマンドラインから正常に実行されます。 エラーは次のとおりです。 cron.daily

Can't locate Net/Finger.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .)

モジュールへのパスはありますが/root/perl5/lib/perl5/Net/Finger.pm、エラーを発生させずにパスを追加する方法がわかりません。前もって感謝します。

4

2 に答える 2

16

を参照してくださいperlfaq8

Perl のモジュール検索パスに任意のディレクトリを追加する 3 つの方法を次に示します。

  1. PERL5LIB環境変数を設定する

    15 15 * * 1-5 PERL5LIB=/root/perl5/lib/perl5 /usr/local/bin/perl my_script.pl
    
  2. -Iコマンド ライン スイッチを使用する

    15 15 * * 1-5 /usr/local/bin/perl -I/root/perl5/lib/perl5 my_script.pl
    
  3. libperl スクリプト内でプラグマを使用する

    #! /usr/local/bin/perl
    # my_script.pl: the script that does my thing
    use lib '/root/perl5/lib/perl5';
    use Net::Finger;
    ...
    

また、cron ジョブの環境は、コマンド ラインの環境よりもはるかにまばらであり、特に cron 環境の$PATH変数は、期待したものではない可能性があることに注意してください。Perl 実行可能ファイルへのフル パスを指定していない場合は$PATH、cron 環境が使用しているものを確認し、正しいバージョンの perl を実行していることを確認してください。

于 2013-06-19T15:05:56.900 に答える