2

无论我是使用 CPAN 还是手动安装,每次我尝试运行“perl Makefile.PL”来为 Perl 模块构建 makefile 时,都会收到以下错误:

评估 Makefile.PL 时出错:无法通过 /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm 第 1199 行的包“CPAN::Meta”找到对象方法“new”

CPAN::Meta 模块已安装,所以我完全被这个模块难住了。

运行时:perl -MCPAN::Meta -e1它返回错误:

需要 0.82 版——这只是 /usr/lib/perl5/5.8.8/CPAN/Meta/Converter.pm 第 12 行的 0.78 版。

4

5 回答 5

1

似乎在安装 ExtUtils::MakeMaker 时,version.pm(捆绑在 EU::MM 中)没有升级。您需要手动升级它。如果您不使用 local::lib,则需要 root。

于 2011-05-22T20:40:53.080 回答
0

我刚刚遇到了同样的问题,这是一个带有描述的解决方案:

我正在做一个失败的“ cpan Bundle::CPAN ”。当我重新运行时,我发现 cpan 现在坏了,我无法安装任何模块。更糟糕的是,“ perl Makefile.PL ”也因同样的错误而死:

无法通过 /usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm 第 XXXX 行的包“CPAN::Meta”找到对象方法“new”

在直接测试 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,我必须首先在 MakeMaker 中禁用 CPAN::Meta。我编辑了文件:
/usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm并在“ sub _has_cpan_meta {
”之后 添加了“ return 0; ”以制作:sub _has_cpan_meta { return 0;

然后我可以正常安装 Parse::CPAN::Meta 使用“ cpan Parse::CPAN::Meta ”。之后,我确认 CPAN::Meta 正在工作“ perl -MCPAN::Meta ”并删除了我添加到/usr/lib/perl5/5.8.8/ExtUtils/MM_Any.pm的“ return 0 ” 。

嘿 presto,一切又开始工作了:)

希望对找到此线程的其他人有所帮助。

于 2011-07-30T00:02:21.687 回答
0

如果您有错误(根据关于的评论perl -MCPAN::Meta -e1):

需要 0.82 版——这只是 0.78 版

然后尝试升级它:

cpan CPAN::Meta

如果您无权全局安装 perl 包,请运行cpan并执行:

cpan> look CPAN::Meta

这将在分发目录中打开一个子shell,因此您可以手动下载 CPAN tar.gz 并将其解压缩到那里。

资料来源:安装 Inline::Python 的问题

于 2015-05-04T18:29:02.447 回答
0

最新的“版本”在这里:https ://metacpan.org/pod/version

ExtUtils::MakeMaker 包含一个精简的版本,它说:

这是 version.pm 0.9909 的修改副本,专为 ExtUtils::Makemaker 及其依赖项捆绑使用,以便在 version.pm 不可用时引导。

但在代码中它说: $VERSION = '7.36';

于 2019-07-23T14:54:05.880 回答
-1

尝试找到 CPAN::Meta 的位置并将其删除或备份,然后再次尝试安装。

于 2011-05-20T16:08:56.890 回答