我开发并维护了一个包含50多个脚本的生物信息学应用程序套件,其部署过程非常混乱:
这显然是在几代开发人员中有机增长的混乱。理想情况下,我想从内部库和各种相关脚本组创建cpan-installable发行版,并使用模块依赖项让cpan为我安装它们。
但是我不确定最好的方法是什么,b / c我仍然需要分发perl本身,必须为CPAN编写某种非命令行接口,控制确切的版本第三方CPAN模块,默认指向我的“DarkPan”,我将存储我们的模块,如何推送更新等等。
我认为我不能使用PerlApp或Par,因为afaik用于捆绑单个脚本,而不是整个脚本。
任何建议都非常感谢。
答案 0 :(得分:2)
除了提到的3个平台(更多,如果算上Linux变种),你真的有几个不同的问题:
曾几何时,我支持大型Solaris Perl安装。我尝试了一段时间“并排”进行Linux Perl安装,重新使用相同的CPAN模块。没工作。对我来说最大的问题是,相当多的Perl模块需要编译,这意味着它们针对特定平台。我最后只安装了两次,并且始终记得在这两个区域安装新的CPAN模块。
我们现在是100%的Windows,所以我没有同样的问题。但是,我们从共享网络驱动器上运行Perl。所有用户都映射此驱动器,并运行一个注册表脚本,该脚本将.PL文件与Perl的网络安装相关联。 (参见我对this other Perl question的回答。)
因此,除了映射的驱动器和注册表脚本之外,用户不需要安装任何东西。甚至CPAN模块也从网络中获取。这解决了项目#1(仅适用于Windows的用户)。
同样的事情适用于第2项:脚本存储在网络驱动器(同一个)上,用户运行另一个注册表脚本以在其搜索路径中包含脚本文件夹。我们在一个区域编辑我们的脚本,并有一个“签入'版本”(“CINR”),我们用它来签署并向用户指向的区域发布脚本。用户可以在资源管理器中双击脚本,在DOS中运行它们,甚至更好地将它们包含在资源管理器中的上下文菜单中等等。(实际上,我们使用.NET应用程序映射驱动器并制作所有这些用户的设置,但可以更简单。)
那么,这对其他平台Linux和Mac有何帮助?当我遇到我的Solaris / Linux实验时,我认为你在所有3个平台上都遇到了不同的Perl安装,尽管你应该能够为你的Perl脚本和模块访问相同的网络驱动器。
在Linux用户的网络驱动器上,Perl安装甚至可能正常。它们可能比Windows用户更容易。 Mac用户很难。我管理一个家庭Mac网络,我认为与其他操作系统相比,Mac OS X中的网络驱动器非常难。它应该像在Linux中一样简单,因为这么多是相同的,但是有很多奇怪的问题(对我来说)映射NFS和SMB驱动器。用户可以手动映射AFP驱动器,但不容易以编程方式进行映射。
我的Mac建议尝试使用Platypus。尽管您的界面选项仅限于输出(在执行期间不允许用户输入,我可以告诉),将脚本捆绑到双击应用程序中绝对是非常棒的。不确定你是否可以将整个Perl安装放入Platypus应用程序中,但是如果你能找到路径,你可能就可以了。
祝你好运!答案 1 :(得分:0)
您可能希望查看CAVA包装程序。它可以在一个包中处理多个脚本。