Omarchy 更新出現 keyring 錯誤的修復方法
Omarchy 更新若因 PGP 簽章無效或損毀中斷,請先更新 archlinux-keyring。本文提供手動修復 pacman 金鑰環的正確指令,避免因部分升級導致系統損壞。
為何 Omarchy 更新會因 keyring 錯誤而失敗
當 Omarchy 更新因 invalid or corrupted package (PGP signature) 而中斷時,這是 keyring 錯誤,而非下載損毀。您系統中的 archlinux-keyring 版本舊於 Arch 目前使用的簽章金鑰,因此 pacman 會拒絕處理無法追溯至受信任金鑰的套件。請重新整理該 keyring,然後再次執行更新。
這並非 Omarchy 特有的問題。這是 Arch 常見的失敗模式,而 Omarchy 將其呈現給許多初次使用 Arch 的使用者。
在執行指令前有一點說明。Omarchy 是基於 Arch 的 Hyprland 桌面環境,因此以下內容皆針對您桌機上的機器。本指南不適用於在 VPS 上安裝 Omarchy。您的伺服器應運行其他系統,最後一節會提供相關參考頁面。
最小化修復方案
執行兩道指令,接著進行更新:
sudo pacman -Sy
sudo pacman -S archlinux-keyring
omarchy updatesudo pacman -S archlinux-keyring 會輸出 ==> Appending keys from archlinux.gpg...,隨後執行較慢的 ==> Locally signing trusted keys in keyring... 檢查。這些輸出代表新的開發者金鑰已匯入您的金鑰環(keyring)。先前失敗的更新現在即可順利完成。
此序列即為使用者在 Omarchy issue 4608 中回報的解決方案,該報告也促使開發者將金鑰環重新整理功能納入更新程式本身。
單獨執行 pacman -Sy 需特別注意。它會下載最新的套件資料庫,但不會升級您現有的套件。在該狀態下安裝任意軟體會導致部分升級(partial upgrade),而部分升級會損壞 Arch 系統,因為新編譯的套件會預期使用新資料庫中列出的函式庫版本,但您的系統仍停留在舊版本。archlinux-keyring 是公認的例外:它僅發布金鑰資料而非連結的二進位檔,且您必須緊接著執行完整升級。
omarchy update 是 Omarchy 4 的指令。Omarchy 4 代號為 Quattro,於 2026 年 8 月發布,截至 2026 年 9 月為止為當前版本系列。該指令背後的腳本為 omarchy-update,您也可以直接執行它。建議優先使用上述兩者而非單純執行 pacman -Syu,因為 Omarchy 更新程式會先建立檔案系統快照,並執行必要的遷移程序,以確保您的設定與新版本同步。手動執行 pacman -Syu 會跳過上述兩個步驟。
omarchy update keyring 的功能
Omarchy 4 將金鑰環(keyring)步驟獨立出來執行:
omarchy update keyring它會處理兩個獨立的金鑰環。它總是會執行 sudo pacman -Sy --noconfirm archlinux-keyring,而之所以選擇重新安裝而非先比較版本,腳本中已說明原因:該金鑰環的內容可能會在套件版本未變更的情況下發生異動。當 Omarchy 簽署金鑰遺失時,它也會自動抓取並在本地進行簽署:
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571之所以需要兩個金鑰環,是因為您的機器會從兩個來源安裝套件。archlinux-keyring 是來自 core 儲存庫的 Arch 原生套件,其中包含 Arch 開發者與受信任使用者的金鑰。omarchy-keyring 則屬於第三方來源。它來自 Omarchy 新增至 /etc/pacman.conf 的 [omarchy] 儲存庫(穩定版通道為 Server = https://pkgs.omarchy.org/stable/$arch),其中包含用於簽署所有 omarchy-* 套件的金鑰。Omarchy 4 內建了 SigLevel = Required DatabaseOptional,因此無論套件來自哪個儲存庫,只要其簽章無法驗證為受信任的金鑰,該套件就會被拒絕。
為何「未知信任」是金鑰問題而非下載問題
錯誤訊息如下所示。套件名稱與簽署者會隨機器而異,但最後兩行固定不變。
error: archlinux-keyring: signature from "Christian Hesse <eworm@archlinux.org>" is unknown trust
:: File /var/cache/pacman/pkg/archlinux-keyring-20230704-1-any.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
error: failed to commit transaction (invalid or corrupted package (PGP signature))請字面解讀 unknown trust。gpg 已解析簽章並確認其格式正確。問題在於它無法將該簽章背後的金鑰,與您機器所信任的金鑰建立連結。pacman 因此將該套件視為損毀,因為對 pacman 而言,無法驗證的套件與損毀的套件結果相同。
受信任的金鑰儲存於 /etc/pacman.d/gnupg。該目錄為本地副本,更新期間不會即時從網路抓取。它是透過 archlinux-keyring 套件安裝至 /usr/share/pacman/keyrings 的金鑰檔案所建立。Arch 會依據自身排程新增或撤銷開發者金鑰,因此若機器閒置數月,其金鑰清單將早於今日簽署套件的開發者。相關訊息 signature from ... is marginal trust 的根源相同:金鑰雖然存在,但將其連結至您個人金鑰環的本地簽章卻已缺失。
當金鑰環本身損毀時的完整修復
有時 sudo pacman -S archlinux-keyring 會因為您正試圖修復的錯誤而失敗,或者 sudo pacman-key --list-keys 無法回傳任何有用的資訊。此時金鑰環已損毀而非僅是過期,必須重新建立。
sudo mv /etc/pacman.d/gnupg /etc/pacman.d/gnupg.broken
sudo pacman-key --init
sudo pacman-key --populate archlinux
sudo pacman -Sy archlinux-keyring
sudo pacman-key --populate archlinux請移動舊目錄而非直接刪除。若重建過程出錯,您還可以將其還原;一個可還原的金鑰環,其佔用的幾 KB 空間是非常值得保留的。
執行順序至關重要。--init 會建立一個包含全新本地簽署金鑰的空金鑰環,而空金鑰環不信任任何項目,因此當下的任何下載都會因驗證失敗而中斷。--populate archlinux 會從 /usr/share/pacman/keyrings/archlinux.gpg 匯入金鑰,這是您數月前安裝套件時已存在於磁碟中的檔案。這些金鑰雖然舊,但足以驗證當前金鑰環套件的下載,這正是第四行指令的作用。最後一行則載入剛下載完成的更新版金鑰檔案。
現在還原 Omarchy 金鑰。清除 /etc/pacman.d/gnupg 會導致該金鑰失去使其受信任的本地簽章,因此在還原之前,每個 omarchy-* 套件都會因 unknown trust 而失敗:
sudo pacman-key --recv-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571 --keyserver keys.openpgp.org
sudo pacman-key --lsign-key 40DFB630FF42BCFFB047046CF0134EE680CAC571
sudo pacman-key --list-keys 40DFB630FF42BCFFB047046CF0134EE680CAC571最後一個指令應針對該指紋顯示 pub 行。若顯示 keyserver receive failed 行,則表示您的網路無法透過 443 埠連線至 keys.openpgp.org,請先排除此問題再重試。在 Omarchy 4 上,您可以使用 omarchy update keyring 取代前兩個指令,因為它執行了完全相同的操作。最後以 omarchy update 完成程序。
當金鑰環已更新但更新仍失敗時
系統時間錯誤。 金鑰與簽章皆帶有時間戳記,gpg 會將其與系統時鐘進行比對。若時鐘設定過於落後,有效的簽章會被視為在金鑰產生前就已建立,導致套件被拒絕。請執行 timedatectl 並檢查 System clock synchronized: yes。此問題常見於 CMOS 電池耗盡的筆記型電腦,伺服器則可能因其他原因發生,詳情請參閱 為何 VPS 時鐘會偏移以及如何保持同步。
快取檔案損毀。 若下載過程因鏡像站不穩定而中斷,會產生相同的 invalid or corrupted package 錯誤訊息,此時修復金鑰環無濟於事。請觀察錯誤訊息中提到的套件名稱以進行判斷。若每次失敗的都是同一個套件,請從 /var/cache/pacman/pkg/ 刪除該檔案並重新執行更新。sudo pacman -Sc 可清除已不再安裝的套件快取版本。
問題出在 yay 而非 pacman。 AUR 建置過程會使用 makepkg 來驗證上游原始碼壓縮檔,該指令會讀取位於 ~/.gnupg 的使用者金鑰環,而非 pacman 的金鑰環。錯誤訊息通常為 ==> ERROR: One or more PGP signatures could not be verified!,且常伴隨 gpg: Can't check signature: No public key 出現。請以一般使用者身分執行 gpg --recv-keys <key-id> 來匯入金鑰,切勿使用 sudo。sudo pacman-key --recv-keys 無法解決此問題,因為它會將金鑰寫入 /etc/pacman.d/gnupg,而 makepkg 並不會讀取該目錄。
請跳過 pacman-key --refresh-keys。 該指令會針對你已擁有的每一把金鑰向金鑰伺服器進行查詢,因此速度緩慢,且在伺服器繁忙時會直接失敗。此外,它無法新增你金鑰環中原本不存在的金鑰,而這才是問題的核心。更新 archlinux-keyring 才是官方支援的解決途徑。
若更新已中斷
請閱讀 /tmp/omarchy-update.log。這是 omarchy-update 輸出日誌的位置;當您查看終端機時,真正的錯誤訊息通常已被進度條覆蓋。
若機器狀態比更新前更糟,請使用快照。當系統支援 snapper 時,Omarchy 會在更新前自動建立快照,您可以重新開機並在開機選單中選擇更新前的快照。在該已知正常的狀態下修復 keyring,然後再次執行更新。
伺服器並非您的個人電腦
Omarchy 是個人電腦,而您透過 SSH 連線的機器則是另一個問題,需要不同的解決方案。伺服器需要具備長期支援週期且不含桌面環境的發行版,這正是 為您的 VPS 選擇合適的作業系統 的主題。該機器上的首要任務是 透過金鑰與強化的 sshd 設定來鎖定 SSH,其次則是建立一套 維護常規,確保套件不會像這個金鑰環一樣過時。如果您喜歡 Omarchy 的內建程式碼代理捷徑,這些代理程式同樣可以在伺服器上執行:在 VPS 上執行程式碼代理 涵蓋了設定方式,而 在 tmux session 中保持 Claude Code 運作 則說明了當您闔上筆電離開後如何維持其執行。
FAQ
在安裝 archlinux-keyring 之前執行 sudo pacman -Sy 安全嗎?
在這種情況下是安全的,但前提是您必須緊接著安裝 keyring 並執行完整升級。-Sy 會更新軟體包資料庫,但您已安裝的軟體包仍維持舊版;若在此狀態下安裝一般軟體,會導致部分升級(partial upgrade),可能使二進位檔案連結到您系統中不存在的函式庫版本。archlinux-keyring 屬於資料而非連結程式碼,因此是標準的例外情況。請勿在執行 pacman -Sy 後中斷操作。
如果 Omarchy 已為我更新 keyring,為什麼仍會出現 keyring 錯誤?
更新程式會在升級軟體包前先更新 archlinux-keyring,因此出現錯誤通常代表您沒有透過更新程式操作。手動執行 pacman -Syu 或 yay 會跳過該步驟。其他情況包括本地 keyring 損毀而非僅是過期(導致 keyring 軟體包本身無法驗證),或是使用了該步驟出現之前的舊版 Omarchy。使用 pacman-key --init 和 pacman-key --populate archlinux 進行完整重建可解決損毀問題。
什麼是 omarchy-keyring?它和 archlinux-keyring 一樣嗎?
它們是來自不同來源的軟體包。archlinux-keyring 是 Arch 的軟體包,來自 core 儲存庫,內含 Arch 開發者與受信任使用者的金鑰。omarchy-keyring 則是第三方軟體包。它來自 pkgs.omarchy.org 的 [omarchy] 儲存庫,該儲存庫由 Omarchy 加入您的 pacman 設定中,並持有指紋為 40DFB630FF42BCFFB047046CF0134EE680CAC571 的金鑰,用於簽署 omarchy-* 軟體包。Omarchy 要求兩組金鑰皆具備有效簽章,因此遺失其中任何一個都會導致更新失敗。
我應該執行 pacman-key --refresh-keys 來修復簽章錯誤嗎?
不應該。該指令會向金鑰伺服器查詢 keyring 中的每一把金鑰,速度緩慢且在金鑰伺服器無法連線時會失敗,且無法匯入原本就不在 keyring 中的金鑰。您遺失的金鑰會隨 archlinux-keyring 軟體包一併提供,因此執行 sudo pacman -Sy 後接著執行 sudo pacman -S archlinux-keyring 不僅速度更快,也是官方支援的路徑。
我可以在 VPS 上安裝 Omarchy 以讓兩台機器保持一致嗎?
Omarchy 是為配備螢幕、GPU 與鍵盤的機器所設計的 Hyprland 桌面環境。在 VPS 上安裝它不僅無法顯示畫面,還會帶來大量需要維護的桌面軟體包。請在 VPS 上執行伺服器發行版,並將 Omarchy 保留在筆記型電腦上,同時接受兩台機器擁有不同軟體包集合與不同更新指令的事實。