Как исправить ошибку Perl CPAN-модуля: требуется версия 0.82, это только версия 0.78?
Независимо от того, использую ли я CPAN или устанавливаю вручную, каждый раз, когда я пытаюсь запустить "perl Makefile.PL" для создания make-файла для модуля Perl, я получаю следующую ошибку:
ОШИБКА при оценке Makefile.PL: невозможно найти метод объекта "new" через пакет "CPAN::Meta" в строке /99r /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm.
Модуль CPAN:: Meta установлен, поэтому я полностью озадачен этим.
Когда запустить: perl -MCPAN::Meta -e1
это возвращает мне ошибку:
требуется версия 0.82 - это всего лишь версия 0.78 в /usr/lib/perl5/5.8.8/CPAN/Meta/Converter.pm строка 12.
4 ответа
Кажется, что при установке ExtUtils::MakeMaker файл version.pm (который входит в состав EU::MM) не был обновлен. Вам нужно обновить его вручную. Для этого требуется root, если вы не используете local::lib.
Актуальная "версия" находится здесь: https://metacpan.org/pod/version
ExtUtils::MakeMaker содержит урезанную версию, в которой говорится:
Это модифицированная копия version.pm 0.9909, поставляемая исключительно для использования с ExtUtils::Makemaker и его зависимостями для начальной загрузки, когда version.pm недоступна.
Но в коде написано: $VERSION = '7.36';
Если у вас есть ошибка (согласно комментарию о perl -MCPAN::Meta -e1
):
требуется версия версии 0.82 - это всего лишь версия 0.78
затем попробуйте обновить его:
cpan CPAN::Meta
Если у вас нет доступа к глобальной установке пакетов Perl, запустите cpan
и выполнить:
cpan> look CPAN::Meta
который откроет подоболочку в каталоге дистрибутива, так что вы можете скачать CPAN tar.gz вручную и распаковать его там.
Источник: Проблемы с установкой Inline::Python
У меня была такая же проблема, вот решение с описанием:
Я делал " cpan Bundle:: CPAN ", который потерпел неудачу. Когда я перезапустил, я обнаружил, что cpan теперь не работает, и я не смог установить никаких модулей Хуже всего то, что " perl Makefile.PL " также умирает с той же ошибкой:
Не удается найти метод объекта "new" через пакет "CPAN:: Meta" в строке /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm XXXX
При непосредственном тестировании модуля CPAN:: Meta я обнаружил, что версия Parse:: CPAN:: Meta устарела:
perl -MCPAN:: Meta
Требуется Parse:: CPAN:: Meta версия 1.44 - это только версия 1.40 в строке /usr/lib/perl5/5.8.8/CPAN/Meta/Converter.pm 13.
Чтобы иметь возможность обновить Parse::CPAN::Meta, мне сначала пришлось отключить использование CPAN:: Meta в MakeMaker. Я отредактировал файл:
/usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm
И добавил " return 0; " после " sub _has_cpan_meta { ", чтобы сделать:
sub _has_cpan_meta {
вернуть 0;
Затем я смог установить Parse:: CPAN:: Meta как обычно с помощью " cpan Parse:: CPAN:: Meta ". После этого я подтвердил, что CPAN:: Meta работает с " perl -MCPAN:: Meta " и удалил " return 0 ", который я добавил в /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm
Привет, все снова работает:)
Надеюсь, что это поможет любому, кто найдет эту ветку.
Попробуйте найти местоположение CPAN::Meta и удалите его или создайте резервную копию, а затем попробуйте установить его снова.