維護 AUR 套件

最後更新: 2022-10-05 15:39:56 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

Arch User Repository 儲存包含套件配方的 Git 儲存庫,而不是已建置的套件。因此,維護 AUR 套件代表發布可供檢閱的 PKGBUILD 與相符的 .SRCINFO,接著在隔離的建置環境中驗證該配方。

正確建模套件 #

PKGBUILD 定義 pkgname、pkgver、pkgrel、arch、授權條款、來源、檢查總和與相依性陣列等中繼資料。其函數會區分階段:

  • prepare() 套用修補程式或準備來源。
  • build() 編譯或產生軟體。
  • check() 執行測試,並需要 checkdepends。
  • package() 只安裝至 $pkgdir 以下。

使用 $srcdir 儲存來源與建置狀態;不要在套件函數中寫入主機檔案系統。將執行期相依項放在 depends,僅供建置的工具放在 makedepends,僅供測試的套件放在 checkdepends。遺漏宣告可能在開發者工作站上被隱藏,卻使使用者失敗。

請檢閱每個來源 URL、修補程式與 shell 運算式,因為 makepkg 會以呼叫使用者的權限執行配方。將發布套件固定至不可變的上游成品,並使用檢查總和。當上游發布已簽署的版本時,透過 validpgpkeys 驗證簽章;檢查總和可以偵測變更的位元組,但無法建立來源信任。

在乾淨 chroot 中建置與檢查 #

不要以 root 執行 makepkg。在乾淨 chroot 中建置,使主機相依項、設定與過期建置成品無法讓不完整的配方通過。在已設定 devtools 的情況下:

sh
extra-x86_64-build

若要在 chroot 外進行本機反覆作業,請從乾淨的來源樹開始,並讓 makepkg 解決儲存庫相依項:

sh
makepkg --cleanbuild --syncdeps

--syncdeps 會呼叫 pacman,因此無法擷取 AUR 相依項。請先檢閱並建置這些相依項,然後透過本機儲存庫或 chroot 工作流程提供已驗證的套件。

在安裝前檢查套件內容並套用靜態檢查:

sh
bsdtar -tf ./*.pkg.tar.zst
namcap PKGBUILD ./*.pkg.tar.zst

namcap 回報的是啟發式結果,而非證明。在可拋棄環境中測試安裝、升級、移除、執行期相依項、服務與桌面整合。

更新版本與 VCS 套件 #

針對版本更新,變更 pkgver,在適當時重設 pkgrel,檢閱來源與檢查總和後更新並重新建置。不要使用 --skipinteg 讓變更的來源通過。

VCS 套件通常使用 -git 等尾碼,以及從儲存庫歷史衍生的 pkgver() 函數。其來源必須在一次建置期間解析至可重現的修訂版本。避免將發布套件轉換成浮動分支:使用者需要有版本、可檢閱的來源輸入,以及可預測的升級行為。

在可行時比較多次乾淨 chroot 建置。輸出差異可能揭露時間戳記、地區設定、建置路徑或未宣告輸入,進而阻礙可重現性。

發布相符的 AUR 中繼資料 #

從目前的 PKGBUILD 產生 .SRCINFO;不要手動編輯它。只提交受追蹤的 AUR 套件檔案,並在推送前檢查暫存差異:

sh
makepkg --printsrcinfo > .SRCINFO
git add PKGBUILD .SRCINFO
git diff --cached
git commit
git push

每次中繼資料變更都要更新 .SRCINFO,包括相依項、來源與分割套件。以可重現的證據回應回報,在提交訊息或套件註解中說明破壞性變更,並避免推送未檢閱的使用者修補程式。AUR 孤立與刪除是儲存庫維護程序;它們不會使套件成為官方 Arch 儲存庫的一部分。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)