正在加载今日诗词...
lishijiLishiji  2025-06-05 16:18 深谋之道 隐藏边栏 |   抢沙发  3 
文章评分 0 次,平均分 0.0

在使用 Debian 11 (Bullseye) 进行日常系统维护时,我遇到了一个令人头疼的错误:运行 apt update 时出现 404 Not Found 错误,特别是针对 security.debian.org bullseye/updates 这个源。然后整理了一个解决方案,希望帮助到有需要的兄弟。

一、问题现象

当我尝试更新系统软件包列表时,看到类似以下的错误输出:

Ign:1 http://security.debian.org bullseye/updates InRelease
Get:2 http://deb.debian.org/debian bullseye InRelease [116 kB]
Err:3 http://security.debian.org bullseye/updates Release
  404  Not Found [IP: 151.101.130.132 80]
...
E: The repository 'http://security.debian.org bullseye/updates Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

核心问题在于 http://security.debian.org bullseye/updates Release 返回了 404 Not Found 错误,这表示 apt 无法找到或访问该仓库的发布文件。

二、问题根源

导致这个错误的原因是 Debian 11 (Bullseye) 的常规安全支持已经于 2024 年 8 月 14 日结束

Debian 的发布周期通常分为几个阶段:

  • 常规支持期 (Regular Support):由 Debian 安全团队提供全面的安全更新,通常持续三年。

  • 长期支持期 (LTS - Long Term Support):在常规支持期结束后,由 Debian LTS 团队接管,额外提供两年的支持,主要针对关键安全问题和重要错误修复。

  • 扩展长期支持期 (ELTS - Extended Long Term Support):这是由第三方公司提供的商业服务,可以进一步延长支持时间。

由于 Debian 11 的常规支持期已经结束,原先指向 http://security.debian.org/bullseye/updates 的安全更新源不再活跃或提供文件。现在,Debian 11 的安全更新已经迁移到 LTS 仓库。而我仍旧尝试从一个不再提供更新的旧地址获取安全补丁,从而导致 404 错误。

三、解决方案

解决这个问题的关键在于更新 sources.list 文件,将安全更新的源指向 Debian 11 的 LTS 仓库。但是,由于我的系统是由 cloud-init 管理的,直接修改 /etc/apt/sources.list 可能会在系统重启或重新打包时被覆盖。不过,sources.list 文件开头明确指出了处理 cloud-init 托管环境的正确方法:

## Note, this file is written by cloud-init on first boot of an instance
## modifications made here will not survive a re-bundle.
## if you wish to make changes you can:
## a.) add 'apt_preserve_sources_list: true' to /etc/cloud/cloud.cfg
##     or do the same in user-data
## b.) add sources in /etc/apt/sources.list.d
## c.) make changes to template file /etc/cloud/templates/sources.list.debian.tmpl

我采用的是b方案。

1.创建新的安全源文件

创建一个名为 debian-security-lts.list 的新文件,并将其放置在 /etc/apt/sources.list.d/ 目录下。

sudo sh -c 'echo "deb http://security.debian.org/debian-security bullseye-security main contrib non-free" > /etc/apt/sources.list.d/debian-security-lts.list'
sudo sh -c 'echo "deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list.d/debian-security-lts.list'
  • deb http://security.debian.org/debian-security bullseye-security main contrib non-free: 这是 Debian 11 (Bullseye) LTS 安全更新的官方推荐地址。它包含了主要的、贡献的和非自由的软件包。

  • deb-src ...: 对应源代码的地址。

2.注释掉旧的 sources.list 中的问题行

为了避免任何潜在的冲突或混淆,并保持配置的清晰性,建议注释掉 /etc/apt/sources.list 中指向旧的 bullseye/updates 的行。

sudo sed -i 's/^deb http:\/\/security\.debian\.org\/ bullseye\/updates main/#deb http:\/\/security\.debian\.org\/ bullseye\/updates main/' /etc/apt/sources.list
sudo sed -i 's/^deb-src http:\/\/security\.debian\.org\/ bullseye\/updates main/#deb-src http:\/\/security\.debian\.org\/ bullseye\/updates main/' /etc/apt/sources.list

3.更新软件包列表

现在,安全仓库已正确配置,可以刷新软件包列表了。

sudo apt update

如果一切顺利,你应该不再看到 404 Not Found 错误,并且 apt 能够成功地从新的 LTS 仓库获取信息。

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

lishiji
Lishiji 关注:0    粉丝:0
仙之巅,傲世间!生当作人杰,死亦为鬼雄。

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享