首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何改进perl应用程序的部署过程?

如何改进perl应用程序的部署过程?
EN

Stack Overflow用户
提问于 2012-03-05 23:48:31
回答 2查看 893关注 0票数 11

我开发和维护了一个50+脚本的生物信息学应用程序套件,其部署过程一团糟:

  • 整个套件位于一个巨大的git存储库中。它有大量的CPAN依赖项,以及数十个内部模块。
  • 开发平台是Linux。
  • 部署平台是Windows (20+用户)、Mac (10+)、Linux (2-3)。大多数都不是“超级用户”。
  • 对于windows,我有一个用于草莓perl +必需模块的安装程序(用NSIS制作)(即,我在一个windows框上安装了草莓,安装了所有模块并压缩了c:\草莓),还有一个用于该套件的安装程序--我做了这个b/c --该套件比所需模块的列表更新得多得多。
  • 对于Mac,我将perl 5.14、所有必需的cpan模块和应用程序套件捆绑到一个双击安装程序中。我不使用perl b/c系统,它往往过时了。我把所有的东西都捆绑在一起,不像windows上的b/c,我在mac上很烂。
  • 对于Linux,我手动处理它们的安装,因为它们只有几个,而且它们使用不同的发行版。

这显然是一个混乱,在几代开发人员身上有机地发展起来。理想情况下,我希望从内部库和各种相关脚本组创建cpan可安装发行版,并使用模块依赖关系让cpan为我安装它们。

但我不知道最好的方法是什么,b/c -我仍然需要分发perl本身,将需要编写某种非命令行接口到CPAN,控制第三方CPAN模块的确切版本,默认情况下将它指向我的"DarkPan“,其中我将存储我们的模块,我将如何推送更新等等。

我不认为我可以使用PerlApp或Par,因为afaik是用于捆绑单个脚本,而不是一套完整的脚本。

任何建议都非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 02:45:00

除了提到的三个平台(更多的,如果算上Linux变体),您确实有两个不同的问题:

  1. 部署一个已知的标准Perl可执行文件和库(CPAN模块)。
  2. 部署您的Perl脚本和模块。

很久以前,我支持大型Solaris Perl安装。我尝试了一段时间来“并排”安装Linux,重用相同的CPAN模块。没起作用。对我来说,最大的问题是有相当数量的Perl模块需要编译,这意味着它们的目标是特定的平台。最后,我只安装了2个,并且始终记得在这两个领域安装一个新的CPAN模块。

我们现在是100%的Windows,所以我没有同样的问题。但是,我们确实在共享网络驱动器上运行Perl。所有用户都映射此驱动器,并运行一个注册表脚本,该脚本将.PL文件与Perl的网络安装相关联。(见我对另一个Perl问题的回答。)

因此,除了映射驱动器和注册表脚本,用户不需要安装任何东西。甚至CPAN模块也是从网络中获取的。这解决了第1项(仅适用于Windows用户)。

对于第2项,同样的情况也是如此:脚本存储在网络驱动器(相同的驱动器)上,用户运行另一个Registry,将脚本文件夹包含在搜索路径中。我们在一个区域编辑脚本,并有一个“签入'n版本”("CINR"),我们使用它来为用户指向的区域签入和发布脚本。用户可以双击资源管理器中的脚本,在DOS中运行它们,或者更好地将它们包含在资源管理器的上下文菜单中,等等。(实际上,我们使用.NET应用程序来映射驱动器并为用户设置所有这些设置,但这可以做得更简单。)

那么,这对其他平台Linux和Mac有什么帮助呢?当我遇到Solaris/Linux实验时,我认为所有3个平台都需要安装不同的Perl,尽管您应该能够为您的Perl脚本和模块访问相同的网络驱动器。

Perl安装甚至可以在Linux用户的网络驱动器上安装。对他们来说,这可能比Windows用户更容易。Mac用户很难接受。我管理一个家庭Mac网络,我认为在Mac上网络驱动器与其他OSes相比非常困难。它应该像在Linux中一样容易,因为很多都是相同的,但是有非常奇怪的问题(对我来说)映射NFS和SMB驱动器。AFP驱动器对于用户手动映射有点容易,但通过编程映射就不那么容易了。

我的Mac推荐是尝试使用鸭嘴兽。虽然您的接口选项仅限于输出(我可以告诉您在执行过程中不允许用户输入),但它确实很擅长将脚本捆绑到双击应用程序中。不确定是否可以将整个Perl安装放到Platypus应用程序中,但是如果您能够找到路径,您可能可以。

祝好运!

票数 2
EN

Stack Overflow用户

发布于 2012-03-12 22:49:41

你可以检查一下卡瓦包装机。它可以在一个包中处理多个脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9575890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档