编码代理与终端 · 收录于 2026-08-29 · 适用 1 工具 ✓ 实测验证

apt-get update 报 404 Not Found / 源失效(Err:1 ... 404)

已验证 2026-08-29apt-get update 报 404 是源失效——先看 Err: 行定位坏条目,curl 验证确实 404 后删/注释该源再 update。

快速修复

# 一键:先定位坏条目(看 Err: 行),再 curl 验证,坏条目删/注释后重新 update
grep -r "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/ && curl -sI <URIs>/dists/<suite>/Release

你会遇到什么

apt-get update / apt-get install 报源失效:Err:2 https://deb.debian.org/debian nonexistent-suite Release 404 Not Found,最后 E: The repository ... does not have a Release file. 整个命令退出码 100。

你什么都没动,为什么突然不行了?多半是某个源挂了——apt-get update 是"取清单"阶段,任何一个源失败都会让整个命令退出 100,即使其它源正常。

本文路径:快速修复(30 秒一段命令)→ 一步步排查(可跳读)→ 原理与变体(症状/原因/证据)。赶时间直接跳到「快速修复」。

为什么会这样

apt 的源指向的仓库不再能提供 dists/<suite>/Release 文件时,就报 404 + 无 Release 文件:

场景说明
源地址本身失效项目不再维护 deb 仓库、域名过期、路径变更
suite 名拼错/不存在bookworm 写成 bookworm2,或指向未发布/已归档的 suite
照旧教程配源发布后仓库被删——"照教程配源"最常见的中招场景
镜像站部分同步main 有、universe 缺失,或拉取中断留半成品

apt 的寻址模型是「源(source entry)→ suite → 组件 → Release/索引文件」的路径拼接:deb http://host/dists/<suite>/<component> 对应的就是 dists/<suite>/Release(和 Packages/Sources 索引)。

404 + 「无 Release 文件」= 该路径上服务器不再提供文件——不是「网络不好」,是「寻址目标不存在」。镜像站部分同步、suite 名拼错、仓库下线都落在同一层。

确定性推论:报错里的 URL 就是 apt 实际请求的路径,先手动 curl -I 那个 URL 验证存在性;apt-get update 的 404 只影响该源对应组件,其余源照常(所以「部分源坏了」是常态);

修法是换源条目(/etc/apt/sources.list 或 /etc/apt/sources.list.d/),而不是反复 update;判断路径:curl -I <报错URL> 404 = 源失效,200 = 检查本地列表缓存/代理。

一步步来

1. 先定位是哪个源挂了 — 排查

完整看 update 输出里的 Err: 行(仓库 URL + suite),再核对条目:

grep -r "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/

(deb822 格式看 Types:/URIs:/Suites: 行。)

2. 验证源是否真实可访问 — 必做

curl -sI <URIs>/dists/<suite>/Release

返回 200 = 源没问题;404 = 条目已失效。

3. 删除或注释坏条目 — 必做

rm /etc/apt/sources.list.d/bad.list

或注释掉,重新 apt-get update。

4. 换有效源 — 必做

Ubuntu 官方 http://archive.ubuntu.com/ubuntu/;Debian 用 https://deb.debian.org/debian/;国内可换清华/阿里云镜像(路径结构相同,suite 名不变)。不要用老教程里的源——先 curl 验证再写入。

5. PPA 停更 / 版本太旧场景 — 必做

老 PPA 被 launchpad 清理后 404,删对应 /etc/apt/sources.list.d/<ppa>.list 即可;发行版 EOL 后官方源退役,需升级发行版或改用 old-releases.ubuntu.com(仅建议临时用)。

怎么确认修好了

update 全绿(实测输出形态):

apt-get update
→ 无 Err: 行,exit 0(坏源移除后实测 apt-exit=0)

其它环境的表现

环境说明
本地 404 服务器同款 Err: ... 404 File not found + exit 100(实测复现)
镜像过期换清华/阿里云,suite 名不变
PPA 停更删对应 .list
EOL 发行版升级或 old-releases(临时)
退出码 100任何一个源失败都会这样,先定位 Err: 行

症状

apt-get update / apt-get install 报源失效:

