我想将我的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文件..
答案 0 :(得分:0)
使用Module::Build
或Module::Build::Tiny
创建包,然后在这些远程计算机上安装包。这样您就可以指定依赖项,并且cpanm
也可以安装它们。