Linux Perl 无法在@INC 中定位模块

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/16730715/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 23:01:48  来源:igfitidea点击:

Perl cannot locate module in @INC

linuxperlredhat

提问by moadeep

I am running Centos 6.4 and perl 5.10. I have short script which uses the DateTimemodule. 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.

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

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.

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

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

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 安装软件包,但这似乎想先下载大量依赖项,但不可避免地会失败。

  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.

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

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

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

Any pointers?

任何指针?



rpm -ql perl-Params-Validatereturns

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

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

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

However locate Validate.pmreturns nothing

但是locate Validate.pm什么都不返回

采纳答案by Xaerxess

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

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

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

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

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

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

回答by AMB

search and install

搜索并安装

 yum install perl-CGI

this worked for me.,

这对我有用。,

回答by Mike T

I'm late to the discussion, but had the same problem. Here is how I solved it.

我迟到了讨论,但遇到了同样的问题。这是我解决它的方法。

CPAN was giving me the same error because an older version of was installed under yum. I updated the package via yum and was able to move forward.

CPAN 给了我同样的错误,因为在 yum 下安装了旧版本。我通过 yum 更新了软件包,并且能够继续前进。