Arch-Linux

在 PKGBUILD 中指定子模組版本

  • April 7, 2022

我正在嘗試hhvm-git從 AUR 安裝軟體包並收到錯誤消息。其中一個子模組存在錯誤。此錯誤已修復,我想指定修訂包含子模組的修復。我怎樣才能做到這一點?

在 PKGBUILD 中,我嘗試按照Arch Wiki中的建議指定修訂版(source數組中的行):

"git+https://github.com/facebook/proxygen#7e37f926d922b55c85537057b57188dea9694c32"

結果:

 -> Creating working copy of proxygen git repo...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From /tmp/yaourt-tmp-german/aur-hhvm-git/proxygen
  7e2a49c..3395064  master     -> origin/master
==> ERROR: Unrecognized reference: 7e37f926d922b55c85537057b57188dea9694c32

我以錯誤的格式指定了修訂。在我的情況下正確的格式是:

"git+https://github.com/facebook/proxygen#commit=7e37f926d922b55c85537057b57188dea9694c32"

來自man PKGBUILD

使用 VCS 源

通過以 source=(‘directory::url#fragment’) 形式指定源,可以使用來自版本控制系統 (VCS) 的源建構包的開發版本。目前 makepkg 支持 Bazaar、Git、Subversion 和 Mercurial 版本控制系統。對於其他版本控制系統,上游儲存庫的手動複製必須在 prepare() 函式中完成。

源 URL 分為三個部分:

  • 目錄

(可選)為 makepkg 指定一個備用目錄名稱,以將 VCS 源下載到其中。

  • url

VCS 儲存庫的 URL。這必須在 URL 協議中包含 VCS,以便 makepkg 將其辨識為 VCS 源。如果協議不包含 VCS 名稱,可以通過在 URL 前加上 vcs+ 來添加它。例如,通過 HTTPS 使用 Git 儲存庫將具有以下形式的源 URL:git+https://….

  • 片段

(可選)允許為 makepkg 指定修訂號或分支以從 VCS 中檢出。例如,要簽出給定的修訂版本,原始碼行的格式為 source=(url#revision=123)。可用的片段取決於所使用的 VCS:

  • **bzr:**修訂版(有關詳細資訊,請參閱“bzr help revisionspec”)
  • **git:**分支、送出、標記
  • **hg:**分支,修訂,標籤
  • **svn:**修訂

引用自:https://unix.stackexchange.com/questions/337952