什么是安装Perl Web应用程序的最佳系统?

时间:2008-09-27 13:59:27

标签: perl web-applications installation

似乎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
  • 目前,安装这些机器的人员只是我们小组的程序员,我们的消息来源不对公众开放。但是,可以想象我们的源最终可以安装在我们组织中的其他人的机器上,由程序员或系统人员安装。
  • 我们通过从存储库中签出来安装,但我们希望可以选择使用分布式存档(见上文)。

4 个答案:

答案 0 :(得分:6)

答案表明RPM肯定是一个很好的答案。使用系统的包管理器绝对可以让您的生活更轻松。但是,这可能意味着您还需要打包一堆其他Perl模块。

您也可以查看Shipwright。这是一个基于Perl的工具,用于打包应用程序及其所有Perl模块依赖项。现在还处于早期阶段,但看起来很有希望。

就安装依赖项而言,简单地打包一堆tarball并让你基于Module :: Build的解决方案安装它们并不困难。你应该看看pip,这使得从tarball安装模块非常简单。您可以使用您的代码库打包它,只需从您自己的安装程序中调用它来处理deps。

我怀疑依赖CPAN是否是一个好主意。 CPAN shell始终提取最新版本的发行版,而不是特定版本。如果您对确保可重复安装感兴趣,那么它就不是正确的工具。

答案 1 :(得分:6)

安装网络应用有哪些限制?你能登录机器吗?所有的机器都运行相同的东西吗?人们是否安装了网络应用程序的同事或来自公众的随机人员?是安装此系统管理员,程序员,Web管理员还是其他人的人?您是通过分布式存档安装还是从源代码管理中检出?

对于我的大部分内容,其中涉及熟悉Perl在控制环境中安装的系统管理员,我只使用MakeMaker。如果您对MakeMaker有所了解,很容易让它完成您列出的所有事情。如果您想了解更多相关信息,请提出另一个问题。 ;)Module::Build同样简单,如果您还不喜欢使用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演讲。再次考虑一下您的思考那不是你向普通大众提供的东西。

祝你好运,:))

答案 2 :(得分:3)

我建议认真考虑像RPM这样的软件包系统来做到这一点。即使你在Windows上运行,我也会考虑使用RPM和cygwin进行安装。您甚至可以设置yum或apt存储库以将包传递到远程系统。

如果您正在为运行任意数量的操作系统和发行版的客户寻找通用安装程序,那么问题就会变得更加困难。

答案 3 :(得分:2)

看看PAR

乔纳森·洛克威(Jonathan Rockway)在他的书中将这一部分与Catalyst结合使用。