2010-12-15 39 views
0

CPANを使用して、GD :: Graphをインストールして、横に積まれた棒グラフを作成しました。 CPANは/root/.cpan/build/GD-2.45-4PSn9Kにモジュールをインストールしましたが、@ INCにはありません。私のスクリプトでは、モジュールを追加することでモジュールにアクセスできますスクリプトが見つけたモジュールをperlデバッガが見つけられないのはなぜですか?

use lib "/root/.cpan/build/GD-2.45-4PSn9K" 

このスクリプトでは問題なくチャートが生成されるようになりました。私はperlデバッガ( "perl -d myscript.pl")を使いたいと思っていましたが、GD.pm(そのパスにある)を見つけることができないという不満がありました。 "perl -V"で検証したPERL5LIBへのパスを追加しましたが、それでもデバッガはそれを見つけることができません。

これはおそらく@INCパスの1つにGDをインストールすることですが、a)その方法はわかりませんし、b)実際に何が起こっているのか理解したいと思います。

これは私が違いを作るかのかどうか知りませんが、GD ::グラフは実際に私のメインのスクリプトに含まれるモジュールに使用されているのFedora Coreに12

です。メインスクリプトはそれを使用しません。

アップデート:以下の提案を参考にして、CPANに再入力してインストールを強制しました。 CPANはインストールが/root/.cpan/(etc)にあり、そのパスが@INCにあらかじめ保留されていると言いました。私は手動で.cpanディレクトリからGDを削除し、再度インストールに行きました。今回はCPANが同じ場所に置かれ、/usr/local/lib/perl5/GD-2.45PSn9K "にも置かれていました。それは@INCに両方のパスの前に置かれていました。そこに見ているが、それでもは(ある)GD.pmを見つけることができませんし、スクリプトを実行しません

@INC: 
/usr/local/lib/perl5/GD-2.45-4PSn9K/ 
    (and others) 

のperl -dから:。

Can't locate loadable object for module GD in @INC (@INC contains: 

...そのパスを他のパスの中にリストします。実際にそこにあります:

012 Bourne互換で
+0

これはCPANビルドディレクトリで、 'PERL5LIB'のどこかにファイルをインストールしているはずです。 CPANはビルドの最後にファイルをインストールしたディレクトリを一覧表示します –

+3

'perldoc -lm GD :: Graph'を試して、インストールされている場所を見つけることもできます。 – dwarring

答えて

1

export PERL5LIB=$PERL5LIB:/root/.cpan/build/GD-2.45-4PSn9K 

これが最善の解決策ではありません。実際にはcpan経由でインストールする必要があります。正常に動作し、インストールされない場合は、forceが必要になる場合があります。

force install GD::Graph 

もあり

perl -I/root/.cpan/build/GD-2.45-4PSn9K -d myscript.pl 
+0

@ jasper77:リリース開発者が入れた堅すぎない状態でテストに失敗したか、または強すぎる状態になった可能性があります。 – Axeman

0

その場所で使用しないでください - エリックは彼のコメントで述べたようにcpanはおそらく(すぐにそれを捨てるだろうが、それは単にビルドディレクトリだし、これらを洗浄ます離れて)。

あなたは

use GD; 
warn $INC{"GD.pm"}; 

またはそれが隠れかもしれない潜在的な場所を確認するために@INCパスを見てによって(おそらく正しくインストール)他のバージョンを見つけることができるuse libラインなしでスクリプトからアクセスできる場合

warn join, "\n", @INC; 

スヌーピーのperldoc lmトリックはあまりにも良いですが、あなたはスクリプトで@INCで遊んで他のものを持っている場合、完全に正確ではないかもしれません。

スクリプト版で動作させるにはuse lib行が必要な場合は、Axemanのforce installの提案がファイルをどこに置いているのかがわかるはずです)。

+0

インストールを強制すると、/root/.cpanの位置がPERL5LIBの先頭に追加されます別の場所。そこで私はそこからそれを取り出し、今度はインストールを再試行しましたが、今度はそれを強制します。 CPANはそれを同じ場所に戻しました。 cpanがその場所を捨てるなら、私は何ができますか? – jasper77

関連する問題