1. 由于没有公匙,无法验证下列签名: NO_PUBKEY xxx

执行命令 sudo apt update 时如上报错。

  • 错误原因:GPG Key 对应的 GPG 验证文件过期或者是有些软件源没有导入 GPG Key 对应的 GPG 验证文件。可以通过下列命令查看所有 GPG Key:
1
sudo apt-key list
  • 解决办法:更新无效 GPG Key 对应的 GPG 验证文件。可以通过以下命令下载更新 GPG Key 对应的 GPG 验证文件:
1
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys xxx

【注】命令中的 xxx 为报错中 NO_PUBKEY 后的 GPG Key 。命令中的 keyserver.ubuntu.com 为提供 GPG Key 对应的 GPG 验证文件的公钥服务器,目前国内可访问的公钥服务器列表如下:

或者,如果能够找到该 GPG Key 对应的 GPG 验证文件,则可以直接拷贝到 /etc/apt/trusted.gpg.d 目录下,而不用通过 keyserver 下载。

对于 Debin 官方源的 GPG 验证文件,可能无法在公钥服务器中找到其 GPG Key,但可以直接使用 apt 下载安装相应的 GPG 验证文件:

1
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 自动解决依赖问题:
1
sudo aptitude install XXX    # XXX 为需要安装的软件
  • 或者使用 apt 自动解决依赖问题,apt 可以看作是 apt-getaptitude 的结合:
1
sudo apt install -f