【避坑指南】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安装

相关推荐
HLC++5 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室6 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
生活爱好者!7 小时前
我把NAS当作下载机,docker一键部署qb
运维·docker·容器
java_logo8 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
MC皮蛋侠客8 小时前
uv 系列(七):CI/CD、Docker 与私有索引——生产级交付
python·ci/cd·docker·uv
groundhappy9 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕9 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫10 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生11 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
用户2333768521811 小时前
Docker 端口"时通时不通"的排查实战
docker