2009-11-10 109 views
4

这是我以前的问题about developing Perl applications的后续行动。假设我使用Module::Install作为CPAN模块开发应用程序。现在我将代码上传到生产服务器,例如使用git push,并且我想安装Makefile.PL中列出的应用程序依赖项。如果我只是运行cpan .,它会尝试像普通的Perl模块那样安装应用程序,即。开始将模块和文档复制到整个系统的标准Perl目录。如何在不安装CPAN模块的情况下安装CPAN模块的代码?

这是应该的方式吗?你是否将应用程序安装到标准的Perl目录中?我习惯于将我的Perl应用程序放在一个独立的目录中lib。否则,似乎我不得不管理许多其他事情,比如在路径上的某处安装资源等。如果我只想安装在Makefile.PL中声明的代理并运行应用程序测试以确保一切正常,我应该怎么做?

(难道这地方记录?我的意思是,有什么样的最佳做法部署和更新不平凡的Perl应用程序吗?或者是大家都这样做,他自己的方式?)

+0

为什么不使用['Dist :: Zilla'] [dzil]'Module :: Install'已经很老了。 [dzil]:http://dzil.org/ –

回答

10

我可能会被误解,但我认为你要寻找的是

perl Makefile.PL 
make installdeps 
+0

谢谢,它看起来像我:) – zoul

+0

我试过这个,并没有成功。这是因为这仅适用于根据http://www.dagolden.com/index.php/1528/five-ways-to-install-modules-prereqs-by-hand/ –

4

你可以看看Module::ScanDeps产生用于安装的依赖模块的列表。或将Par::Packer作为一个“应用程序”打包整个事情。

+1

谢谢(+1),但那不是我想要的。 M :: S与我想要使用的整个模块::安装机器非常正交。至于P :: P,恐怕会让事情变得不必要的复杂。我的大多数应用程序都是Catalyst Web应用程序,当我想修复某些内容时,在服务器上有一个“实时”存储库非常方便。 – zoul

8

如果您正在使用Module::Install,你真的使用ExtUtils::MakeMaker幕后。您可以使用所有MakeMaker功能及其提供的目标。虽然文档没有显示每个功能,但在生成的Makefile中有一些有价值的东西。

但是,MakeMaker是旧的新闻,大多数人都问圣诞老人它会消失。如果你想要更好的控制,包括创建你自己的目标和过程,Module::Build是更容易处理和跨平台(即使这只是意味着不使用不同的makegmake,或在同一个操作系统上的任何东西不同的盒子)。如果您偏离了正常的消费级安装流程,那么在没有MakeMaker的情况下,您的生活将变得更加轻松。

有些人很欣赏Module::Install构建文件的简洁性,但是一旦构建完成,您就不会花费大量时间来处理构建文件,因此它并没有带来什么真正的好处。当你得到的小利益锁定你进入MakeMaker时,它根本不是赢。


一个2014更新:Module::Build现在已经失宠,需要一个维护者。它从未完全达到人们可以使用它来构建和分发XS模块的程度。它在Perl v5.19中被弃用,尽管你仍然可以从CPAN中获得它。

+1

基于'Module :: Install'的发行版我已经改为Module :: Build,感觉好多了。 0.36版本增加了一个'installdeps'动作,完全符合我的要求。谢谢。 – zoul