Как исправить ошибку 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 и удалите его или создайте резервную копию, а затем попробуйте установить его снова.

Другие вопросы по тегам