Perl/cpan:无法找到 JSON/Parse.pm @INC

Duv*_*uts 1 linux perl centos centos7

我在 CentOS 7 上运行。

我已经通过 cpan 安装了 JSON::Parse 但出现错误。

Can't locate JSON/Parse.pm in @INC (@INC contains: 
/home/truckassist/modules 
/usr/local/lib64/perl5 
/usr/local/share/perl5 
/usr/lib64/perl5/vendor_perl 
/usr/share/perl5/vendor_perl 
/usr/lib64/perl5 
/usr/share/perl5 .)
Run Code Online (Sandbox Code Playgroud)

运行时cpan JSON::Parse我得到以下信息:JSON::Parse is up to date (0.62)

到目前为止我已经尝试过以下操作...

perl -e "print qq(@INC)"
Run Code Online (Sandbox Code Playgroud)

输出:

/root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi 
/root/perl5/lib/perl5/5.16.3 
/root/perl5/lib/perl5/x86_64-linux-thread-multi 
/root/perl5/lib/perl5 
/usr/local/lib64/perl5 
/usr/local/share/perl5 
/usr/lib64/perl5/vendor_perl 
/usr/share/perl5/vendor_perl 
/usr/lib64/perl5 
/usr/share/perl5
Run Code Online (Sandbox Code Playgroud)

还:

find /root/perl5 -iname '*json*'

输出:

/root/perl5/bin/cpanel_json_xs
/root/perl5/bin/json_pp
/root/perl5/bin/validjson
/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/Cpanel/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/Cpanel/JSON
/root/perl5/lib/perl5/x86_64-linux-thread-multi/JSON
/root/perl5/lib/perl5/JSON
/root/perl5/lib/perl5/JSON.pm
/root/perl5/man/man1/cpanel_json_xs.1
/root/perl5/man/man1/json_pp.1
/root/perl5/man/man3/JSON::PP.3pm
/root/perl5/man/man3/JSON::PP::Boolean.3pm
/root/perl5/man/man3/JSON.3pm
/root/perl5/man/man3/JSON::backportPP.3pm
/root/perl5/man/man3/JSON::backportPP::Boolean.3pm
/root/perl5/man/man3/JSON::backportPP::Compat5005.3pm
/root/perl5/man/man3/JSON::backportPP::Compat5006.3pm
/root/perl5/man/man3/JSON::Parse.3pm
/root/perl5/man/man3/Cpanel::JSON::XS.3pm
/root/perl5/man/man3/Cpanel::JSON::XS::Boolean.3pm
/root/perl5/man/man3/Cpanel::JSON::XS::Type.3pm
/root/perl5/man/man3/JSON::MaybeXS.3pm
/root/perl5/man/man3/JSON::Tokenize.3pm
/root/perl5/man/man3/JSON::Whitespace.3pm
Run Code Online (Sandbox Code Playgroud)

我只能假设它正在查看不正确的 cpan/perl 目录。

有人可以帮忙或提供一些指导吗?

ike*_*ami 6

您将该模块安装在非标准目录 ( /root/perl5/lib/perl5/x86_64-linux-thread-multi) [1]中,但没有告知perl[2],或者您没有足够的权限来访问它。

确保其他用户拥有访问/root/perl5及其内容所需的权限。

要知道perl在哪里找到模块,您可以使用

export PERL5LIB=/root/perl5/lib/perl5
Run Code Online (Sandbox Code Playgroud)

或者,在为计算机上的每个人安装时,停止将模块安装在不寻常的位置。

root 时取消设置PERL_MB_OPTPERL_MM_OPT(和), [3]然后重新安装模块。您可能想要摆脱以避免混淆。PERL5LIB/root/perl5


  1. 您正在使用 local::lib 作为 root,安装“仅适用于 root”的模块。
  2. 除非以 root 身份运行,这就是为什么cpan在 root 时找到它。
  3. 例如,不使用 local::lib 作为 root。