繁体   English   中英

CPAN模块声称已安装但未安装

[英]CPAN modules claim to install but dont

通过VirtualBox运行UBUNTU 14.04。

执行脚本时,出现以下错误:

Can't locate XML/Simple.pm in @INC (@INC contains:...

现在,当我检查@INC的目录时,它们确实不包含XML/Simple.pm

然后我尝试通过cpan安装它

sudo cpan XML::Simple

它告诉我:

XML::Simple is up to date (2.20).

根据perl是不正确的,因为输出

perl -e "use XML::Simple "

Can't locate XML/Simple.pm in @INC (@INC contains:

那么,我想念什么?

在Linux系统上安装Perl模块的另一种方法是从分发存储库中获得。 在Debian / Ubuntu系统上,将CPAN发行名称转换为apt软件包名称的一般规则是:

  1. 将模块名称转换为小写
  2. 转换成 '-'
  3. 添加“ lib”前缀和“ -perl”后缀

因此,XML :: Simple的软件包名称为: libxml-simple-perl ,您可以使用以下命令进行安装:

sudo apt-get install libxml-simple-perl

这些规则有例外,但是您始终可以按Perl模块名称进行搜索:

apt-cache search XML::Simple

您不会从发行版的软件包存储库中获得模块的绝对最新版本,但是对于稳定的(有些人可能会说“ moribund”)模块(如XML :: Simple)通常并不重要。

如果确实安装了多个版本的Perl,则从发行版的软件包存储库进行安装通常只会使软件包可用于/usr/bin的系统Perl。

通常,您不应惹恼系统perl

采用

$ which perl

$ sudo which perl

看看每个perl住哪里。

作为系统管理员或应用程序开发人员,通常会遇到一个常见问题。 开发应用程序时,您可能总是需要最新的模块,而不是发行版附带的模块。 但是,即使您对Linux发行版本中的版本感到满意,有时您仍然会遇到需要特定的Perl模块的问题,并且该模块未包含在您的发行版中。

解决该问题的常用方法只是调用cpan XML::Simple然后下载并安装了最新模块。

但是,当您这样做时,就会弄乱了Linux发行版的软件包系统。 假设您已经从软件包系统中安装了XML :: Simple。 您的cpan命令现在将更新已经安装的版本,并用较新的版本替换它。 所有这些都很好,例如在您的Linux发行版将发布libxml-simple-perl的更新之前。 可能发生的是,您的新版本恢复为旧版本。

而且由于所有Perl模块通常都依赖于其他Perl模块,因此install命令还可以更新许多其他Perl模块。

所有这些行为都可能导致奇怪的错误。 无论是在编写的应用程序中,还是在分发中附带的应用程序中,都可以。

要“解决”该问题,通常最好的方法是完全不使用Perl系统。 从源代码完全编译自己的Perl版本。 该Perl版本具有自己的perl库,您可以直接从CPAN安装该库,而不会弄乱System Perl。

现在,要做到这一点非常容易,他们就有了一个名为Perlbrew的工具

使用此工具,您可以轻松安装任何Perl版本。 例如,仅输入perlbrew install perl-5.16.0即可在您的主目录中完全安装Perl 5.16.0! 它还会设置所有路径,以便在系统中对perl的调用可以解决此perlbrew安装问题。

同样重要的是,此Perl安装仅在普通用户帐户下的主目录中。 您不需要sudo或root帐户,因为Perl已安装在您的主目录中。

Perl模块也是如此。 如果要在Perlbrew安装中安装Perl模块,则只需键入cpan XML::Simple (或cpanm XML::Simple checkout App::cpanminus )。

现在重要的部分。 在您的系统上,您已经安装了Perlbrew。 当您执行安装程序时,即使用了Perlbrew安装。 但是在此Perlbrew安装中,没有安装XML :: Simple。

然后,您执行sudo cpan XML::Simple以安装XML :: Simple。 问题在于,所有sudo命令只是以root用户身份执行。 这意味着您将使用系统Perl /usr/bin/perl ,而不是在/home/qiime/perl5/perlbrew/perls/perl/perl-5.16.0/bin/perl中安装/home/qiime/perl5/perlbrew/perls/perl-5.16.0/bin/perl

您已成功在System Perl中安装XML :: Simple。 但是您的Perlbrew安装没有安装XML :: Simple,因此仍然返回错误,找不到XMl :: Simple。

您真正唯一需要做的就是在主目录中的perlbrew安装中使用cpan XML::Simple安装XML :: Simple。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM