解决树莓派软件源更新时公钥问题
标签: 树莓派 软件源 公钥
【参考链接】
如何更新Debian源和导入公钥
Ubuntu的软件源更新常见问题及解决
【问题说明】
在另一篇文章(树莓派安装KodExplorer变身私人云桌面)中,为了安装PHP7.0(通过软件仓库安装而不是编译安装),需要编辑文件sudo vim /etc/apt/sources.list
,添加软件源:
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.
错误信息大致意思为没有找到对应的公钥,所以软件源地址不被信任。
【解决方案】
解决方案就是导入对应仓库的公钥,命令格式为:
gpg --keyserver <KeyServer> --recv <公钥签名> gpg --export --armor <公钥签名> | sudo apt-key add
也可以用如下格式:
apt-key adv --keyserver <KeyServer> --recv-keys <公钥签名>
gpg --export --armor 40976EAF437D05B5 | sudo apt-key add -
其中:
<KeyServer>
,key服务器,可以填 keyserver.ubuntu.com
,当然也可以填其他的。
在本例中,按照上面的格式,执行:
gpg --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E
gpg --export --armor 9165938D90FDDD2E | sudo apt-key add -
然后再执行sudo apt-get update
即可解决问题。