Ubuntu20.04下apt报错
1. 目标 xxx
在 /etc/apt/sources.list:yy
和 /etc/apt/sources.list:zz
中被配置了多次
- 问题:
/etc/apt/sources.list
同时启用了多个镜像源。 - 解决:注释掉
/etc/apt/sources.list
中多余的镜像源,只保留其中一个即可。
2. 由于没有公匙,无法验证下列签名: NO_PUBKEY xxx
- 问题:GPG Key 对应的 GPG 验证文件过期或者是有些软件源没有导入 GPG Key 对应的 GPG 验证文件。可以通过下列命令查看所有 GPG Key:
1 |
|
- 解决办法:更新无效 GPG Key 对应的 GPG 验证文件。可以通过以下命令下载更新 GPG Key 对应的 GPG 验证文件:
1 |
|
【注】命令中的 xxx
为报错中 NO_PUBKEY 后的 GPG Key 。命令中的 keyserver.ubuntu.com
为提供 GPG Key 对应的 GPG 验证文件的公钥服务器,目前国内可访问的公钥服务器列表如下:
- [x] keyserver.ubuntu.com
- [x] pgp.mit.edu
- [x] subkeys.pgp.net
或者,如果能够找到该 GPG Key 对应的 GPG 验证文件,则可以直接拷贝到 /etc/apt/trusted.gpg.d
目录下,而不用通过 keyserver
下载。
- 对于 Debin 官方源的 GPG 验证文件,可能无法在公钥服务器中找到其 GPG Key,但可以直接使用
apt
下载安装相应的 GPG 验证文件:
1sudo apt install debian-keyring debian-archive-keyring
- 对于 Deepin 官方源的 GPG 验证文件,无法在公钥服务器中找到其 GPG Key,目前只能通过拷贝 Deepin 系统中的 GPG 验证文件到 Ubuntu20.04 中,目前我已将个人 Deepin 系统中的 GPG 验证文件上传至 Gitee 仓库 DeepinKeying,有需要的伙伴可自行下载并将其中所有的 GPG 验证文件拷贝到
/etc/apt/trusted.gpg.d
目录下。
3. server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
- 问题:在使用
apt
进行更新系统或安装软件时报这个错误。 - 原因:一般是由于本地和服务器之间的证书验证失败,可能本地没有证书或者本地证书过期,或者软件源服务器证书过期。
- 解决:
- 本地缺少证书 & 本地证书过期。
1sudo update-ca-certificates
- 软件源服务器证书过期。
这种情况下我们个人一般就心有余而力不足了,只能修改本地配置不进行证书核验:
1
echo "Acquire { https::Verify-Peer false }" | sudo tee /etc/apt/apt.conf.d/99verify-peer.conf
【注】2021 年 9 月 30 日,Let's Encrypt 组织使用的 IdentTrust DST Root CA X3 根证书过期,因此很多使用了 Let's Encrypt 签发的证书但没有及时更新证书的网站都受到了影响。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!