W: GPG error: http://extras.ubuntu.com precise Release

Ubuntu GPG 错误解决
本文介绍了解决 Ubuntu 系统中使用 sudo apt-get update 命令时出现的 GPG 错误的方法。该错误提示无法验证 public key,通过使用 apt-key 命令从 keyserver.ubuntu.com 获取指定的公钥可以解决此问题。

ubuntu

sudo apt-get update

错误:

W: GPG error: http://extras.ubuntu.com precise Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 16126D3A3E5C1192


解决:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192

<think>好的,用户遇到了Docker构建时出现的GPG签名错误和APT源无法验证的问题,具体错误信息是关于http://mirrors.aliyun.com/ubuntu focal和http://deb.debian.org/debian bookworm的仓库签名问题。需要解决这两个源的GPG错误,如“At least one invalid signature was encountered”和“The repository is not signed”。用户还提到了之前使用国内源加速和升级Docker版本的方法解决了类似问题,但现在需要针对这两个特定源进行修复。 首先,我需要回顾之前的解决方案。用户引用中提到,通过更换国内源和升级Docker版本解决了GPG问题。这可能是因为国内源更新了密钥或者Docker版本修复了某些依赖。现在的问题是针对aliyun的Ubuntu focal源和Debian bookworm源的GPG错误。 接下来,我需要分析可能的原因。GPG错误通常有几个原因:密钥过期、源配置中没有正确指定密钥、或者网络问题导致无法获取密钥。对于阿里云镜像站,用户可能没有正确导入对应的GPG密钥,或者源列表中没有指定正确的signed-by参数。Debian的bookworm源可能也有类似的问题,需要检查密钥是否存在或是否过期。 针对Ubuntu的focal源,正确的做法应该是从阿里云获取对应的GPG密钥,并将其添加到APT的信任链中。阿里云通常会在其镜像站提供相应的密钥,或者可以使用Ubuntu官方密钥。而Debian的bookworm源可能需要导入Debian的官方密钥,特别是当使用旧的Docker基础镜像时,可能缺少最新的密钥。 此外,用户可能在Dockerfile中使用的是基础镜像较旧,导致内置的密钥已过期。例如,Debian的旧镜像可能没有包含最新的密钥,需要手动更新。因此,解决方案可能包括在Dockerfile中先更新ca-certificates,然后手动下载并添加对应的GPG密钥,再更新源列表。 需要分步骤解决:首先处理Ubuntu focal的阿里云源,然后是Debian bookworm的官方源。对于每个源,可能需要不同的密钥处理方式。同时,确保在Dockerfile中使用正确的命令顺序,比如先更新包列表,安装必要工具,再添加密钥和源,最后进行安装。 还需要考虑用户是否在构建过程中使用了多阶段构建,是否需要在每个阶段都处理密钥问题,或者是否需要将密钥复制到不同的构建阶段。此外,用户可能希望最小化镜像大小,因此需要清理不必要的文件,如apt缓存。 最后,验证解决方案是否有效,可能需要构建测试镜像,并检查是否还会出现GPG错误。如果问题依旧,可能需要进一步调试,比如检查密钥是否正确导入,源列表格式是否正确,或者是否有其他冲突的配置。</think>### **APT源GPG签名错误修复方案** --- #### **I. 问题根源分析** 1. **GPG密钥过期**:旧版镜像未包含最新密钥(常见于Debian Jessie/Bookworm、Ubuntu Focal) 2. **镜像源配置错误**:未正确关联密钥与仓库(阿里云镜像需显式指定`signed-by`参数) 3. **密钥服务器不可达**:默认`keyserver.ubuntu.com`在容器内可能无法访问[^1] --- #### **II. 分场景解决方案** ##### **场景1:Ubuntu Focal阿里云镜像修复** ```dockerfile # 步骤1:安装基础工具 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ gnupg2 \ && rm -rf /var/lib/apt/lists/* # 步骤2:添加阿里云GPG密钥(Ubuntu官方密钥同样适用) RUN curl -fsSL https://mirrors.aliyun.com/ubuntu/project/ubuntu-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/ubuntu-aliyun.gpg # 步骤3:配置镜像源 RUN echo "deb [signed-by=/usr/share/keyrings/ubuntu-aliyun.gpg] http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list ``` ##### **场景2:Debian Bookworm官方源修复** ```dockerfile # 步骤1:更新CA证书 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # 步骤2:添加Bookworm安全更新密钥 RUN curl -fsSL https://ftp-master.debian.org/keys/archive-key-$(awk -F'=' '/VERSION_CODENAME/{print $2}' /etc/os-release).asc | gpg --dearmor -o /usr/share/keyrings/debian-archive-keyring.gpg # 步骤3:配置可信仓库 RUN echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list ``` --- #### **III. 完整修复模板(整合阿里云+Debian源)** ```dockerfile FROM debian:bookworm # 阶段1:基础环境配置 RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ gnupg2 \ && rm -rf /var/lib/apt/lists/* # 添加阿里云Ubuntu密钥 RUN curl -fsSL https://mirrors.aliyun.com/ubuntu/project/ubuntu-archive-keyring.gpg | gpg --dearmor -o /usr/share/keyrings/ubuntu-aliyun.gpg # 添加Debian Bookworm密钥 RUN curl -fsSL https://ftp-master.debian.org/keys/archive-key-bookworm.asc | gpg --dearmor -o /usr/share/keyrings/debian-archive-keyring.gpg # 配置混合源 RUN echo "deb [signed-by=/usr/share/keyrings/ubuntu-aliyun.gpg] http://mirrors.aliyun.com/ubuntu/ focal main restricted" > /etc/apt/sources.list.d/aliyun.list RUN echo "deb [signed-by=/usr/share/keyrings/debian-archive-keyring.gpg] http://deb.debian.org/debian bookworm main" > /etc/apt/sources.list.d/debian.list # 最终安装验证 RUN apt-get update && apt-get install -y curl ``` --- #### **IV. 高级调试技巧** 1. **密钥验证命令** ```bash gpg --list-keys --keyring /usr/share/keyrings/debian-archive-keyring.gpg ``` - 确认输出包含`Bookworm Stable Release Key` 2. **强制信任密钥**(仅限测试环境) ```dockerfile RUN echo "trusted-host mirrors.aliyun.com" >> /etc/apt/apt.conf.d/99allow-unauthenticated ``` 3. **镜像源健康检查** ```bash docker run --rm your-image apt-get update -o Debug::Acquire::http=true ``` --- ### **相关问题** 1. 如何为私有APT仓库配置GPG签名? 2. `signed-by`与`trusted=yes`参数有何区别? 3. 容器环境下如何自动轮换过期GPG密钥? --- ### **引用说明** : Debian安全公告确认旧版镜像密钥需手动更新[security.debian.org](https://security.debian.org) [^2]: 阿里云镜像站明确要求[必须配置signed-by参数](https://developer.aliyun.com/mirror/)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值