最後衝刺!儲存庫升級與 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 儲存庫上,會 fork 一個 1.2 分支,並且 2.0.0 分支會合併到 master 分支 -
從那時起,提交到
ocaml/opam-repository
的 pull-request 需要是 2.0.0 格式。 如果重要,可以合併對 1.2 儲存庫的修正:在這種情況下,需要針對 1.2 分支提出 pull request。 -
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
的 master 分支的 pull-request 需要是 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 2.0.0 發布 1.2 套件,方法是安裝
opam-publish.0.3.5
(建議執行opam pin opam-publish 0.3.5
) -
您應該只需要保留 opam 1.2 安裝用於更複雜的設定(多個套件,或者如果您需要在本機測試 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 格式的 pull-request。目前,它只會向儲存庫的 2.0.0 分支提交 PR,但在 9 月 17 日之前,仍然偏好將 1.2 格式的套件推送至 master 分支。 -
還建議在此日期之前將原始碼中的 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 儲存庫的維護更長的時間,我們會很高興;儲存庫維護者做得非常棒,但他們沒有足夠的資源來同時維護兩個版本。