Omarchy 更新提示密钥环错误怎么办?
Omarchy 更新因 PGP 签名无效或损坏而中断?这是由于 archlinux-keyring 版本过旧导致。请先刷新密钥环并重新安装 archlinux-keyring,随后执行完整系统升级以修复损坏的 pacman 密钥库。
为什么 Omarchy 更新会因密钥环错误而失败
Omarchy 更新因 invalid or corrupted package (PGP signature) 停止时,这是密钥环错误,而非下载损坏。您持有的 archlinux-keyring 版本早于 Arch 当前使用的签名密钥,因此 pacman 会拒绝处理无法追溯到受信任密钥的软件包。请刷新密钥环,然后重新运行更新。
此问题并非 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... 过程。这些输出行表示新的开发者密钥已存入您的密钥环。刚才失败的更新现在可以顺利完成。
该操作序列正是用户在 Omarchy issue 4608 中反馈的问题,该报告也促使开发团队将密钥环刷新功能集成到了更新程序中。
单独执行 pacman -Sy 需要注意。它会下载最新的软件包数据库,但不会升级您现有的软件包。在此状态下安装任意软件会导致部分升级,而部分升级会损坏 Arch 系统,因为新构建的软件包依赖于新数据库中列出的库版本,而您的系统仍在使用旧版本。archlinux-keyring 是公认的例外:它只分发密钥材料而非链接后的二进制文件,且您必须紧接着执行完整升级。
omarchy update 是 Omarchy 4 的命令。代号为 Quattro 的 Omarchy 4 于 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 会在更新前自动创建快照,您可以重启并在引导菜单中选择更新前的快照。从该已知良好状态修复密钥环,然后重新执行更新。
服务器不是个人桌面
Omarchy 是一个桌面环境,而你通过 SSH 连接的服务器属于完全不同的范畴,需要不同的解决方案。服务器应选择提供长期支持且不包含桌面组件的发行版,相关内容请参考 如何为 VPS 选择合适的操作系统。服务器的首要任务是 通过密钥和强化 sshd 配置加固 SSH,其次是建立 日常维护流程,确保软件包不会像此密钥环一样过期。如果你喜欢 Omarchy 内置的编码助手快捷方式,这些助手同样可以在服务器上运行:在 VPS 上运行编码助手 介绍了相关设置,而 在 tmux 会话中保持 Claude Code 运行 则解决了合上笔记本电脑后如何保持任务后台运行的问题。
FAQ
在安装 archlinux-keyring 之前运行 sudo pacman -Sy 安全吗?
在此特定情况下是安全的,前提是你必须紧接着安装密钥环并执行完整升级。-Sy 会刷新软件包数据库,但你已安装的软件包仍处于旧版本,此时安装普通软件会导致部分升级,可能使二进制文件链接到你系统中不存在的库版本。archlinux-keyring 是数据而非链接代码,因此它是标准例外。不要在运行 pacman -Sy 后就停止操作。
如果 Omarchy 已经为我刷新了密钥环,为什么我还会收到密钥环错误?
更新程序会在升级软件包之前刷新 archlinux-keyring,因此出现该错误通常意味着你没有通过更新程序进行操作。手动运行 pacman -Syu 或 yay 会跳过该步骤。其他情况包括本地密钥环损坏而非仅仅是过期,此时密钥环软件包本身无法通过验证;或者你使用的是该步骤引入之前的旧版 Omarchy。使用 pacman-key --init 和 pacman-key --populate archlinux 进行完整重建可以解决损坏的情况。
什么是 omarchy-keyring,它和 archlinux-keyring 是同一个东西吗?
它们是来自不同来源的不同软件包。archlinux-keyring 是 Arch 的软件包,来自 core 仓库,其中包含 Arch 开发人员和受信任用户的密钥。omarchy-keyring 是第三方软件包。它来自 [omarchy] 仓库(位于 pkgs.omarchy.org),由 Omarchy 添加到你的 pacman 配置中,其中包含指纹为 40DFB630FF42BCFFB047046CF0134EE680CAC571 的密钥,用于签署 omarchy-* 软件包。Omarchy 要求两组密钥的签名均有效,因此丢失其中任何一个都会导致更新失败。
我应该运行 pacman-key --refresh-keys 来修复签名错误吗?
不应该。它会向密钥服务器查询你密钥环中的每一个密钥,这不仅速度缓慢,而且在密钥服务器无法访问时会失败,且它无法导入原本就不在密钥环中的密钥。你缺失的密钥会随 archlinux-keyring 软件包一同提供,因此运行 sudo pacman -Sy 后紧接 sudo pacman -S archlinux-keyring 是更快且受官方支持的途径。
我可以在 VPS 上安装 Omarchy 以使两台机器保持一致吗?
Omarchy 是一个为拥有屏幕、GPU 和键盘的机器构建的 Hyprland 桌面环境。在 VPS 上安装它不仅无法提供图形界面,还会带来大量需要维护更新的桌面软件包。请在 VPS 上运行服务器发行版,在笔记本电脑上保留 Omarchy,并接受这两台机器拥有不同软件包集合和不同更新命令的事实。