解决linux更新apt软件源时报出GPG错误

本文介绍了解决树莓派在更换软件源时遇到的GPG错误的方法。通过补充缺失的公钥,使用特定命令修复了apt在更新过程中出现的加密验证问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天给树莓派换源,爆出N个这错误:
W: GPG error: http://mirrors.neusoft.edu.cn/raspbian/raspbian wheezy InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9165938D90FDDD2E
经过多番查找资料,解决了问题,记录下解决过程.

介绍:

GPG是啥:

这玩意又叫GnuPG,是一个加密/解密相关的工具,据说是模仿PGP开发的(PGP另一个加密工具,收费的)

apt为何用到GPG:

apt在下载包的时候会加密,而GPG在其中提供加密,解密相关的支持

解决问题:

从上面的提示可看出,似乎缺少了某Pubkey,所以要把它补上,使用如下命令:

gpg --keyserver 服务器 --recv-keys 提示语句最后的那串玩意儿 && apt-key add /root/.gnupg/pubring.gpg
#例子:
gpg --keyserver keyserver.ubuntu.com --recv-keys 9165938D90FDDD2E && apt-key add /root/.gnupg/pubring.gpg

命令执行后,再次apt update,发现之前的GPG错误没了.问题解决~

国内可用key server列表:

keyserver.ubuntu.com
pgp.mit.edu
subkeys.pgp.net
www.gpg-keyserver.de

参考资料(里面有更详细的内容):

http://blog.chinaunix.net/uid-20420254-id-2890214.html
http://www.ruanyifeng.com/blog/2013/07/gpg.html
http://zqscm.qiniucdn.com/data/20070530161730/index.html

转载于:https://www.cnblogs.com/DragonStart/p/8146272.html

