Perl 无法在@INC 中定位模块 [英] Perl cannot locate module in @INC

查看:63
本文介绍了Perl 无法在@INC 中定位模块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行 Centos 6.4 和 perl 5.10.我有一个使用 DateTime 模块的简短脚本.但是,当我运行我的脚本时,我收到以下错误消息,告诉我无法找到各种模块,因为它们不在库路径中.

I am running Centos 6.4 and perl 5.10. I have short script which uses the DateTime module. However when I run my script I get the following error message telling me various modules cannot be located as they are not in the library path.

Can't locate Params/Validate.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/lib64/perl5/DateTime/Duration.pm line 11.
BEGIN failed--compilation aborted at /usr/lib64/perl5/DateTime/Duration.pm line 11.
Compilation failed in require at /usr/lib64/perl5/DateTime.pm line 45.
BEGIN failed--compilation aborted at /usr/lib64/perl5/DateTime.pm line 45.
Compilation failed in require at ./jr_fix_western_filestore.perl line 39.
BEGIN failed--compilation aborted at ./jr_fix_western_filestore.perl line 39.

所有这些软件包都是通过 yum 安装的.例如 yum install perl-Params-Validate.x86_64yum install perl-DateTime.x86_64.yum 安装不应该把这些模块放在@INC 中吗?

All of these packages have been installed via yum. eg yum install perl-Params-Validate.x86_64 and yum install perl-DateTime.x86_64. Should the yum install not place these modules in @INC?

我也尝试通过 cpan 安装软件包,但这似乎想先下载大量依赖项,但不可避免地会失败.

I have also tried to install the packages via cpan but this seems to want to download lots of dependencies first and inevitably fails.

  CPAN.pm: Going to build D/DR/DROLSKY/DateTime-1.03.tar.gz

Can't locate Module/Build.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 Build.PL line 5.
BEGIN failed--compilation aborted at Build.PL line 5.
Warning: No success on command[/usr/bin/perl Build.PL --installdirs site]
Warning (usually harmless): 'YAML' not installed, will not store persistent state
  DROLSKY/DateTime-1.03.tar.gz
  /usr/bin/perl Build.PL --installdirs site -- NOT OK
Running Build test
  Make had some problems, won't test
Running Build install
  Make had some problems, won't install
Could not read '/root/.cpan/build/DateTime-1.03-Brpqo5/META.yml'. Falling back to other methods to determine prerequisites
  Warning: CPAN.pm discovered Module::Build as undeclared prerequisite.
  Adding it now as such.

当我尝试在 cpan 中安装 Module::Build 时,出现以下错误

When I try to install Module::Build in cpan, I get the following error

Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible
Failed during this command:
 OVID/Test-Harness-3.28.tar.gz                : make_test NO
 MSCHWERN/Test-Simple-0.98.tar.gz             : make_test NO
 JPEACOCK/version-0.9902.tar.gz               : make_test NO
 BOBTFISH/Module-Metadata-1.000014.tar.gz     : make_test NO
 DAGOLDEN/CPAN-Meta-YAML-0.008.tar.gz         : make_test NO
 MAKAMAKA/JSON-PP-2.27202.tar.gz              : make_test NO
 DAGOLDEN/Parse-CPAN-Meta-1.4404.tar.gz       : make_test NO
 DAGOLDEN/CPAN-Meta-Requirements-2.122.tar.gz : make_test NO
 DAGOLDEN/CPAN-Meta-2.130880.tar.gz           : make_test NO
 DAGOLDEN/Perl-OSType-1.003.tar.gz            : make_test NO
 JESSE/Locale-Maketext-Simple-0.21.tar.gz     : make_test NO
 BINGOS/Params-Check-0.36.tar.gz              : make_test NO
 BINGOS/Module-Load-0.24.tar.gz               : make_test NO
 BINGOS/Module-CoreList-2.91.tar.gz           : make_test NO
 BINGOS/Module-Load-Conditional-0.54.tar.gz   : make_test NO
 BINGOS/IPC-Cmd-0.80.tar.gz                   : make_test NO
 DAGOLDEN/ExtUtils-CBuilder-0.280205.tar.gz   : make_test NO
 LEONT/Module-Build-0.4005.tar.gz             : make NO

有什么指点吗?

rpm -ql perl-Params-Validate 返回

/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Attribute
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Attribute/Params
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Attribute/Params/Validate.pm
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Params
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Params/Validate.pm
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Params/ValidatePP.pm
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/Params/ValidateXS.pm
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/Params
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/Params/Validate
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/Params/Validate/Validate.bs
/usr/lib64/perl5/vendor_perl/5.8.5/x86_64-linux-thread-multi/auto/Params/Validate/Validate.so
/usr/share/doc/perl-Params-Validate-0.95
/usr/share/doc/perl-Params-Validate-0.95/Changes
/usr/share/doc/perl-Params-Validate-0.95/LICENSE
/usr/share/doc/perl-Params-Validate-0.95/MANIFEST
/usr/share/doc/perl-Params-Validate-0.95/META.yml
/usr/share/doc/perl-Params-Validate-0.95/README
/usr/share/doc/perl-Params-Validate-0.95/TODO
/usr/share/man/man3/Attribute::Params::Validate.3pm.gz
/usr/share/man/man3/Params::Validate.3pm.gz
/usr/share/man/man3/Params::ValidatePP.3pm.gz
/usr/share/man/man3/Params::ValidateXS.3pm.gz

我不确定@INC 是否搜索了这些路径

I'm not sure if these paths are searched by @INC

然而 locate Validate.pm 什么都不返回

推荐答案

似乎您为 RHEL/Centos 4 配置了 RPMforge,但您使用的是 Centos 6:

Seems that you have RPMforge configured for RHEL / Centos 4 but you use Centos 6:

安装:perl-Params-Validate x86_64 0.95-1.el4.rf

Installing: perl-Params-Validate x86_64 0.95-1.el4.rf

按照本网站的说明进行全局 dist 升级以修复损坏的依赖项(我很幸运,不需要重新安装).然后安装你想要的 perl 包.

Follow the instructions from this site and do global dist upgrade to fix broken dependencies (I you're lucky reinstall won't be needed). Then install perl packages you want.

这篇关于Perl 无法在@INC 中定位模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