2010-08-15 4 views
2

Я попытался установить SOAP::WSDL на Ubuntu 8.04 Server, через CPAN, но получил следующее сообщение об ошибке:Dependency проблема модулей Perl CPAN

cpan> install SOAP::WSDL 
Running install for module SOAP::WSDL 
Running make for M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz 
Checksum for /root/.cpan/sources/authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz ok 
SOAP-WSDL-2.00.10/ 
SOAP-WSDL-2.00.10/benchmark/ 
(skipped many lines) 
SOAP-WSDL-2.00.10/README 

    CPAN.pm: Going to build M/MK/MKUTTER/SOAP-WSDL-2.00.10.tar.gz 

# running Build.PL --installdirs site 
Creating new 'MYMETA.yml' with configuration results 
Creating new 'Build' script for 'SOAP-WSDL' version '2.00.10' 
Prereq '0.0.5' for 'Class::Std::Fast' is not supported by Module::Build::Compat 
Running make test 
    Make had some problems, maybe interrupted? Won't test 
Running make install 
    Make had some problems, maybe interrupted? Won't install 

У меня есть последние версии Class::Std::Fast и Module::Build::Compat:

$ perl -MModule::Build::Compat -e 'print $Module::Build::Compat::VERSION;' 
0.3607 
$ perl -MClass::Std::Fast -e 'print $Class::Std::Fast::VERSION;' 
0.0.8 

Любая идея, как решить проблему? Возможно, мне нужно понизить рейтинг Class::Std::Fast до версии 0.0.5?

+4

Стреляйте в людей, которые * все еще поддерживают все версии, чтобы использовать их для своих модулей, потому что все инструменты, которые они * пробовали, не сломались? – ysth

+2

Стреляйте людей, которые все еще загружают Makefile.PLs. Их время давно прошло; они просто задирают работы. – Schwern

ответ

6

Короче говоря, похоже, что ваша установка CPAN предпочитает использовать совместимость Makefile.PL вместо Build.PL. Он должен предпочесть Build.PL. Makefile.PLs предназначались только для совместимости и могут не иметь всех функций Module :: Build, например, поддерживающих версии из трех частей.

Запуск cpan. o conf позволит вам увидеть вашу конфигурацию. Если prefer_installer не установлен в МБ, тогда сделайте o conf prefer_installer MB. Возможно, вам понадобится o conf commit, чтобы сохранить его (он вам скажет). Вам также может потребоваться установить Module :: Build, либо из пакета libmodule-build-perl, либо из CPAN.

Bug reported to SOAP::WSDL.

PS Вы можете обойти это, установив Class :: Std :: Fast сначала, загрузите SOAP :: WSDL вручную, отредактируйте Build.PL, чтобы удалить эту зависимость, и запустите cpan . в каталоге SOAP :: WSDL, чтобы установить его и его отпечатки.

1

Какова ваша версия CPAN? И конфигурация? (o conf в командной строке cpan.)

Хм, это все выглядит нормально. Если по какой-то причине CPAN не смог загрузить Module :: Build? Можете ли вы попробовать установить новую оболочку из новой оболочки CPAN без предыдущих команд?

Или попробуйте выполнить ручную установку без использования CPAN.pm?

+0

CPAN версия 1.9402. Ссылка на конфигурацию: http://vmubuntu.lcm.hk/~netvope/cpan_conf.txt – netvope

+0

@netvope: выглядит нормально; но я не понимаю, почему он даже пытается использовать Module :: Build :: Compat ?? – ysth

+0

В какой ситуации вы ожидали, что он будет использовать Module :: Build :: Compat? – netvope

0

Попробуйте,

cpan Module::Build 

и

cpan Module::Build::Compat 

И я забыл сказать что-то, то Ubuntu изменить пакеты, если вы пытаетесь установить модули с правами суперпользователя, забывают. Повторите попытку с помощью local::lib.

После вы делаете это, сделайте следующее:

cpan install CPAN 

и, наконец,

cpan upgrade 

Это должно решить вашу проблему.

+0

Как «Ubuntu изменяет пакеты, если вы пытаетесь установить модули с пользователем root»? – netvope