跳过正文
  1. Posts/

运行 lcov 报错 "Can't locate JSON/PP.pm in @INC ..."

·360 字·1 分钟· ·
沈显鹏
作者
沈显鹏
DevOps & Build 工程师 | Python 爱好者 | 开源贡献者
目录

在执行以下命令生成代码覆盖率报告时:

lcov --capture --directory . --no-external --output-file coverage.info

我遇到了如下错误:

Capturing coverage data from .
Can't locate JSON/PP.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/bin/geninfo line 63.
BEGIN failed--compilation aborted at /usr/local/bin/geninfo line 63.

1. Can’t locate CPAN.pm
#

当运行 perl -MCPAN -e 'install JSON' 时出现:

Can't locate CPAN.pm in @INC ...

解决方法:安装 perl-CPAN

sudo yum install perl-CPAN

2. Can’t locate JSON/PP.pm
#

安装好 CPAN 后,再运行安装 JSON:

sudo perl -MCPAN -e 'install JSON'

如果依然报找不到 JSON/PP.pm,可通过复制 backportPP.pm 解决:

cd /usr/local/share/perl5/JSON
cp backportPP.pm PP.pm

3. Can’t locate Module/Load.pm
#

geninfo --version
Can't locate Module/Load.pm in @INC ...

解决方法:安装 perl-Module-Load-Conditional

sudo yum install perl-Module-Load-Conditional

4. Can’t locate Capture/Tiny.pm
#

lcov --version
Can't locate Capture/Tiny.pm in @INC ...

解决方法:用 CPAN 安装 Capture::Tiny

perl -MCPAN -e 'install Capture::Tiny'

5. Can’t locate DateTime.pm
#

genhtml --help
Can't locate DateTime.pm in @INC ...

在 CentOS 7 下安装:

sudo yum install 'perl(DateTime)'

(但我测试中该方法无效,仅作参考。)


6. 运行 geninfo 报 Zlib 版本错误
#

Compress::Raw::Zlib version 2.201 required--this is only version 2.061 ...

解决方法:安装最新 Compress::Raw::Zlib

perl -MCPAN -e 'install Compress::Raw::Zlib'

通过逐一安装缺失的 Perl 模块,lcov 最终恢复正常工作:

lcov --version
lcov: LCOV version v1.16-16-g038c2ca

转载本文请注明作者与出处,禁止商业用途。欢迎关注公众号「DevOps攻城狮」。

相关文章