当前位置: 首页 > backend >正文

`sudo apt update` 总是失败

# 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状态

http://www.xdnf.cn/news/18486.html

相关文章:

  • Linux问答题:调优系统性能
  • 李宏毅NLP-12-语音分类
  • 基于Labview的旋转机械AI智能诊断系统
  • 2015-2018年咸海流域1km归一化植被指数8天合成数据集
  • html-docx-js 导出word
  • Linux问答题:归档和传输文件
  • 探秘北斗卫星导航系统(BDS):架构、应用与未来蓝图,展现中国力量
  • 文件系统挂载详细分析(《图解Linux内核》虚拟文件系统篇笔记二)
  • UDP报文的数据结构
  • 可转换债券高频交易Level-2五档Tick级分钟历史数据分析
  • 20250823解决荣品RD-RK3588-MID核心板的底板的adb不通
  • 超越基础:Glide 高级优化与自定义实战
  • 12.Shell脚本修炼手册--函数的基础认知与实战演练(fock炸弹!!)
  • 第1.2节:早期AI发展(1950-1980)
  • Mybatis Plus - 代码生成器简单使用
  • Baumer高防护相机如何通过YoloV8深度学习模型实现社交距离的检测识别(python)
  • 【204页PPT】某著名企业信息化规划方案(附下载方式)
  • 【攻防世界】Web_php_include
  • GitLab CI:安全扫描双雄 SAST vs. Dependency Scanning 该如何抉择?
  • 阿德莱德多模态大模型导航能力挑战赛!NavBench:多模态大语言模型在具身导航中的能力探索
  • C++ csignal库详细使用介绍
  • 密码管理中Null 密码
  • 第九届86358贾家庄短片周在山西汾阳贾家庄举办
  • 齐次变换矩阵的逆变换:原理与SymPy实现
  • FIFO核心原理与机制
  • 解决 SymPy Lambdify 中的符号覆盖与语法错误问题
  • PiscCode使用 MediaPipe 检测人脸关键点多样展示
  • 大数据世界的开拓者:深入浅出MapReduce分布式计算经典范式
  • 相似度、距离
  • 一次性密码(OTP)原理及应用