Perl Can';t在@INC中找到SOAP/Lite.pm

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项目,但我对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.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
    
    前四行仅具有临时效果。您应该停止在登录脚本中设置这些变量,以使更改永久化

  • 在所需的Perl中安装SOAP::Lite

    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
    
    前四行仅具有临时效果。您应该停止在登录脚本中设置这些变量,以使更改永久化

  • 在所需的Perl中安装SOAP::Lite

    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。