解决树莓派软件源更新时公钥问题

标签: 树莓派 软件源 公钥


【参考链接】
如何更新Debian源和导入公钥
Ubuntu的软件源更新常见问题及解决

【问题说明】

在另一篇文章(树莓派安装KodExplorer变身私人云桌面)中,为了安装PHP7.0(通过软件仓库安装而不是编译安装),需要编辑文件sudo vim /etc/apt/sources.list,添加软件源:

1
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

结果添加了软件源之后进行sudo apt-get update的时候报错,错误信息大致如下:

W: GPG error: http://mirrordirector.raspbian.org/raspbian stretch InRelease: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 9165938D90FDDD2E
W: The repository ‘http://mirrordirector.raspbian.org/raspbian stretch InRelease’ is not signed.
N: Data from such a repository can’t be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: There is no public key available for the following key IDs:
9165938D90FDDD2E
E: Failed to fetch http://mirrordirector.raspbian.org/raspbian/dists/stretch/main/binary-armhf/Packages.xz Hash Sum mismatch
E: Some index files failed to download. They have been ignored, or old ones used instead.

错误信息大致意思为没有找到对应的公钥,所以软件源地址不被信任。

【解决方案】

解决方案就是导入对应仓库的公钥,命令格式为:

1
gpg --keyserver <KeyServer> --recv <公钥签名> gpg --export --armor <公钥签名> | sudo apt-key add

也可以用如下格式:

1
2
apt-key adv --keyserver <KeyServer> --recv-keys <公钥签名>
gpg --export --armor 40976EAF437D05B5 | sudo apt-key add -

其中:
<KeyServer>,key服务器,可以填 keyserver.ubuntu.com ,当然也可以填其他的。
在本例中,按照上面的格式,执行:

1
2
gpg --keyserver  keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E
gpg --export --armor 9165938D90FDDD2E | sudo apt-key add -

然后再执行sudo apt-get update即可解决问题。

如果觉着我的文章不错,打赏我一包辣条吧 O(∩_∩)O
-------------本文结束 感谢您的阅读-------------