perl - 如何管理 Perl 模块依赖项?

标签 perl dependencies module legacy

我目前在一个项目中,该项目使用另一个部门开发的框架作为基础进行开发。我们目前正在我们部门引入质量标准(终于,耶!),但目前不可能将这些标准引入其他部门。因此,我们正在努力应对一个不断变化的目标,既没有 API 稳定性,也没有稳定版本,这至少是有压力的。

由于我们首先尝试在最终解决问题,因此我们希望尽可能保护自己免受“上游”又名框架代码的更改。我们设想了硬模块依赖:

  • 仅使用在代码中定义的框架模块的某些版本范围。
  • 使用单元测试检查以确保所有必要的版本仍然可用。
  • 每个版本范围扩展都需要对框架代码进行同行评审。

  • 这是目前为止的计划。现在的问题:
  • 明智吗?如果没有,还有其他想法吗?
  • 如何在 perl 中实现这一点?使用 use Module我们只能定义应该使用的最低版本代码。
  • 最佳答案

    这是一个非常明智的计划,我通过一个类似 CPAN 的私有(private)存储库来实现它,我一直称之为“DPAN”。您可以从真实的 CPAN(或 BackPAN)中选择您想要的发行版和版本,并从中创建您自己的存储库。您的 CPAN 客户端仅指向此存储库,有效地将版本卡住为您想要的版本。您只在需要时升级。

    此外,DPAN 不仅允许您轻松添加自己的本地私有(private)代码,还允许您修改第三方软件包以解决其安装问题等。我在 2009 年夏季刊 The Perl Review 中为这个想法提供了完整的理由。 .您还可以从我的 Creating Your Own CPAN 中查看我的幻灯片在 YAPC::Russia 发表演讲。

    如果您对这种解决方案感兴趣,请查看我的 MyCPAN::App::DPAN模块。它需要一个发行版目录并为您完成其余的工作。您将 CPAN 客户端指向它(并确保它不会连接到互联网),就是这样。

    一旦您可以创建自己的存储库,您就可以轻松地创建一个测试存储库。将您认为要升级的版本转储到其中,在测试服务器上部署代码并收集结果。如果您不喜欢结果,可以轻松更改存储库。

    我的 DPAN 工作的下一个重要步骤是安装现有的 Perl,包括您可能已安装的任何模块,并创建可为您提供该安装状态的存储库。我拥有完成这项工作所需的所有主要部分,但我有点忙于让几个客户开始使用。

    如果您想了解更多有关这些内容的信息,请告诉我。 :)

    关于perl - 如何管理 Perl 模块依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213217/

    相关文章:

    xml - Perl XML::LibXML 安装失败

    perl - Perl Tk 模块的缺点是什么?

    dependencies - 如何使用 NDepend 显示将 ClassA 连接到 ClassX 的关系?

    java依赖分析

    python 在加载模块时捕获 NameError

    javascript - 如何加载 Node 模块,就好像当前模块位于其他地方一样?

    c - 定期打印信息的 Linux 设备驱动程序

    perl - 如何在 Perl 进程之间共享 OpenSSL session ?

    mysql - Perl 脚本从 mysql 查询创建 xml - 内存不足

    asp.net-mvc - 为什么我的 NuGet 包没有添加一些引用的 NuGet 包作为依赖项?