1. 由于没有公匙,无法验证下列签名: NO_PUBKEY xxx
执行命令 sudo apt update
时如上报错。
- 错误原因:GPG Key 对应的 GPG 验证文件过期或者是有些软件源没有导入 GPG Key 对应的 GPG 验证文件。可以通过下列命令查看所有 GPG Key:
sudo apt-key list
- 解决办法:更新无效 GPG Key 对应的 GPG 验证文件。可以通过以下命令下载更新 GPG Key 对应的 GPG 验证文件:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxx
【注】命令中的 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 验证文件: sudo apt install debian-keyring debian-archive-keyring
2. 错误:xxx,无法解析域名 ……
执行命令 sudo apt update
时如上报错。
- 错误原因:DNS 解析出了问题。
- 解决办法:更换 DNS 地址(比如更换为公共 DNS 地址)。详情请参阅 DNS 地址更换 。
3. 错误:xxx,无法连接上 ……,连接超时
执行命令 sudo apt update
时如上报错。
- 错误原因:国内由于 GFW 的存在,外网的 CDN 域名可能遭到 DNS 污染,导致无法连接上外网或连接速度缓慢。
- 解决办法:在本地主机的 hosts 文件中直接绑定域名的 IP 地址,绕过 DNS 解析。详情请参阅 Hosts 文件修改 。
4. E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
- 利用
aptitude
自动解决依赖问题:
sudo aptitude install XXX # XXX 为需要安装的软件
- 或者使用
apt
自动解决依赖问题,apt
可以看作是apt-get
和aptitude
的结合:
sudo apt install -f