Err:2 https://deb.debian.org/debian nonexistent-suite Release
  404  Not Found [IP: 151.101.90.132 443]
E: The repository 'https://deb.debian.org/debian nonexistent-suite Release' does not have a Release file.

特征:update 阶段出现 Err:N ... 404 Not Found(或 File not found)并最终 E: The repository ... does not have a Release file; apt-get 退出码 100;常见于:第三方自定义 deb 源下线/路径变了、PPA 停更(launchpad 上老 PPA 被清理)、镜像站过期/组件名拼错、 Ubuntu 旧版本官方源退役(如 12.10 时代的 archive.ubuntu.com 老路径)、/etc/apt/sources.list.d/ 里有残留的坏条目。

原因

apt 的源(sources.list / sources.list.d/*.sources)指向的仓库不再能提供 dists/<suite>/Release 文件时,就会报 404 + 无 Release 文件。 可能原因:

  • 源地址本身失效(项目不再维护 deb 仓库、域名过期、路径变更);
  • suite 名称拼错或不存在(如把 bookworm 写成 bookworm2,或指向尚未发布/已归档的 suite);
  • 源来自旧教程,发布后仓库被删("照教程配源"最常见的中招场景);
  • 镜像站只同步了部分组件(main 有、universe 缺失),或拉取时网络中断留下半成品。

注意:apt-get update 是"取清单"阶段,任何一个源失败都会让整个命令退出 100,即使其它源正常。

解法

  1. 先定位是哪个源挂了:完整看 update 输出里的 Err: 行(仓库 URL + suite),再 grep -r "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/(deb822 格式看 Types:/URIs:/Suites: 行)核对条目。
  2. 验证源是否真实可访问:curl -sI <URIs>/dists/<suite>/Release —— 返回 200 说明源没问题,404 说明条目已失效。
  3. 删除或注释坏条目:把失效的 .list/.sources 移出目录(rm /etc/apt/sources.list.d/bad.list)或注释掉,重新 apt-get update。
  4. 换有效源:Ubuntu 官方源 http://archive.ubuntu.com/ubuntu/(Debian 用 https://deb.debian.org/debian/),

国内可换清华/阿里云镜像(路径结构相同,suite 名不变);不要用"老教程里的源"——先 curl 验证再写入。

  1. PPA 停更场景:add-apt-repository 过的老 PPA 被 launchpad 清理后 404,直接删对应 /etc/apt/sources.list.d/<ppa>.list 即可。
  2. 版本太旧场景:发行版 EOL 后官方源退役(404),需升级发行版或改用 old-releases.ubuntu.com(仅建议临时用)。
验证证据
  • 本地实测(2026-08-29,WSL Ubuntu,apt 2.x,用 -o Dir::Etc::sourcelist=... 隔离临时源,未触碰系统配置):
  • 坏源①:deb https://deb.debian.org/debian/ nonexistent-suite main → update 报 Err:2 ... nonexistent-suite Release 404 Not Found,

E: does not have a Release file,apt-exit=100;

  • 坏源②:本地 404 服务器(python3 -m http.server 只返回 404)→ 同样报 Err: ... 404 File not found + exit 100,

与真实"镜像过期/源失效"完全同款——本地可稳定复现;

  • 修复链路:换成宿主机有效镜像(archive.ubuntu.com + 正确 suite)→ update 正常,apt-exit=0。
  • 参考案例:1BAH/fenrir#10(自定义 deb 源 404 装不上)、amandeepg/notifyosdconfig#1(老 PPA 404)同款现象。
  • 实测复现日志(2026-08-29)

适用工具 (1)

本问题方案已挂到下列工具的方案页——从工具页也能回到这里,双向可达。

apt · 外部工具

成套方案 (组合包)

这个问题包含在下列成套安装方案中。

来源与证据

收录 验证 ✓ 实测验证适用 1 工具
方案含本地实测或来源可复核的解法;未实测项已在文中如实标注。

素材来源:https://github.com/1BAH/fenrir/issues/10

← 编码代理与终端 问题域 | 问题货架 | 遇到其它问题?去 问题空间 提交求助卡