[英]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软件包名称的一般规则是:
因此,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.