Я недавно обновил 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."
Что это за файл 'install-module.pl'? Никогда не видел этого раньше. Я думаю, в debian вы бы использовали apt-get. Например. 'apt-get install libfoo-perl'. Или используйте утилиту cpan 'cpan Email :: Sender :: Simple'. И, конечно же, вам нужно будет установить в качестве правильного пользователя ссылку на то, где выглядит ваша программа perl. – TLP
Я никоим образом не являюсь человеком Perl, 'install-module.pl' является частью bugzilla. при запуске скрипта bugzillas './checksetup.pl', если он находит отсутствующие модули, он показывает команду для выполнения, чтобы установить их. эти команды имеют форму '/ usr/bin/perl install-module.pl Email :: Sender: Simple'. – epeleg
Возможно, у вас есть PERL5LIB в одной среде, но не в другом. – ikegami