<think>好的,我现在需要帮助用户解决在Ubuntu系统中使用APT安装Docker时遇到的“Unable to locate package docker-ce and ca-certificates”错误。首先,我要回顾用户的历史问题和我之前的回答,确保解决方案的一致性。 用户之前遇到安装docker-ce和相关包的问题,主要是因为仓库源配置不正确,可能版本代号不匹配或缺少依赖。我之前给解决方案包括添加正确的Docker仓库、更新源和安装必要依赖。现在用户再次遇到类似的问题,但这次还提到ca-certificates包找不到,这有点奇怪,因为ca-certificates通常是系统自带的基础包。 首先,我需要考虑可能的原因。用户提到无法定位docker-ce和ca-certificates,这可能意味着两个问题:一是Docker仓库配置错误,导致找不到docker-ce包;二是系统源有问题,导致连ca-certificates这样的基础包都找不到。后者比较少见,因为ca-certificates通常存在于官方源中。可能是用户的apt缓存过期,或者源列表损坏,或者网络问题导致无法访问仓库。 接下来,我需要参考用户提供的引用内容。引用1提到安装CUDA时添加GPG密钥和更新缓存,这与我之前建议的步骤类似,比如添加GPG密钥和更新源。引用2和3涉及Kubernetes部署和GitLab配置,可能与当前问题关联不大,但用户可能在使用Docker时涉及其他组件,不过暂时可以忽略。 现在回到当前问题,我需要分步骤思考解决方案: 1. **更新apt缓存**:用户可能没有运行sudo apt update,导致本地缓存过期,无法找到最新的包列表。特别是如果用户刚修改了源列表,必须更新缓存。 2. **检查ca-certificates问题**:如果连ca-certificates都找不到,说明系统的基础源可能有问题。需要检查/etc/apt/sources.list中的官方源是否正确,是否被注释或修改过。例如,Ubuntu的官方源是否启用,是否有拼写错误。 3. **验证网络连接**:用户可能遇到网络问题,无法连接到Ubuntu的官方仓库或Docker的仓库。可以尝试ping archive.ubuntu.com或下载.docker.com,确认网络通畅。 4. **确认系统架构和版本**:用户是否在正确的系统架构(如amd64)上安装?是否使用了与系统版本不匹配的Docker仓库代号?比如,Ubuntu 22.04的代号是jammy,如果仓库配置中使用了错误的代号(如focal,对应20.04),可能导致找不到包。 5. **重新添加Docker仓库**:按照我之前提供的步骤,确保GPG密钥正确导入,仓库地址正确,特别是版本代号。如果用户之前强制使用了旧代号,可能需要根据实际情况调整。 6. **修复损坏的包或依赖**:使用sudo apt --fix-broken install修复可能的依赖问题,或者清除损坏的包缓存。 7. **手动安装ca-certificates**:如果系统源确实有问题,可能需要先修复基础源,确保能够安装ca-certificates,然后再处理Docker的安装。 现在结合用户的历史问题,我之前建议过清理旧版本、安装依赖、添加GPG密钥、设置仓库源等步骤。用户可能在设置仓库源时仍然存在问题,或者ca-certificates的问题是因为其他配置错误。 可能的解决方案步骤: - 首先运行sudo apt update,确保源列表最新。 - 检查/etc/apt/sources.list中的官方源是否正确。 - 如果ca-certificates缺失,尝试安装它,可能需要先修复基础源。 - 重新添加Docker仓库,确保版本代号正确。 - 再次运行sudo apt update,然后尝试安装docker-ce。 如果用户仍然遇到问题,可能需要手动指定Docker版本,或者使用其他镜像源,如阿里云镜像,替换官方Docker仓库地址,以解决网络访问问题。 此外,用户提到“Unable to locate package docker-ce-cli-containerd.io”,这可能是因为在安装命令中包名拼写错误。正确的包名是docker-ce-cli和containerd.io,可能需要分开安装,或者在添加仓库后这些包才可用。 总结,需要确保仓库配置正确,网络连接正常,并修复可能的系统源问题。同时,处理依赖关系和可能存在的包冲突。</think>以下是根据你的问题整理的详细解决方案,结合系统日志分析和Docker官方文档建议: ### 分步解决方案 #### 1. 修复基础软件源配置 现`ca-certificates`找不到表明基础apt源异常,先恢复默认源: ```bash sudo sed -i 's/\/\/.*archive.ubuntu.com/\/\/archive.ubuntu.com/g' /etc/apt/sources.list sudo sed -i 's/\/\/.*security.ubuntu.com/\/\/security.ubuntu.com/g' /etc/apt/sources.list ``` #### 2. 强制刷新软件包列表 ```bash sudo rm -rf /var/lib/apt/lists/* sudo apt clean sudo apt update ``` #### 3. 安装缺失的核心组件 ```bash sudo apt install --reinstall ca-certificates apt-transport-https ``` #### 4. 配置Docker仓库(关键步骤) ```bash # 创建密钥目录 sudo mkdir -p /etc/apt/keyrings # 添加官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置仓库(自动匹配系统代号) echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` #### 5. 执行安装命令 ```bash sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin ``` ### 错误处理方案 **场景1**:仍报`Unable to locate package` ```bash # 检查仓库是否生效 apt-cache policy docker-ce # 强制指定版本安装 sudo apt install docker-ce=5:24.0.6-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.6-1~ubuntu.22.04~jammy ``` **场景2**:现`ca-certificates`依赖错误 ```bash # 手动下载deb包安装 wget http://archive.ubuntu.com/ubuntu/pool/main/c/ca-certificates/ca-certificates_20230311ubuntu0.22.04.1_all.deb sudo dpkg -i ca-certificates_20230311ubuntu0.22.04.1_all.deb ``` ### 验证安装 ```bash sudo docker version sudo docker run --rm hello-world ``` ### 附:国内用户加速方案 若下载速度慢,可将Docker仓库地址替换为: ```bash sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/apt/sources.list.d/docker.list ``` --- ### 相关问题 1. 如何验证Docker仓库是否配置正确? 2. 安装时现`Hash Sum mismatch`错误该如何解决? 3. 如何彻底卸载Docker及其所有依赖? [引用1][引用2][引用3]中关于APT密钥管理和仓库配置的操作方法,与本解决方案中的步骤原理一致,均需要通过正确的密钥验证和仓库地址配置来保证软件包的可获取性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值