我开发和维护了一个包含 50 多个脚本的生物信息学应用程序套件,其部署过程一团糟:
这显然是几代开发人员有机地发展起来的一团糟。理想情况下,我想从内部库和各种相关脚本组中创建可安装 cpan 的发行版,并使用模块依赖项让 cpan 为我安装它们。
但是我不确定最好的方法是什么,b/c 我仍然需要分发 perl 本身,必须为 CPAN 编写某种非命令行界面,控制第 3 方 CPAN 的确切版本模块,默认指向我的“DarkPan”,我将在其中存储我们的模块,我将如何推送更新等等。
我认为我不能使用 PerlApp 或 Par,因为 afaik 用于捆绑单个脚本,而不是一整套脚本。
任何建议高度赞赏。
最佳答案
除了提到的 3 个平台(更多,如果算上 Linux 变体),你确实有几个不同的问题:
曾几何时,我支持大型 Solaris Perl 安装。我尝试了一段时间来“并排”安装 Linux Perl,重新使用相同的 CPAN 模块。没用。对我来说最大的问题是相当多的 Perl 模块需要编译,这意味着它们针对特定平台。我最终只安装了 2 次,并且始终记得在这两个区域都安装了新的 CPAN 模块。
我们现在是 100% Windows,所以我没有同样的问题。但是,我们确实在共享网络驱动器上运行 Perl。所有用户都映射此驱动器,并运行将 .PL 文件与 Perl 的网络安装相关联的注册表脚本。 (见我对 this other Perl question 的回答。)
因此,除了映射驱动器和注册表脚本,用户不需要安装任何东西。甚至 CPAN 模块也是从网络中获取的。这解决了第 1 项(仅适用于 Windows 用户)。
项目 #2 也是如此:脚本存储在网络驱动器(同一个)上,用户运行另一个注册表脚本以将脚本文件夹包含在他们的搜索 PATH 中。我们在一个区域编辑我们的脚本,并有一个“Check-In 'n Release”(“CINR”),我们使用它来 checkin 和发布脚本到用户指向的区域。用户可以在资源管理器中双击脚本,在 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 应用程序中,但如果您可以找出路径,您也许可以。
祝你好运!
关于perl - 我应该如何改进我的 perl 应用程序部署过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9575890/