2016-06-28 3 views
0

私はPerlスクリプトとCPAN Twitterモジュールに問題があります。Crontabとperl

私はspeedtestを実行し、結果をTwitterに投稿しようとしているスクリプトを持っています。

私のユーザーアカウントから./speedtest.plを実行してスクリプトを手動で実行することができましたが、crontabを使用して実行しようとするとエラーが発生します。

- :私は私の地元のcrontabから私のスクリプトを実行したときに、私は次のエラーを取得する:私は

cpanm Net::Twitter 

など

(なし須藤注)使用してNet::TwitterFile::HomeDirConfig::Tinyをインストールしている

Can't locate Net/Twitter.pm in @INC (you may need to install the 
Net::Twitter module) (@INC contains: /etc/perl /usr/local/lib/arm-linux- 
gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux- 
gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf 
/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl .) at /home/pi 
/speedtest.pl line 99. 
BEGIN failed--compilation aborted at /home/pi/speedtest.pl line 99. 

誰かが正しい方向に向いていますか?私はそれはNet::Twitterなどが終わったところと関係があると思うが、私はcrontabがそれを見つける場所を知るようにそれを修正する方法を知らない。 crontabのジョブが

which perlを試してみて、その後、同じコマンドの出力を見て実行したときに、コマンドラインから実行

speedtest.pl is here

+1

バージョンを取得するには、 'perl -v'を実行しますか?これはperlの2つのバージョンがインストールされているようです。典型的な犯人は '/ usr/bin/perl'と'/usr/local/bin/perl'です。このスクリプトは、前者を使用するよう明示されています。 – Sobrique

+0

perl 5、version 20、subversion 2(v5.20.2) –

答えて

1

Perlのインストールには、システムずつ実行異なっていますcronで実行する

システムの構成によっては、これを修正する方法がいくつかあります。最も明白なのは、独自のperlのコピーに完全なパスを使用することですが、おそらくそれはおそらく悪い考えです。

+0

どうすればいいですか? perlが私に '/ usr/bin/perl'を与えるユーザーアカウントから実行しますが、これをどのように修正するのか分かりません。どのようにcronでそれを見るかわからない –

+0

スクリプトを変更する - '#!/ usr/local/bin/perl'を入れてください。または '/ usr/bin/perl -MCPAN -e shell'を実行し、必要なライブラリをサイトperlにインストールしてください。 – Sobrique

+0

ファイルの先頭にある '#!/ usr/local/bin/perl'は' -bash:./speedtest.pl:/ usr/bin/local/perl:悪いインタプリタです:私は '。/ speedtest.pl'でファイルを実行します。 '/ usr/bin/perl -MCPAN -e shell'の後に' install Net :: Twitterが続き、Net :: Twitterが最新(4.01020)であることがわかります。 –

1

ローカルアカウントを使用してNet :: Twitterをインストールした可能性があります。 rootにログインして、モジュールをインストールすると、この問題は解決されます。&