2015-06-04 13 views
1

Я пытаюсь создать проект LDV, следуя инструкциям this, и я ничего не знаю о perl.Невозможно найти SOAP/Lite.pm в @INC

я получаю следующее сообщение об ошибке во время выполнения теста

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-файл ядра начинается, как это по умолчанию

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

Чем ks для вашего времени ...

+0

Попробуйте переместить SOAP dir в perl 5.10.0. Структура модуля, которая должна быть (я думаю) на /usr/local/lib/perl5/site_perl/5.10.0/. Это может решить вашу проблему. – shivams

+4

Не просто двигайте модули. Установите их правильно. – Quentin

+0

@shivams, @ Quentin .. проверьте мой отредактированный вопрос .. я переключил perl на 5.22.0, используя команду «perlbrew» switch ... но все же я получаю ту же ошибку – zappy

ответ

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.

3

Если LDV-Core не принадлежит вам, вы должны установить SOAP :: Lite с помощью диспетчера пакетов вашей системы. Если это ваше, читайте дальше.


perlbrew играет с вашей PATH так, что выполнение perl выполнит требуемую perl.

Но сценарий явно использует /usr/bin/perl, так который perl в данный момент выбран с помощью perlbrew switch или perlbrew 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. Установите SOAP :: Lite в желаемый Perl.

    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;.

Смежные вопросы