0

我想将我的 Perl 应用程序部署到多个远程服务器。我的 perl 应用程序由一个大程序组成,使用非核心模块:Path::Iterator::Rule、XML::Writer 和两个自制模块。

我希望能够将我的应用程序部署在远程服务器上,而不必一一复制我的程序使用的所有模块及其所有依赖项。

我查看了 PAR,它可以帮助我完成我想做的事情。我需要创建一个存档(“modules.par”),在其中放置我的自制模块,并添加 Path::Iterator::Rule、XML::Writer 模块?但是我如何确保这些模块的所有依赖项都正确添加到我的存档中?
我知道我需要在我的主应用程序中做这样的事情:

use PAR;
use lib "modules.par";
use Path::Iterator::Rule;
use XML::Writer;
use HomemadeModule1;
use HomemadeModule2;

很抱歉造成混乱,我真的迷失了所有这些模块依赖项,..

编辑 :

所以我尝试使用 cpanm -L extlib 来创建一个包含我所有库的目录,但我不能在我的系统上使用 cpanm。现在我正在尝试使用 PAR,我创建了一个名为“sources.par”的文件,其中包含了我的所有模块,我使用了以下命令:

pp -p myperlprogram.pl 

这创建了“sources.par”,我应该可以在我的程序中使用它:

use PAR;
use lib "sources.par";
use XML::Writer;
use ..

但我仍然收到以下消息:

Can't locate XML/Writer.pm in @INC (@INC contains: sources.par CODE(0x10c0cc) /app/pro
dexpl/gld/LOA /usr/perl5/5.8.4/lib/sun4-solaris-64int /usr/perl5/5.8.4/lib /usr/
perl5/site_perl/5.8.4/sun4-solaris-64int /usr/perl5/site_perl/5.8.4 /usr/perl5/s
ite_perl /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int /usr/perl5/vendor_perl/
5.8.4 /usr/perl5/vendor_perl . CODE(0x10c1e0)) at /app/prodexpl/gld/LOA/AnalyseF
ichier.pm line 7.
BEGIN failed--compilation aborted at /app/prodexpl/gld/LOA/AnalyseFichier.pm lin
e 7.
Compilation failed in require at /app/prodexpl/gld/LOA/loganalysis.pl line 9.
BEGIN failed--compilation aborted at /app/prodexpl/gld/LOA/loganalysis.pl line 9
.

有什么想法我能做什么?您可以看到 @INC 包含我的 sources.par 文件..

4

1 回答 1

0

使用Module::Build或创建一个包Module::Build::Tiny,然后在这些远程机器上安装包。这样您就可以指定依赖项是什么,也cpanm可以安装它们。

于 2014-05-16T18:56:23.233 回答