2010-12-15 71 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(位於該路徑中)。我添加了PERL5LIB的路徑,用「perl -V」驗證,但調試器仍然找不到它。

也許一種解決方法是將GD安裝在@INC路徑之一中,但是a)我不知道該怎麼做,以及b)我真的很想知道發生了什麼。

這是在Fedora Core 12

我不知道是否有差別,但GD ::圖是由我的主腳本包括一個模塊中實際使用。主腳本不使用它。

更新:以下建議,我重新輸入CPAN並強制安裝。 CPAN表示它在/root/.cpan/(etc)中找到了安裝,並在@INC前面指出了該路徑。然後,我從.cpan目錄手動刪除GD,然後再次安裝。這次CPAN把它放在同一個地方,並且還放在/usr/local/lib/perl5/GD-2.45PSn9K「。它將兩條路徑都加入@INC。我已經驗證它在那裏,並且perl調試器聲稱尋找在那裏,但仍然找不到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: 

...並列出其中的路徑。它確實在那裏:

[root /]# find . -name "GD.pm" 
./usr/local/lib/perl5/GD-2.45-4PSn9K/GD.pm 
./usr/local/lib/perl5/GD-2.45-4PSn9K/blib/lib/GD.pm 
(and the /root/.cpan paths) 
+0

這是一個CPAN構建目錄,它也應該在'PERL5LIB'中安裝文件。 CPAN在編譯結束時列出它安裝文件的目錄 – 2010-12-15 22:20:49

+3

您也可以嘗試'perldoc -lm GD :: Graph'來查找安裝的位置。 – dwarring 2010-12-15 22:24:35

回答

1

在Bourne兼容:

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 2010-12-16 14:49:07

0

不要使用地點 - cpan可能會丟掉很快(埃裏克在他的評論中提到的,這只是一個build目錄,而這些得到清理過了一段時間)。

如果你可以從你的腳本訪問它沒有這種use lib行,您可以通過

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

找到其他(大概正確安裝)版本還是看@INC路徑,以瞭解潛在的地方它可能藏

warn join, "\n", @INC; 

史努比的perldoc lm招也不錯,但如果你有其他事情在腳本@INC打可能不完全準確。

如果你需要一個use lib線讓它在腳本版本工作,那麼想必沒有正確安裝,以便斧頭兵的force install建議可能是值得一試(這應該告訴你,它是把文件)。

+0

強制安裝只會導致/root/.cpan位置被預置爲PERL5LIB,而不是安裝到不同的位置。所以我從那裏刪除它,並再次嘗試安裝,這次強制它。 CPAN把它放回原處。如果cpan將這個位置扔掉,我該怎麼辦? – jasper77 2010-12-16 14:49:20

相關問題