# Ubuntu 20.04 apt update 失败问题解决记录

## 问题描述

- **系统版本**: Ubuntu 20.04

- **问题现象**: `sudo apt update` 总是失败

- **发生时间**: 2025-08-23

## 错误信息

```

W: GPG error: https://mirrors.aliyun.com/ubuntu focal InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 3B4FE6ACC0B21F32 NO_PUBKEY 871920D1991BC93C

E: The repository 'https://mirrors.aliyun.com/ubuntu focal InRelease' is not signed.

N: Updating from such a repository can't be done securely, and is therefore disabled by default.

```

## 问题分析

通过诊断发现两个主要问题:

1. **GPG密钥环文件损坏**

   - 文件路径: `/usr/share/keyrings/ubuntu-archive-keyring.gpg`

   - 问题: 文件存在但大小为0字节(空文件)

   - 影响: 无法验证软件源的签名

2. **软件源配置不完整**

   - 当前配置只包含: `main restricted`

   - 缺少仓库: `universe multiverse`

   - 影响: 部分软件包无法安装

## 解决步骤

### 第一步:诊断问题

```bash

# 查看具体错误信息

sudo apt update

# 检查密钥环文件状态

ls -la /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 输出显示文件大小为0字节,说明文件损坏

```

### 第二步:修复GPG密钥环文件

```bash

# 删除损坏的密钥环文件

sudo rm /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 从Ubuntu官方下载正确的密钥环文件

sudo wget -O /usr/share/keyrings/ubuntu-archive-keyring.gpg https://archive.ubuntu.com/ubuntu/project/ubuntu-archive-keyring.gpg

# 验证文件下载成功

ls -la /usr/share/keyrings/ubuntu-archive-keyring.gpg

# 应该显示文件大小为3607字节

```

### 第三步:更新软件源配置

```bash

# 在每个软件源行末尾添加 universe multiverse 仓库

sudo sed -i 's/main restricted$/main restricted universe multiverse/g' /etc/apt/sources.list

```

**修改前的配置:**

```

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal main restricted

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-security main restricted

```

**修改后的配置:**

```

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

deb [signed-by=/usr/share/keyrings/ubuntu-archive-keyring.gpg] https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

```

### 第四步:验证修复结果

```bash

# 重新运行 apt update

sudo apt update

# 成功输出:

# Fetched 36.3 MB in 7s (5,486 kB/s)

# Reading package lists... Done

# 116 packages can be upgraded.

```

## 解决结果

✅ **问题完全解决**

- `sudo apt update` 运行成功

- 所有软件源都能正常访问

- 系统检测到116个软件包可以升级

- 可以正常安装来自 universe 和 multiverse 仓库的软件包

## 相关命令

```bash

# 查看可升级的软件包

apt list --upgradable

# 升级所有软件包

sudo apt upgrade

# 检查软件源配置

cat /etc/apt/sources.list

# 检查GPG密钥

apt-key list

```

## 经验总结

### 问题根因

1. **GPG密钥环文件损坏**是导致签名验证失败的直接原因

2. **软件源配置不完整**限制了可用软件包的范围

### 解决要点

1. **诊断先行**: 通过查看具体错误信息和文件状态来定位问题

2. **官方资源**: 使用Ubuntu官方源下载密钥文件确保可靠性

3. **完整配置**: 确保包含所有必要的仓库(main, restricted, universe, multiverse)

### 预防措施

1. **定期备份**: 重要系统配置文件的备份

2. **谨慎操作**: 避免手动删除或修改系统密钥文件

3. **及时更新**: 保持系统和软件源的及时更新

## 适用场景

此解决方案适用于以下情况:

- Ubuntu 20.04 系统

- 使用阿里云镜像源

- 出现GPG签名验证失败错误

- 软件源配置不完整的问题

---

**记录时间**: 2025-08-23  

**解决状态**: ✅ 已完全解决  

**后续跟踪**: 建议定期检查apt update状态

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