Linux(测试版)刷新软件包列表遇到 GPG 错误的解决方法

错误表现

在 FydeOS 的Linux 子系统中执行 sudo apt-get update 时可能会遇到类似下面的错误信息:

W: GPG error: https://deb-mirror.fydeos.com/cros-packages/79 buster Release: The following signatures were invalid: EXPKEYSIG 6494C6D6997C215E Google Inc. (Linux Packages Signing Authority) <linux-packages-keymaster@google.com>
...
Updating from such a repository can't be done securely, and is therefore disabled by default.

该错误导致 Linux 子系统无法通过这个源更新软件包。

错误原因

FydeOS 的 Linux 子系统中使用的源是 https://deb-mirror.fydeos.com/cros-packages,这个源是 Google 官方源 https://storage.googleapis.com/cros-packages 的镜像地址。上述错误产生的原因是 Google 近期在更换密钥的过程中出现了问题,导致 apt 无法验证源中各个包的签名,所以使用 Google 的源也会出现上述错误。

该 bug 的详情见 Issue 1045292: crostini signing keys expired

解决办法

可以通过更新用于验证的公钥,或者跳过验证来解决。

更新公钥

首先应该尝试的方法是更新公钥,让验证包签名的流程顺利进行。

执行命令

sudo apt-key adv --refresh-keys --keyserver keyserver.ubuntu.com

更新公钥,命令执行成功后,再重试 sudo apt-get update

跳过验证

如果上述 apt-key 命令执行失败,或者执行成功后,sudo apt-get update 时仍然出现 GPG 错误,可以尝试在 Linux 子系统中以 root 权限(sudo)修改 /etc/apt/sources.list.d/cros.list 文件,在 FydeOS 源地址前加上 [trusted=yes],具体改动为(省略了 URL 中后半部分的版本号等内容):

deb https://deb-mirror.fydeos.com/cros-packages/......

修改为

deb [trusted=yes] https://deb-mirror.fydeos.com/cros-packages/......

这样改动后,sudo apt-get update 时还是会看到 GPG 错误,但是这个源不会被禁用,仍然可以从这个源更新软件包。