2016-11-04 46 views
0

我想安裝一個缺少的模塊使用我的腳本,因爲我不能指望我的用戶做任何簡單的事情,因爲安裝缺少模塊。無法找到包CPAN :: Debug for @CPAN :: Shell :: ISA在

use strict; 
use warnings; 
use CPAN::Shell; 

sub try_load { 
    my $mod = shift;  
    eval("use $mod"); 

    if ([email protected]) { 
     #print "\[email protected] = [email protected]\n"; 
     return(0); 
    } else { 
     return(1); 
    } 
} 

my $module = 'URI::Escape'; 
if (try_load($module)) { 
    print "loaded\n"; 
} else { 
    print "not loaded\n"; 
    CPAN::Shell->install("URI::Escape"); 
    # system("ppm install "); 
} 

但我總是得到一個錯誤上面的測試腳本:

Can't locate package CPAN::Debug for @CPAN::Shell::ISA at checkmodule.pl line 3.

但是當我做:

my $module = 'CPAN::Debug'; 
if (try_load($module)) { 
    print "loaded\n"; 
} else { 
    print "not loaded\n"; 
    CPAN::Shell->install("CPAN::Debug"); 
    # system("ppm install "); 
} 

我得到的消息loaded意思我有CPAN::Debug ???。

我不能這樣做:perl -MCPAN -e shell,因爲CPAN認爲我的GCC 4.6.1版本不夠好,想要安裝4.6.3,這會破壞我的許多開發環境以及安裝的工具我的用戶系統。 [我真的希望強制CPAN使用我的系統版本的MinGW GCC,但我不知道如何,但這是另一次]。

有沒有人知道我可以解決這個錯誤上面在我的標題? 謝謝!

+0

它字面上談論工作這個包,就像在命名空間中一樣。問題*不是*模塊無法加載;這是它*沒有*加載。這似乎表明你已經搞砸了CPAN :: Shell或CPAN :: Debug。 – ikegami

+0

hey @ikegami,我如何強制CPAN使用我的系統版本的GCC,而不是下載並安裝更新的GCC?我不想升級,因爲我的一些工具是使用GCC的舊版本進行編譯的,如果我升級它將會搞亂很多其他的東西。我試圖讓工作更輕鬆,而不是更難。 – YouHaveaBigEgo

+0

我不知道。這是ActiveState添加到他們的發行版中的功能。 – ikegami

回答

0

CPAN::ShellCPAN模塊只是一個組成部分,而不是孤立的

使用。如果你只需要改變你的use聲明use CPAN那麼一切都應該爲你