似乎大多数的安装程序为Perl的周围安装Perl模块,而不是应用为中心。 类似的ExtUtils :: MakeMaker的和模块::编译东西都是非常适合的模块,但需要对Web Apps的一些额外的工作。
理想情况下是很好能够检查出从仓库源后,执行以下操作:
- 已发现其中缺少的依赖
- 下载并安装CPAN依赖
- 运行命令以“构建”的源到最终状态(执行所需的本地环境的任何源解析或配置)。
- 运行命令的内置文件安装到合适的位置。 不仅Perl模块,还之类的模板(.TT)文件和CGI脚本,JS和图像文件,应该是网络的访问。
- 确保适当的权限安装文件(如果需要的SELinux)设置。
现在,我们有基于模块::生成 ,做这个最系统。 这项工作是由我的同事做了谁是学习使用模块做::编译的时候,我们希望在推广我们的解决方案建议,因为它现在是应用特定的公平。 特别是,我们的系统需要我们手工安装依赖(虽然它探测到它们)。
是否有你使用任何特定的系统,该系统一直特别成功? 你必须编写基于模块::编译或参考ExtUtils :: MakeMaker的这尤其你的应用程序,或者是一些更普遍可用的安装?
编辑:要回答以下Brian的问题:
- 我们可以登录到机器
- 我们没有对机器的根访问
- 这些机器都是(表面上)相同构建RHEL5的启用SELinux的
- 目前,在安装机器的人都是从我们组只有程序员,和我们的源是不向公众开放。 然而,这是可以想象我们的源最终可以在别人的机器安装在我们的组织,由他们的程序员或系统的人来安装。
- 我们通过安装从资源库检查出,虽然我们希望有使用分布式归档(见上文)的选项。
什么是您安装Web应用程序的限制? 您可以登录到本机? 是否所有的运行同样的事情的机器? 从普通市民中安装Web应用程序的同事或随机的人的人吗? 安装此系统管理员,程序员,网络管理员,还是其他什么东西的人吗? 你安装分布式归档或从源代码控制退房吗?
对于大多数的我的东西,它涉及到熟悉Perl的控制环境中安装的系统管理员,我只是用MakeMaker的 。 这很容易得到它做一切,如果你知道一些关于你列出的东西MakeMaker
。 如果您想了解更多关于,问了另一个问题。 ;) 模块::编译也很简单,不过,如果你不喜欢已经使用一段路要走MakeMaker
。
Module::Build
会去处理许多不同的情况下,如果人们适度clueful有关命令行和安装软件的好方法。 您将有很大的灵活性与Module::Build
,也有点更多的工作。 而且, cpan
工具(附带的Perl),可以从当前目录中安装并处理依赖你。 只要告诉它来安装当前目录:
$ cpan .
如果你只需要安装在单一platorm,你可能有一个更容易的时间在原生格式制作包装。 你甚至可以有Module::Build
使该包装给你,让开发商有灵活性Module::Build
,但安装有方便的本机进程。 与坚持Module::Build
也意味着,你可以从一个单一的构建工具创建不同的平台不同的包。
如果安装Web应用程序的人真的有没有关于命令行,CPAN,和其他东西的想法,你可能会想使用一个包装程序和安装程序,不吓唬他们或让他们去想到底是怎么回事,并能准确地自动问题报告给你。
戴维指出,使用真实的CPAN镜像总是让你最新版本的模块,但你也可以制作自己的“假” CPAN镜正是你想要的分布,并有正常的CPAN工具,从安装。 对于我们的客户,我们做“CPAN CD上的”(虽然拇指驱动器都不错,现在也是如此)。 用一个简单的“跑我”的剧本一切都被安装在完全相同的版本他们的需要。 见,例如,我http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007">Making如果你感兴趣的是我自己的CPAN交谈。此外,考虑到观众,当你想想,它不是东西,你会交给公众。
祝好运, :)
答案提示RPM绝对是一个很好的一个。 使用系统的软件包管理器,绝对可以让你的生活更轻松。 然而,这可能意味着你还需要打包一堆其他Perl模块。
你也可以看看造船 。 这是包装了一个应用程序,它的所有的Perl模块依赖一个基于Perl的工具。 这还为时尚早,但它看起来很有希望。
至于安装的依赖,就不会很难简单地打包了一堆压缩包,然后你模块::为基础构建的解决方案安装它们。 你应该看看点子 ,这使得从相当平凡的一个压缩包安装的模块。 你可以用你的代码库打包这一点,只是把它从自己的安装程序来处理DEPS。
我怀疑是否依赖于CPAN是一个好主意。 CPAN命令总是获取最新版本的发行版,而不是某一特定版本的。 如果你有兴趣在确保可重复安装,这不是正确的工具。
我建议你认真考虑包装系统,如RPM做到这一点。 即使你在Windows上运行我会考虑RPM和Cygwin来进行安装的。 你甚至可以建立一个百胜或apt库的包传送到远程系统。
如果你正在寻找一个运行的任何数量的OSE和发行版的客户一般安装程序,然后问题就变得更难。