我最近升级了bugzilla [在Debian GNU / Linux 6.0.3(挤压)](到最新版本,虽然它似乎有用,但我有一个外部脚本,用于将它与PlasticSCM源代码控制集成,它给出了以下内容错误:
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.
堆栈跟踪一直持续到我的自定义脚本。但我认为这不相关。
Bugzilla / Mailer.pm的第27行说:
use Email::Sender::Simple qw(sendmail);
我认为问题在于 认为问题是缺少模块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脚本会产生完全相同的堆栈跟踪。
再次运行install-module.pl
脚本会再次返回相同的结果(就像它刚刚再次安装它一样......)。
如何判断是否已安装此模块(以及在何处)以及如何使我的脚本正常工作?
更新: 我想我知道问题出在哪里 我尝试运行的cgi脚本的第一行包含以下行:
#!/usr/bin/perl -wT
从这里:
https://stackoverflow.com/a/2526809/25412
我知道T标志导致.
不能成为@INC的一部分(即Perls模块搜索路径),所以这就是我的bugzilla安装文件夹的lib
文件夹(也就是cgi所在的文件夹) )没有使用,CGI会忽略其中的文件lib / Email / Sender / Simple.pm。
所以更新的Q 是 - 我应该:
1.从cgi的第一行删除T
?或
2.以某种方式(以及如何?)将EMAIL :: Sender :: Simple安装到@INC的其他位置?
我倾向于认为答案应该是2,因为this page说:{/ p>
“对于运行的程序,明确地打开它们是个好主意 代表您可能不一定信任的其他人,例如 您可以用Perl编写的CGI程序或任何Internet服务器。“
答案 0 :(得分:1)
您可以使用以下命令检查模块的安装路径:
perldoc -l Email::Sender::Simple
如果不安装,将提供以下输出:
No documentation found for "Email::Sender::Simple".
否则它将提供该模块的完整路径。