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
Perl cannot locate module in @INC
提问by moadeep
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.
我正在运行 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_64
and yum install perl-DateTime.x86_64
. Should the yum install not place these modules in @INC?
所有这些软件包都是通过 yum 安装的。例如yum install perl-Params-Validate.x86_64
和yum 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-Validate
returns
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.pm
returns 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 更新了软件包,并且能够继续前进。