Проблема зависимости модулей Perl CPAN

Я попытался установить SOAP::WSDL на сервер Ubuntu 8.04 через 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?


person netvope    schedule 15.08.2010    source источник
comment
Расстрелять людей, которые до сих пор утверждают, что использование триплетов версий для своих модулей — это нормально, потому что все инструменты, которые испробовали, не ломаются?   -  person ysth    schedule 16.08.2010
comment
Стреляйте в людей, которые до сих пор выпускают Makefile.PL. Их время давно прошло; они просто портят работу.   -  person Schwern    schedule 16.08.2010


Ответы (3)


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

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

Сообщено об ошибке в SOAP::WSDL.

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

person Schwern    schedule 16.08.2010

Какая у вас версия CPAN? А конфигурация? (o conf в приглашении оболочки cpan.)

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

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

person ysth    schedule 15.08.2010
comment
CPAN версии 1.9402. Ссылка на конфигурацию: vmubuntu.lcm.hk/~netvope/cpan_conf.txt - person netvope; 16.08.2010
comment
@netvope: выглядит нормально; но я не понимаю, почему он вообще пытается использовать Module::Build::Compat?? - person ysth; 16.08.2010
comment
В какой ситуации вы ожидаете, что он будет использовать Module::Build::Compat? - person netvope; 16.08.2010
comment
Если для параметра preference_installer установлено значение eumm (как я вижу, это не так). Если на дистрибутиве нет Build.PL (он есть). Если Module::Build не загружается... это открытый вопрос. Подробнее см. CPAN::Distribution->choose_MM_or_MB. - person Schwern; 16.08.2010
comment
при выполнении perl Makefile.PL вместо perl Build.PL - person ysth; 16.08.2010

Попробуй это,

cpan Module::Build

и

cpan Module::Build::Compat

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

После того, как вы это сделаете, выполните:

cpan install CPAN

и наконец,

cpan upgrade

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

person Mantovani    schedule 16.08.2010
comment
Как Ubuntu изменяет пакеты, если вы пытаетесь установить модули с пользователем root? - person netvope; 16.08.2010