我开发并维护一个生物信息学应用程序套件,包含50多个脚本,但是其部署过程混乱不堪:
- 整个套件在一个大的git存储库中。它有很多CPAN依赖项和几十个内部模块。
- 开发平台为Linux。
- 部署平台为Windows(20+用户)、Mac(10+)和Linux(2-3)。其中大多数用户都不是'power user'。
- 对于Windows,我有一个安装程序(使用NSIS制作),用于安装strawberry perl和所需的模块(即我在Windows机器上安装了strawberry,并安装了所有模块,然后压缩c:\strawberry),还有另一个安装程序,用于安装整个套件——我这样做是因为套件要比所需模块更新得多。
- 对于Mac,我将perl 5.14、所有必需的cpan模块和应用程序套件打包到一个可双击的安装程序中。我不使用系统perl,因为它通常过时。我将所有内容一起捆绑在一起,与Windows不同,因为我不擅长Mac。
- 对于Linux,我手动处理他们的安装,因为他们只有少量用户,而且使用不同的发行版。
这明显是一个在几代开发人员之间有机生长而成的混乱。理想情况下,我想创建可通过cpan安装的内部库以及各个相关脚本组的分发,并使用模块依赖关系让cpan为我安装它们。
但我不确定最佳方法是什么,因为我仍然需要分发perl本身,必须编写某种非命令行界面来控制第三方CPAN模块的确切版本,将其默认指向我的“DarkPan”(存储我们的模块)以及如何推送更新等等。
我认为我不能使用PerlApp或Par,因为据我所知,它们用于打包单个脚本,而不是整个套件。
非常感谢任何建议。