我在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 .)

当运行cpan JSON::Parse时,我得到以下结果:JSON::Parse is up to date (0.62)

到目前为止,我已经try 了以下几种方法.

perl -e "print qq(@INC)"

输出:

/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

所以:

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

我只能假设它正在查看错误的cpan/perl目录.

有没有人能帮忙或指点方向?

推荐答案

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

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

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

export PERL5LIB=/root/perl5/lib/perl5

或者,在为机器上的每个人安装时,停止在不寻常的位置安装模块.

如果是超级用户,请取消设置PERL_MB_OPTPERL_MM_OPT(和PERL5LIB),[3],然后重新安装模块.您可能希望go 掉/root/perl5,以避免混淆.


  1. 您正在使用local::lib作为根,安装"仅用于根"的模块.
  2. 除了以超级用户身份运行时,这就是为什么cpan在超级用户身份时会找到它.
  3. 例如,不使用local::lib作为根.

Linux相关问答推荐

Linux-如何区分目录中名称相同但扩展名不同的所有文件

如果在两种模式之间找到文本,则使用sed删除它们之间的所有行

运行系统命令失败,但相同的命令可以直接在 bash 中执行

如何计算文本的时差,如 YYYYMMDDHHMMSSXXX 格式,包括毫秒

Linux 如何将主机文件作为用户的输入并将其调用到脚本中

什么是`quote`命令?

使用 bash 在包含模式的 java 文件中查找行,然后替换该行的另一部分

在三星 chromebook 上编程

sed: -i 不能与 Mac OS X 上的标准输入一起使用

使用 RPATH 但不使用 RUNPATH?

在 Ubuntu 上运行自包含的 ASP.NET Core 应用程序

如何在 Ubuntu 12.04 中更改 Jenkins 安装的端口号

加密/解密在两个不同的 openssl 版本之间不能很好地工作

如何让 PHP、Symlinks 和 __FILE__ 很好地协同工作?

在 linux 上查看文件大小

用于数据库备份的 Linux shell 脚本

发出信号并中断比较

如何知道linux调度器时间片?

cat、grep 和 cut - 翻译成 python

我可以使用 awk 将所有小写字母转换为大写吗?