Perl Can';t在@INC中找到SOAP/Lite.pm
我试图按照说明构建LDV项目,但我对perl一无所知 我在运行测试时遇到以下错误Perl Can';t在@INC中找到SOAP/Lite.pm,perl,ubuntu-14.04,perlbrew,Perl,Ubuntu 14.04,Perlbrew,我试图按照说明构建LDV项目,但我对perl一无所知 我在运行测试时遇到以下错误 ldv-task: NORMAL: Calling LDV-core. Can't locate SOAP/Lite.pm in @INC (@INC contains: /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/5.10.0/x86_64-linux /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/5.10.
ldv-task: NORMAL: Calling LDV-core.
Can't locate SOAP/Lite.pm in @INC (@INC contains: /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/5.10.0/x86_64-linux /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/5.10.0 /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/site_perl/5.10.0/x86_64-linux /home/acsia/perl5/perlbrew/perls/perl-5.10.0/lib/site_perl/5.10.0 .) at /home/acsia/Desktop/LDV/consol-tools/ldv-core/ldv-core line 7.
BEGIN failed--compilation aborted at /home/acsia/Desktop/LDV/consol-tools/ldv-core/ldv-core line 7.
产量
perlbrew use
locate SOAP/Lite.pm
是:编辑:
Currently using perl-5.22.0
产量
perlbrew use
locate SOAP/Lite.pm
是
产量
which perl
是
默认情况下,LDV核心文件是这样启动的
#!/usr/bin/perl -w
#
my $instrumnet = 'ldv-core';
use FindBin;
# To prevent meaningless module warnings use this instead of use.
BEGIN { $SIG{'__WARN__'} = sub{}; require SOAP::Lite; SOAP::Lite->import(); $SIG{__WARN__}='DEFAULT'; }
use POSIX ":sys_wait_h";
use XML::Twig;
use IO::Socket::INET;
#use File::MimeInfo;
use File::Basename;
use Cwd qw(abs_path);
etc,... etc....
感谢您的时间…perlbrew perl是在同一台机器上安装多个perl版本的一种方法。它就像python中的
virtenv
。Perlbrew允许您在各种perl版本之间切换,并针对这些版本运行perl程序
system perl指的是perl的默认版本,主要随linux发行版提供。perlbrew更改程序需要运行的版本,您的程序将开始运行不同的版本
如果您正在制作不需要很多perl版本的东西,那么最好使用一个perl版本并对其运行程序
另外,如果您正在使用linux发行版,并且不想进入cpan以及如何安装perl模块,那么最好是针对该模块搜索相应的库并安装它们。例如,在你的情况下,我这样搜索
aptitude search soap | grep perl
这在我的ubuntu机器上给了我两个库,其中一个是针对这个模块的。安装它们很容易,您可以将精力集中在工作上,而不是如何安装cpan模块 perlbrew perl是在同一台机器上安装多个perl版本的一种方法。它就像python中的
virtenv
。Perlbrew允许您在各种perl版本之间切换,并针对这些版本运行perl程序
system perl指的是perl的默认版本,主要随linux发行版提供。perlbrew更改程序需要运行的版本,您的程序将开始运行不同的版本
如果您正在制作不需要很多perl版本的东西,那么最好使用一个perl版本并对其运行程序
另外,如果您正在使用linux发行版,并且不想进入cpan以及如何安装perl模块,那么最好是针对该模块搜索相应的库并安装它们。例如,在你的情况下,我这样搜索
aptitude search soap | grep perl
这在我的ubuntu机器上给了我两个库,其中一个是针对这个模块的。安装它们很容易,您可以将精力集中在工作上,而不是如何安装cpan模块 如果
LDV-Core
不是您的,您应该使用系统的包管理器安装SOAP::Lite。如果是你的,请继续读下去
perlbrew
播放您的路径,以便执行perl
将执行所需的perl
但是您的脚本显式地使用了/usr/bin/perl
,因此当前使用perlbrew开关
或perlbrew使用
选择的perl
与此无关
unset PERL_MM_OPT
unset PERL_MB_OPT
unset PERL5LIB
unset PERLLIB
echo -ne 'o conf makepl_arg ""\no conf commit\n' | cpan
echo -ne 'o conf mbuildpl_arg ""\no conf commit\n' | cpan
前四行仅具有临时效果。您应该停止在登录脚本中设置这些变量,以使更改永久化perlbrew use perl-5.22.0 # Or perl-5.10.0 or whatever
cpan SOAP::Lite
perl -i~ -pe'
next if $. != 1;
s/^#!.*//s;
$_ = "#!$^X\n$_";
' LDV-core
PS-您不需要
使用FindBin
如果LDV Core
不是您的,您应该使用系统的软件包管理器安装SOAP::Lite。如果是你的,请继续读下去
perlbrew
播放您的路径,以便执行perl
将执行所需的perl
但是您的脚本显式地使用了/usr/bin/perl
,因此当前使用perlbrew开关
或perlbrew使用
选择的perl
与此无关
unset PERL_MM_OPT
unset PERL_MB_OPT
unset PERL5LIB
unset PERLLIB
echo -ne 'o conf makepl_arg ""\no conf commit\n' | cpan
echo -ne 'o conf mbuildpl_arg ""\no conf commit\n' | cpan
前四行仅具有临时效果。您应该停止在登录脚本中设置这些变量,以使更改永久化perlbrew use perl-5.22.0 # Or perl-5.10.0 or whatever
cpan SOAP::Lite
perl -i~ -pe'
next if $. != 1;
s/^#!.*//s;
$_ = "#!$^X\n$_";
' LDV-core
PS-您不需要
使用FindBin代码>不要只移动模块。正确安装它们。@zappy尝试在ubuntu中安装libsoap-lite-perl
包。这是对应于ot SOAP::Lite模块的库。这可能会解决你的问题。这将把相应的模块放在正确的位置。尝试安装软件包。它不包括模块所在的/usr/local/lib/perl5/site\u perl/5.22.0/
。尝试使用cpanm
重新安装它。如果在脚本中键入shebang行,它可能调用了错误的Perl。或者将其更改为#/usr/bin/env perl
,使其调用$PATH
中第一个perl(假设您在这里使用的是POSIXy环境)。如果安装系统包有帮助,则证明您没有使用perlbrew perl。不要只是移动模块。正确安装它们。@zappy尝试在ubuntu中安装libsoap-lite-perl
包。这是对应于ot SOAP::Lite模块的库。这可能会解决你的问题。这将把相应的模块放在正确的位置。尝试安装软件包。它不包括模块所在的/usr/local/lib/perl5/site\u perl/5.22.0/
。尝试使用cpanm
重新安装它。如果在脚本中键入shebang行,它可能调用了错误的Perl。或者将其更改为#/usr/bin/env perl
,使其调用$PATH
中第一个perl(假设您在这里使用的是POSIXy环境)。如果安装系统包有帮助,则证明您没有使用perlbrew perl。