通过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:
那么,我错过了什么?
答案 0 :(得分:3)
在Linux系统上安装Perl模块的另一种方法是从分发存储库。在Debian / Ubuntu系统上,将CPAN分发名称转换为apt包名称的一般规则是:
因此,XML :: Simple的包名称为:libxml-simple-perl
,您可以使用以下命令安装它:
sudo apt-get install libxml-simple-perl
这些规则有例外,但您始终可以通过Perl模块名称进行搜索:
apt-cache search XML::Simple
您不会从发行版的软件包存储库中获取该模块的绝对最新版本,但是对于稳定的(有些人可能会说“奄奄一息”)模块,例如XML :: Simple,通常无关紧要。
如果您确实安装了多个版本的Perl,那么从发行版的软件包存储库安装通常只会使软件包可用于/usr/bin
答案 1 :(得分:1)
一般情况下,您不应该混淆系统perl
。
使用
$ which perl
和
$ sudo which perl
查看每个perl
的生活位置。
答案 2 :(得分:1)
作为系统管理员或应用程序开发人员,您通常会遇到一个常见问题。在开发应用程序时,您可能总是需要最新的和最新的模块,而不是需要分发的模块。但即使您对Linux分发版本中的版本很好,有时您也会遇到需要特定Perl模块的问题,而且它不包含在您的发行版中。
解决该问题的通常方法只是调用let 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 Modules也是如此。如果要在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-5.16.0/bin/perl
中的Perlbrew安装
您在System Perl中成功安装了XML :: Simple。但是你的Perlbrew安装没有安装XML :: Simple,因此它仍然返回一个错误,它无法找到XMl :: Simple。
您真正需要做的唯一事情就是cpan XML::Simple
在您的主目录中的perlbrew安装中安装XML :: Simple。