0%

Debian 13 把 sources.list 换成 deb822

Debian 13 仍能读旧的一行式 sources.list,官方推荐的是 deb822:一个仓库一段,字段分成 Types、URIs、Suites、Components、Signed-By。已经升到 trixie、源还是旧格式时,用 apt modernize-sources 转。这条命令在 Debian 13 及更新的 apt 里才有,bookworm 上没有。升级步骤见 从 Debian 12 升级到 Debian 13。

先看现在有哪些源文件:

1
ls -l /etc/apt/sources.list /etc/apt/sources.list.d/

第三方源先认一遍。转换能自动处理 signed-by 和 trusted。中括号里还有别的选项时,要自己抄到新文件里,对应关系在 sources.list(5)。

转之前留一份完整备份。命令自己会把旧文件改名为 .list.bak,但 preferences 和 keyring 不在那个备份里:

1
sudo cp -a /etc/apt /root/apt-backup-before-deb822

先看它准备改什么

1
sudo apt modernize-sources

提示 Rewrite ... sources? [Y/n] 时输入 n,这是试跑,不写文件。列表里有不认识的第三方源,就先退出,手工处理那一份。

确认只有要转的 Debian 源之后再执行一次,提示时输入 y。常见结果是:

  • 写出 /etc/apt/sources.list.d/debian.sources
  • 原来的 /etc/apt/sources.list 变成 sources.list.bak

.bak 不会被 apt 读取。新文件里每一段上面会有一行 # Modernized from ...。

打开新文件看 Suites 是不是 trixie、trixie-updates、trixie-security,Components 里原来有的 contrib、non-free、non-free-firmware 还在不在。缺了就补回原来的组件名,组件之间用空格,不是逗号。

然后:

1
sudo apt update

有校验错误,先对比 .bak,不要先删备份。确认 apt update 正常之后,再删 /root/apt-backup-before-deb822 和 *.bak。

某一段暂时不用,在那段里加 Enabled: no,比把每一行都注释掉清楚。改回 yes 或删掉这个字段就重新启用。