2012-03-02 135 views
2

我無法在我的perl 5.8.8中安裝任何模塊。我收到此錯誤消息,試圖安裝任何東西:Perl安裝破壞

Global symbol "%Config" requires explicit package name at /usr/lib/perl5/5.8.8/File/Copy.pm line 83. 
Global symbol "%Config" requires explicit package name at /usr/lib/perl5/5.8.8/File/Copy.pm line 83. 
Global symbol "%Config" requires explicit package name at /usr/lib/perl5/5.8.8/File/Copy.pm line 83. 
Compilation failed in require at /usr/lib/perl5/5.8.8/CPAN.pm line 51. 
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.8/CPAN.pm line 51. 
Compilation failed in require at /usr/lib/perl5/5.8.8/App/Cpan.pm line 183. 
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.8/App/Cpan.pm line 183. 
Compilation failed in require at /usr/bin/cpan line 8. 
BEGIN failed--compilation aborted at /usr/bin/cpan line 8. 

請幫忙。我試過Google搜索,但大多數搜索結果都假定它的大小約爲use strict。在我的情況下,似乎我有一個破碎的安裝。

+4

我不能你的問題。你不能模塊? – TLP 2012-03-02 14:22:45

+0

不知道問題是什麼,但最初我試圖安裝Net :: SFTP :: Foreign。有錯誤。做了一些Google搜索,其中一個建議是嘗試重新綁定Bundle :: CPAN。同樣的錯誤。 – Lazloman 2012-03-02 14:40:52

+0

你的核心perl安裝被破壞,你的Config.pm被丟棄,或者其他東西安裝了一個隱藏Perl的Config.pm。 'perl -MConfig -le'print $ INC {「Config.pm」}''輸出是什麼? – hobbs 2012-03-02 14:43:40

回答

3

File::Copy是這樣做的:如果有一個在@INC(包括在您運行的代碼的目錄)命名爲Config.pm文件

use Config; 

後來

if ((($Config{d_symlink} && $Config{d_readlink}) || $Config{d_link}) && 

,它將優先通過Perl內置的Config模塊,而File::Copy將不會再被賦予%Config散列,所以File::Copy會中斷。

解決方案是命名有問題的模塊。

+1

我做了一個搜索,發現了幾個關於我的系統的Config.pm副本。無論如何要確定哪一個是錯誤的?我應該假設INC中的第一個目錄,其中Config.pm是衝突的目錄?當前目錄不能承受。 – Lazloman 2012-03-02 15:58:10

+1

@ user675712 - 'perl -MConfig -e'print $ INC {「Config.pm」}''會告訴你哪個'Config.pm'正在被加載。 – mob 2012-03-02 16:09:06

+0

我剛剛重命名Config.pm(基於INC)的第一次出現,並且能夠進入cpan shell,這是我以前不能做的,所以我認爲這個問題已經解決,但是現在我有一個內存錯誤:。 ..不能分配內存......我可能只需要停止一些守護進程,Apache,mySQL等等。但是這將不得不等到晚些時候。無論如何,這個問題至少可以解決。感謝大家的幫助。 – Lazloman 2012-03-02 16:14:15