最后冲刺!仓库升级和 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.2opam
文件升级到 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 仓库,我们将非常高兴;仓库维护者正在做着很棒的工作,但只是没有资源来同时维护这两个版本。