2015-11-30 3 views
0

Я недавно обновил bugzilla [на Debian GNU/Linux 6.0.3 (сжатие)] (до последней версии и, хотя, похоже, он работает, у меня есть внешний скрипт для его интеграции с контроллером SourceSCM, который выдает следующую ошибку :..Установлен ли этот модуль Perl (и где) или нет?

Can't locate Email/Sender/Simple.pm in @INC (@INC contains: . /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) at Bugzilla/Mailer.pm line 27. 

трассировка стека продолжает идти весь путь до моего пользовательского сценария, но я думаю, что это не имеет отношения

Line 27 в Bugzilla/Mailer.pm говорит:

use Email::Sender::Simple qw(sendmail); 

И я предположил, что pr oblem было то, что
Думая, что проблема заключалась в том, что модуль Email :: Sender :: Simple отсутствовал.

У Bugzilaa есть сценарий под названием ./checksetup.pl, который используется для проверки выполнения всех предварительных требований. Когда я пытаюсь запустить этот скрипт, он не указывает, что ничего не пропало.

Однако, когда он не найдет недостающие библиотеки дает инструкции, чтобы добавить их с помощью команды со структурой:

/usr/bin/perl install-module.pl HTML::FormatText::WithLinks 

Так что я исполнил:

/usr/bin/perl install-module.pl Email::Sender:Simple 

Который сказал:

Checking for     CPAN (v1.81)  ok: found v1.9402 
Checking for     YAML (any)  ok: found v1.15 
Checking for ExtUtils-MakeMaker (v6.31)  ok: found v7.1 
CPAN: Storable loaded ok (v2.20) 
Going to read '/MYUSERNAME/.cpan/Metadata' 
    Database was generated on Mon, 30 Nov 2015 07:17:02 GMT 
Installing Email::Sender:Simple version 1.300021... 
Email::Sender::Simple is up to date (1.300021). 

Так выглядит, что он установил модуль, но запуск сценария CGI снова приводит к точному y та же самая трассировка стека.

Сценарий install-module.pl снова возвращает тот же результат (как если бы он только что установил его снова).

Как узнать, установлен ли этот модуль (и где) или нет, и что я могу сделать, чтобы заставить мой скрипт работать?

UPDATE: Я думаю, что знаю, где проблема.
КГИ сценарий, который я пытаюсь запустить имеет следующую строку для своей первой линии:

#!/usr/bin/perl -wT 

здесь: https://stackoverflow.com/a/2526809/25412 Я понимаю, что флаг T вызывает . не быть частью @INC (т.е. Perl), поэтому вот папка lib, в которой не установлена ​​моя установочная папка bugzilla (которая также находится там, где cgi), и файл lib/Email/Sender/Simple.pm, который находится внутри него, игнорируется CGI.

Так обновленный Q это - я должен:
1. Удалите T из первой строки CGI? или
2. Как-то (и как?) установить EMAIL :: Sender :: Простой в другое место, которое является частью @INC?

Я склонен думать, что ответ должен быть 2 beacuse Я думаю, что флаг T есть по некоторым причинам безопасности, потому что this page говорит:

"It's a good idea to turn them on explicitly for programs that run on behalf of someone else whom you might not necessarily trust, such as CGI programs or any internet servers you might write in Perl."

+2

Что это за файл 'install-module.pl'? Никогда не видел этого раньше. Я думаю, в debian вы бы использовали apt-get. Например. 'apt-get install libfoo-perl'. Или используйте утилиту cpan 'cpan Email :: Sender :: Simple'. И, конечно же, вам нужно будет установить в качестве правильного пользователя ссылку на то, где выглядит ваша программа perl. – TLP

+0

Я никоим образом не являюсь человеком Perl, 'install-module.pl' является частью bugzilla. при запуске скрипта bugzillas './checksetup.pl', если он находит отсутствующие модули, он показывает команду для выполнения, чтобы установить их. эти команды имеют форму '/ usr/bin/perl install-module.pl Email :: Sender: Simple'. – epeleg

+0

Возможно, у вас есть PERL5LIB в одной среде, но не в другом. – ikegami

ответ

1

Вы можете проверить путь установки модуля с помощью следующей команды:

perldoc -l Email::Sender::Simple 

Если не установить его даст ниже вывод:

No documentation found for "Email::Sender::Simple". 

Иначе это даст полный путь этого модуля.

+0

Обратите внимание, что из-за некоторых ошибок некоторые установленные модули не могли быть зарегистрированы. См. [Cpanm не регистрирует все установленные модули в perllocal.pod] (http://stackoverflow.com/questions/32679413/cpanm-does-not-register-all-installed-modules-in-perllocal-pod) –

+0

пытается запустите это, я получаю «Вам нужно установить пакет perl-doc для использования этой программы». – epeleg

+0

@epeleg: 'apt-get install perl-doc' – serenesat

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