【避坑指南】Ubuntu更新报错“Repository is not signed”的快速修复

一招解决Docker源GPG密钥验证失败问题,让你的apt恢复如初!

问题现象

在使用Ubuntu系统时,执行sudo apt update后出现如下错误提示:

复制代码
W: GPG error: https://download.docker.com/linux/ubuntu focal Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://download.docker.com/linux/ubuntu focal Release' is not signed.

这是典型的APT源GPG密钥验证失败问题,会导致无法从该源安装或更新软件包。

问题根源

APT包管理器通过GPG密钥来验证软件源的完整性和真实性。当密钥缺失、过期或不匹配时,出于安全考虑,Ubuntu会阻止从该源进行软件更新。

解决方案大全

方案一:完整修复Docker源(推荐)

这是最彻底的解决方案,适用于需要继续使用Docker官方源的用户。

bash 复制代码
# 1. 安装GPG工具
sudo apt install -y gpg

# 2. 创建密钥目录并下载Docker官方GPG密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 3. 设置正确的文件权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 4. 重新添加Docker仓库(适配当前系统版本)
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. 更新软件包列表
sudo apt update

方案二:临时绕过验证(应急使用)

如果急需安装某个软件(如curl),可以暂时绕过验证:

bash 复制代码
# 更新可用的源
sudo apt update

# 强制安装(不推荐长期使用)
sudo apt install curl -y --allow-unauthenticated

方案三:移除有问题的源

如果暂时不需要使用Docker,可以直接移除问题源:

bash 复制代码
# 方法A:直接删除Docker源文件
sudo rm -f /etc/apt/sources.list.d/docker.list

# 方法B:注释掉Docker源
sudo sed -i '/download.docker.com/s/^/# /' /etc/apt/sources.list.d/docker.list

# 更新软件包列表
sudo apt update

方案四:手动添加缺失密钥

针对具体的缺失密钥进行修复:

bash 复制代码
# 添加报错信息中显示的缺失密钥
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8

# 更新验证
sudo apt update

故障排查流程图

是
否/暂时不用
遇到GPG验证错误
是否需要Docker源?
使用方案一完整修复
使用方案三移除源
修复成功
问题解决
可正常使用Docker
可正常使用其他源

实用小贴士

  1. 定期清理系统:

    bash 复制代码
    sudo apt autoremove  # 清理不再需要的依赖包
    sudo apt autoclean   # 清理旧的软件包缓存
  2. 检查源状态:

    bash 复制代码
    sudo apt update 2>&1 | grep -i "gpg\|key\|error"  # 过滤查看密钥相关错误
  3. 备份源列表:

    bash 复制代码
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    sudo cp -r /etc/apt/sources.list.d/ /etc/apt/sources.list.d.backup/

预防措施

  • 添加第三方源时,确保同时添加其GPG密钥
  • 定期更新系统密钥环:sudo apt install debian-archive-keyring
  • 使用国内镜像源可提高速度并减少密钥问题

结语

GPG密钥验证是Linux系统安全的重要机制,虽然有时会带来一些小麻烦,但它保护我们免受恶意软件源的侵害。掌握这些修复方法,你就能游刃有余地处理类似的APT源验证问题。

希望这篇指南能帮助你顺利解决问题!如果遇到其他技术难题,欢迎在评论区留言讨论。祝你编码愉快!


本文为原创内容,版权归作者所有,转载需注明出处。

标签:#Ubuntu故障排除 #APT源修复 #Docker安装

相关推荐
mounter6254 分钟前
Linux 内核热升级(Live Update)技术详解:PCI、VFIO 与 IOMMU 子系统的演进与实战解析引言
linux·linux kernel·kernel·iommu·vfio
砚凝霜26 分钟前
【软考信息安全】第十九章 Unix/Linux安全分析与防护
linux·安全·unix
creator_Li1 小时前
Linux 的 Page Cache
linux·page cache
程序员老赵2 小时前
Docker 部署 Portainer CE:轻松搭建容器管理平台
docker·容器·开源
TTATTC2 小时前
Gmail、Drive、日历共用一套命令:gws 如何在运行时把 Discovery 文档编译成 CLI
docker·开源
大侠归来3 小时前
Docker 部署 Dolibarr:从零开始的完整指南
运维·docker·容器
KING-WU5123 小时前
Linux GDB 调试实战指南:从编译到断点调试
linux·运维·服务器
Lucis__3 小时前
深入理解程序链接与加载—从动静态链接到库加载
linux·elf·链接·程序·动静态库
七月吃橘子3 小时前
WSL2+Docker+Ollama,本地部署大模型实践(Qwen1.8b)
运维·docker·容器
影视飓风TIM3 小时前
Linux 进程信号原理与剖析
linux·运维·服务器