最后冲刺!仓库升级和 opam 2.0.0 路线图

几天前,我们发布了 opam 2.0.0~rc4,并解释说这个最终候选版本预计将升级到 2.0.0,并与 opam 包仓库 的升级同步。所以这里有一些关于此的细节!

如果您是 opam 用户,并且不维护 opam 包

  • 建议您尽快 升级,并熟悉 更改和新功能

  • 所有在 opam 1.2.2 中安装的包都应该存在,并且可以在 2.0.0~rc4 上正常安装(如果您发现某个包不能安装,请 报告!)

  • 如果您在 **9 月 17 日** 之前没有更新,您收到的更新和新包的数量可能会受到限制¹

那么 9 月 17 日会发生什么?

  • Opam 2.0.0~rc4 正式发布为 2.0.0

  • ocaml/opam-repository Github 仓库中,一个 1.2 分支被分叉,并且 2.0.0 分支被合并到主分支

  • 从那时起,对 ocaml/opam-repository 的拉取请求需要使用 2.0.0 格式。如果重要,可以合并对 1.2 仓库的修复:在这种情况下,需要针对 1.2 分支请求拉取。

  • opam 网站默认显示 2.0.0 仓库(https://opam.ocaml.org/2.0-preview/ 变为 https://opam.ocaml.org/)

  • 1.2 和 2.0 的 http 仓库(如 opam update 使用的)相应地移动,并设置了适当的重定向

针对包维护者的建议

  • 在 9 月 17 日之前,提交到 ocaml/opam-repository 主分支的拉取请求需要使用 1.2.2 格式

  • 所有 PR 的 CI 检查确保包在 1.2.2 和 2.0.0 上都能通过。9 月 17 日之后,将只检查 2.0.0(如果需要相关修复,则只检查 1.2.2)。

  • 仓库的 2.0.0 分支将包含自动更新的 2.0.0 版本的包定义

  • 通过安装 opam-publish.0.3.5,您可以在使用 opam 2.0.0 的同时发布 1.2 包(建议运行 opam pin opam-publish 0.3.5

  • 您只需要为更复杂的设置(多个包,或者如果您需要能够在本地测试 1.2 包安装)保留一个 opam 1.2 安装。在这种情况下,您可能需要使用别名,例如 alias opam.1.2="OPAMROOT=$HOME/.opam.1.2 ~/local/bin/opam.1.2。您可能还需要禁用 opam 2.0.0 的自动环境更新(opam init --disable-shell-hook

  • opam-publish.2.0.0~beta 具有完全改进的界面,以及许多新功能,例如为多个包提交单个 PR。但是,它**仅以 2.0 格式**提交拉取请求。目前,它将仅向仓库的 2.0.0 分支提交 PR,但在 9 月 17 日之前,仍建议将 1.2 格式的包推送到主分支。

  • 在该日期之前,建议将源代码中的 opam 文件保持 1.2 格式,以免破坏 opam 1.2 用户使用 opam pin add --dev-repo。可以使用小的 opam-package-upgrade 插件将单个 1.2 opam 文件升级到 2.0 格式。

  • ocaml-ci-script 已经切换到 opam 2.0.0。要继续测试 opam 1.2.2,您可以在 .travis.yml 文件中设置变量 OPAM_VERSION=1.2.2

针对自定义仓库维护者的建议

  • 可以使用 opam admin upgrade 命令将您的仓库升级到 2.0.0 格式。我们建议使用它,否则使用 opam 2.0.0 的客户端每次都会在本地进行升级。添加选项 --mirror 以继续提供这两个版本,并使用自动重定向。

  • 您可以自行决定何时/是否要将您的基础仓库切换到 2.0.0 格式。您将受益于许多新的可能性和安全功能,但这将排除早期 opam 版本的用户,因为没有向后转换工具。

¹ 对由此造成的不便,我们深感抱歉。如果我们能够更长时间地维护 1.2.2 仓库,我们将非常高兴;仓库维护者正在做着很棒的工作,但只是没有资源来同时维护这两个版本。