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

`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.dtcms.com/a/347685.html

相关文章:

  • 【KO】前端面试六
  • X射线胸部肺炎检测:基于深度学习的医学影像分析项目
  • Trae Solo模式生成一个旅行足迹App
  • JS事件的概念
  • 【最后203篇系列】035 数据表同步简单方案
  • 深入理解 React useEffect
  • 语义普遍性与形式化:构建深层语义理解的统一框架
  • 串与数组:从字符处理到多维存储的数据结构详解
  • 【python】min(key=...)用法
  • 【Kubernetes知识点】资源配额与访问控制
  • 小白向:Obsidian(Markdown语法学习)快速入门完全指南:从零开始构建你的第二大脑(免费好用的笔记软件的知识管理系统)、黑曜石笔记
  • Redis学习笔记 ---- 基于token实现登录功能
  • 多媒体内容生成 - 超越文本的生产力
  • 使用自制的NTC测量模块测试Plecs的热仿真效果
  • python如何下载库——0基础教程
  • 【使用Unsloth 微调】数据集的种类
  • Linux|数据库|2025最新数据库管理工具cloudbeaver-25.0.1的docker方式部署和二进制方式部署
  • leetcode刷题记录03——top100题里的6道简单+1道中等题
  • 单例模式介绍
  • 企业视频库管理高效策略
  • Java和数据库的关系
  • 如何利用 DeepSeek 提升工作效率
  • C++的struct里面可以放函数,讨论一下C++和C关于struct的使用区别
  • 基于TimeMixer现有脚本扩展的思路分析
  • 网络参考模型操作指南
  • 大数据接口 - 企业风险报告(专业版)API接口文档
  • 【Vue✨】Vue 中的 diff 算法详解
  • Compose笔记(四十七)--SnackbarHost
  • 14.Shell脚本修炼手册--玩转循环结构(While 与 Until 的应用技巧与案例)
  • 使用sys数据库分析 MySQL