似乎Perl的大多数安装程序都以安装Perl模块为中心,而不是应用程序.像ExtUtils :: MakeMaker和Module :: Build这样的东西非常适合模块,但需要为Web Apps做一些额外的工作.
理想情况下,从存储库中检出源后能够执行以下操作会很好:
检测到缺少依赖项
从CPAN下载并安装依赖项
运行命令以将源"构建"为最终状态(执行本地环境所需的任何源解析或配置).
运行命令以将构建的文件安装到适当的位置.不仅是perl模块,还有模板(.tt)文件,CGI脚本,JS和图像文件,应该可以通过Web访问.
确保在已安装的文件上设置了适当的权限(如有必要,还要设置SELinux上下文).
现在我们有一个基于Module :: Build的系统,它可以完成大部分工作.这项工作是由我的同事完成的,他当时正在学习使用Module :: Build,我们想要一些关于推广我们的解决方案的建议,因为它现在非常适合应用程序.特别是,我们的系统要求我们手动安装依赖项(尽管它确实检测到它们).
您使用过的特定系统是否特别成功?您是否必须根据Module :: Build或ExtUtils :: MakeMaker编写一个特定于您的应用程序的安装程序,或者更通用的东西?
编辑:回答以下brian的问题:
我们可以登录机器
我们没有root权限访问这些机器
这些机器都是(表面上)相同的RHEL5版本,启用了SELinux
目前,安装机器的人员只是我们小组的程序员,我们的消息来源不对公众开放.但是,可以想象我们的源最终可以安装在我们组织中的其他人的机器上,由程序员或系统人员安装.
我们通过从存储库中签出来安装,但我们希望可以选择使用分布式存档(参见上文).
Dave Rolsky.. 6
答案表明RPM肯定是一个很好的答案.使用系统的包管理器绝对可以让您的生活更轻松.但是,这可能意味着您还需要打包一堆其他Perl模块.
您也可以看看Shipwright.这是一个基于Perl的工具,用于打包应用程序及其所有Perl模块依赖项.现在还处于早期阶段,但看起来很有希望.
至于安装依赖项,简单地打包一堆tarball并让你基于Module :: Build的解决方案安装它们并不难.你应该看看pip,这使得从tarball安装一个模块非常简单.您可以使用代码库打包它,只需从您自己的安装程序调用它来处理deps.
我怀疑依赖CPAN是否是一个好主意.CPAN shell始终提取最新版本的发行版,而不是特定版本.如果您对确保可重复安装感兴趣,那么它不是正确的工具.
答案表明RPM肯定是一个很好的答案.使用系统的包管理器绝对可以让您的生活更轻松.但是,这可能意味着您还需要打包一堆其他Perl模块.
您也可以看看Shipwright.这是一个基于Perl的工具,用于打包应用程序及其所有Perl模块依赖项.现在还处于早期阶段,但看起来很有希望.
至于安装依赖项,简单地打包一堆tarball并让你基于Module :: Build的解决方案安装它们并不难.你应该看看pip,这使得从tarball安装一个模块非常简单.您可以使用代码库打包它,只需从您自己的安装程序调用它来处理deps.
我怀疑依赖CPAN是否是一个好主意.CPAN shell始终提取最新版本的发行版,而不是特定版本.如果您对确保可重复安装感兴趣,那么它不是正确的工具.
您安装网络应用的限制是什么?你能登录机器吗?所有的机器都运行相同的东西吗?人们是否安装了网络应用程序的同事或来自公众的随机人员?是安装此系统管理员,程序员,Web管理员还是其他人的人?您是通过分布式存档安装还是从源代码管理中检出?
对于我的大部分内容,其中涉及熟悉Perl在控制环境中安装的系统管理员,我只使用MakeMaker.如果您对此有所了解,很容易让它完成您列出的所有事情MakeMaker
.如果您想了解更多相关信息,请提出另一个问题.;)模块::构建同样简单,如果您还不喜欢使用,那么就可以了MakeMaker
.
Module::Build
如果人们对命令行和安装软件有一定的了解,那将是处理许多不同情况的好方法.你会有很多灵活性Module::Build
,但也会有更多的工作.而且,该cpan
工具(随Perl一起提供)可以从当前目录安装并为您处理依赖项.只需告诉它安装当前目录:
$ cpan .
如果您只需安装在一个平台上,您可能会更容易以原生格式制作包.您甚至可以Module::Build
为您创建该软件包,以便开发人员具有灵活性Module::Build
,但安装程序可以轻松实现本机过程.坚持Module::Build
也意味着您可以从单个构建工具为不同平台创建不同的包.
如果安装Web应用程序的人真的不知道命令行,CPAN和其他东西,你可能想要使用一个不会吓到它们的打包器和安装程序,或让他们考虑发生了什么,并且可以准确地向您报告问题.
正如Dave指出的那样,使用真正的CPAN镜像总能获得模块的最新版本,但您也可以使用您想要的发行版制作自己的"假"CPAN镜像,并从中安装正常的CPAN工具.对于我们的客户,我们制作"CD上的CPAN"(尽管拇指驱动器现在也很好).使用简单的"运行我"脚本,所有内容都可以完全按照他们需要的版本安装.例如,请参阅我的http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007">如果您对此感兴趣,可以参加我自己的CPAN演讲.再次考虑一下,当您考虑到这一点时,请考虑观众这不是你向普通大众提供的东西.
祝好运, :)