由于没有公钥,无法验证下列签名 :NO_PUBKEY 的解决方法

问题描述

今天运行apt-get update时突然出现了由于没有公钥,无法验证下列签名的问题,尝试了网上许多方法,最终找到了一种亲测有效的解决方法:

解决方法

在终端输入:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F

其中最后的代码为报错语句中的最后一部分:由于没有公钥,无法验证下列签名: NO_PUBKEY 76F1A20FF987672F

解决结果

Executing: /tmp/apt-key-gpghome.uBwlOPqFFF/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv 76F1A20FF987672F
gpg: key 76F1A20FF987672F: 1 signature not checked due to a missing key
gpg: 密钥 76F1A20FF987672F:公钥“WineHQ packages <wine-devel@winehq.org>”已导入
gpg: 合计被处理的数量:1
gpg:               已导入:1
在更新软件源时,若遇到由于缺少公钥 `NO_PUBKEY 40976EAF437D05B5` 导致的 GPG 签名验证失败问题,通常是由于本地 APT 无法验证 Ubuntu 官方仓库的签名密钥所致。此类问题常见于旧版本 Ubuntu(如 Trusty、Xenial)或使用第三方仓库时。 ### 解决方法 #### 方法一:通过命令行添加缺失的公钥 可以使用 `apt-key` 命令从 Ubuntu 的密钥服务器获取缺失的公钥并添加到本地 APT 密钥环中: ```bash sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 40976EAF437D05B5 ``` 如果出现连接超时或无法通过命令获取的情况,可以尝试手动下载公钥并导入。 #### 方法二:手动下载并导入公钥 1. 访问 [keyserver.ubuntu.com](https://keyserver.ubuntu.com/),搜索 `40976EAF437D05B5`。 2. 下载对应的公钥文件(通常为 `.asc` 或 `.gpg` 格式)。 3. 使用以下命令导入公钥: ```bash sudo apt-key add path/to/public-key-file.asc ``` 4. 导入成功后,执行更新命令: ```bash sudo apt-get update ``` #### 方法三:使用 `gpg` 命令转换并导入第三方仓库密钥(适用于非 Ubuntu 官方仓库) 如果问题是由于第三方仓库(如 CUDA)引起的,可使用以下方式处理: ```bash sudo gpg --dearmor cuda-archive-keyring.gpg sudo mv cuda-archive-keyring.gpg.gpg /usr/share/keyrings/cuda-archive-keyring.gpg ``` 然后在 `sources.list` 或对应仓库配置文件中引用该密钥环: ```bash deb [signed-by=/usr/share/keyrings/cuda-archive-keyring.gpg] https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ / ``` 最后更新软件源: ```bash sudo apt-get update ``` ### 注意事项 - 使用 `apt-key` 命令添加的密钥将影响整个系统的 APT 信任链,建议仅导入可信来源的密钥。 - 若使用的是较新的 Ubuntu 版本(如 Focal、Jammy),建议优先使用仓库提供的 `signed-by` 参数方式管理密钥[^2]。
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huffiee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值