1

我正在尝试按照说明构建 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

是:编辑:

Currently using perl-5.22.0

的输出

locate SOAP/Lite.pm

/usr/local/lib/perl5/site_perl/5.22.0/SOAP/Lite.pm

的输出

which perl

/usr/local/bin/perl

默认情况下,LDV-core 文件是这样启动的

#!/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....

谢谢你的时间...

4

2 回答 2

4

如果LDV-Core不是您的,您应该使用系统的包管理器安装 SOAP::Lite。如果是你的,请继续阅读。


perlbrew与您的 PATH 一起播放,以便执行perl将执行所需的perl.

但是您的脚本明确使用/usr/bin/perl, 因此perl当前选择使用perlbrew switchperlbrew use不相关。

  1. 停止覆盖默认安装位置,并停止寻找不应该的位置。

    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
    

    前四行只是暂时的效果。您应该停止在登录脚本中设置这些变量以使更改永久生效。

  2. 在所需的 Perl 中安装 SOAP::Lite。

    perlbrew use perl-5.22.0    # Or perl-5.10.0 or whatever
    cpan SOAP::Lite
    
  3. 修复你的脚本的shebang。

    perl -i~ -pe'
       next if $. != 1;
       s/^#!.*//s;
       $_ = "#!$^X\n$_";
    ' LDV-core
    

PS——你不需要use FindBin;.

于 2015-06-04T15:38:54.830 回答
2

perlbrew perl 是一种在同一台机器上安装许多 perl 版本的方法。就像virtenv在 python 中一样。Perlbrew 允许您在不同版本的 perl 之间切换并针对这些版本运行 perl 程序。

系统 perl 是指 perl 的默认版本,它主要随 linux 发行版一起提供。perlbrew 更改程序需要运行的版本,您的程序将开始针对不同的版本运行。

如果您正在制作不需要很多 perl 版本的东西,最好使用一个版本的 perl 并针对它们运行程序。

此外,如果您使用的是 linux 发行版并且不想进入 cpan 以及如何安装 perl 模块,最好是针对该模块搜索相应的库并安装它们。例如,在您的情况下,我以这种方式搜索

aptitude search soap | grep perl

这在我的 ubuntu 机器上给了我两个库,其中一个是针对这个模块的。安装它们很容易,您可以专注于您的工作,而不是如何安装 cpan 模块。

于 2015-06-04T14:48:21.707 回答