2016-11-04 2 views
0

Я пытаюсь установить отсутствующий модуль с помощью моего скрипта, потому что я не могу ожидать, что мои пользователи сделают что-нибудь простое, модуль.Не удается найти пакет CPAN :: Debug for @CPAN :: Shell :: ISA at

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::Shell только один компонент CPAN модуля, и не предназначен для использования в изоляции

Если вы просто изменить use заявление use CPAN то все должно работать для вас

Смежные вопросы