是否安装了此Perl模块(以及在哪里)?

时间:2015-11-30 10:43:52

标签: perl debian perl-module bugzilla plasticscm

我最近升级了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服务器。“

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令检查模块的安装路径:

perldoc -l Email::Sender::Simple

如果不安装,将提供以下输出:

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

否则它将提供该模块的完整路径。