【问题标题】:Perl: What is the meaning of "Could not read metadata file"?Perl:“无法读取元数据文件”是什么意思?
【发布时间】:2014-03-05 22:49:41
【问题描述】:

在几个 Debian 和 Ubuntu 服务器上更新我的 Perl 安装时,我注意到其中一些在末尾打印出“无法读取元数据文件”这一行:

# perl -MCPAN -e 'install Bundle::CPAN'
CPAN: Storable loaded ok (v2.20)
Reading '/root/.cpan/Metadata'
  Database was generated on Wed, 05 Mar 2014 13:06:14 GMT
CPAN: YAML loaded ok (v0.90)
Reading 53 yaml files from /root/.cpan/build/
CPAN: Time::HiRes loaded ok (v1.9719)
................................DONE
Restored the state of none (in 0.9880 secs)
CPAN: Module::CoreList loaded ok (v2.18)
ExtUtils::MakeMaker is up to date (6.90).
Test::Harness is up to date (3.30).
ExtUtils::CBuilder is up to date (0.280212).
File::Temp is up to date (0.2304).
Test::More is up to date (1.001002).
Data::Dumper is up to date (2.145).
IO::Compress::Base is up to date (2.064).
Compress::Zlib is up to date (2.064).
IO::Zlib is up to date (1.10).
Archive::Tar is up to date (1.96).
Module::Build is up to date (0.4205).
File::Spec is up to date (3.40).
Digest::SHA is up to date (5.87).
File::HomeDir is up to date (1.00).
Archive::Zip is up to date (1.37).
Net::FTP is up to date (2.79).
Term::ReadKey is up to date (2.31).
Term::ReadLine::Perl is up to date (1.0303).
YAML is up to date (0.90).
Parse::CPAN::Meta is up to date (1.4414).
Text::Glob is up to date (0.09).
CPAN is up to date (2.00).
File::Which is up to date (1.09).
CPAN: CPAN::Meta loaded ok (v2.120351)
Could not read metadata file. Falling back to other methods to determine prerequisites

我用谷歌搜索,但找不到任何有用的东西。猜测这不是我需要担心的,我仍然对这实际上意味着什么(以及如何摆脱它)感兴趣。

【问题讨论】:

    标签: perl cpan


    【解决方案1】:

    根据 CPAN 约定打包的 Perl 模块包括名为 META.yml 或 META.json 的 mile - 元数据文件,其中定义了构建和测试模块的先决条件列表。

    您必须阅读 CPAN 客户端的代码(感谢 tobyink)才能了解它何时/为什么会产生准确的错误消息。

    RETRACTED(见下文):因此,有问题的模块要么没有,要么格式不正确。您必须阅读构建工具的代码(通常是 Module::Builder 或 ExtUtils),以了解它何时/为什么会产生确切的错误消息。

    【讨论】:

    • 其实那个警告comes from the CPAN client;不是来自 Makefile.PL 或 Build.PL。 (Makefile.PL 和 Build.PL 通常不需要读取元数据文件——它们通常写入它。)
    • 谢谢,这让我更进一步。虽然,我不知道,代码的哪一部分可能会触发相关函数返回 false。该警告似乎源于 CPAN::Meta。
    • 欢迎使用 Perl 调试器。你想要一杯饮料吗:-)。它是一个我可以随心所欲操作的系统,我将在 CPAN 模块中设置一个断点,在错误处,然后开始四处寻找并查看我的堆栈并单步执行代码。我通过这种方式学到了很多东西。
    猜你喜欢
    • 2018-03-05
    • 2020-05-21
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2023-03-25
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多