Debian 13 DEB822 格式简介(及迁移流程)
编辑一、背景:Debian 13 与 APT 源的“新常态”
Debian 13(代号 trixie)已于 2025-08-09 发布,APT 在本代全面推动以 DEB822 为默认与推荐的源配置格式;如果你的系统里还保留旧的 .list 一行式配置,apt update 时常会提示“Some sources can be modernized”。APT 现已内置 apt modernize-sources 来自动转换旧格式。
更重要的是,传统的一行式 sources.list 已被标记为弃用,官方手册明确写道:该格式“计划移除,但不会早于 2029 年”。因此,尽早迁移到 DEB822 是面向未来的稳妥选择。
二、什么是 DEB822?
DEB822 是一种 Key: Value 的分段(stanza)文本格式,APT 以 .sources 扩展名识别。它与 Debian 生态中其他基于 RFC822 的元数据(如 debian/control)语法一致:
一个文件可包含多个条目,条目之间空行分隔;
以
#开头的是注释;可以用
Enabled: no快速禁用某个源;多值字段以空白字符分隔(不是逗号)。
最小必备字段
一般而言,一个可用的条目至少需要:Types、URIs、Suites(多数仓库还需要 Components)。如果仓库签名受信(几乎总是如此),还应配合 Signed-By 指定密钥环。
三、常用字段速查
Types:
deb/deb-src。URIs:仓库根地址。
Suites:如
trixie、trixie-updates、trixie-security。可在同一条目写多个套件。Components:
main contrib non-free non-free-firmware。Enabled:
yes|no,更优雅的开关方式。Architectures(及
Architectures-Add/Remove):限制拉取架构。Signed-By:将仓库的信任范围限定到指定密钥环文件(推荐路径
/usr/share/keyrings或/etc/apt/keyrings)。Trusted:极少用;
yes会绕过认证检查,请避免。By-Hash/PDiffs/Targets:高级下载/索引开关。
以上含义与语法均见 APT 官方手册。(Debian Manpages)
注:
Signed-By支持文件路径与指纹;官方建议优先使用密钥环文件并存放在上述推荐位置。
四、示例:Debian 13 官方源(推荐 HTTPS)
文件:/etc/apt/sources.list.d/debian.sources
# 官方主仓与更新
Types: deb
URIs: https://deb.debian.org/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
# 安全更新
Types: deb
URIs: https://deb.debian.org/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
此写法将 多个套件(trixie 与 trixie-updates)合并到了同一个条目;Signed-By 指向官方密钥环。语法与示例可在 APT 手册中找到对应说明。
五、第三方仓库:安全添加的通用范式
以假想的 ExampleCorp 为例(注意:路径与 Key 仅示例):
# 1) 准备 keyrings 目录(Debian 12+ 默认存在,若无则创建)
sudo install -d -m 0755 /etc/apt/keyrings
# 2) 下载并去 armor(或保持 .asc 直接用也可)
curl -fsSL https://example.com/keys/example.gpg | sudo tee /etc/apt/keyrings/example.gpg >/dev/null
sudo chmod 0644 /etc/apt/keyrings/example.gpg
文件:/etc/apt/sources.list.d/example.sources
Types: deb
URIs: https://repo.example.com/debian
Suites: trixie
Components: main
Signed-By: /etc/apt/keyrings/example.gpg
Enabled: yes
这样做的好处是:即使系统里还有其他仓库,也只会用 example.gpg 验证 ExampleCorp 这一个仓库,避免把第三方 key 暴露为“全局信任”。这是 Debian 文档与社区长期推荐的做法,并且配合了 apt-key 弃用的方向。
这里给出一个我的上一篇切换 Xanmod 内核的文章,可以参考这篇文章获得一个从头开始部署的流程。
六、从 sources.list 迁移到 .sources
APT 已提供一键迁移:
sudo apt modernize-sources该命令会:
将
.list转写为.sources;能识别时自动补上
Signed-By;为旧文件生成备份(如
.list.bak)。
若个别第三方源的签名信息不明,迁移后可能需要你手工补上Signed-By。社区与邮件列表已有大量实测与讨论。(Unix & Linux Stack Exchange)
七、常见坑与排雷
逗号 vs 空格
DEB822 多值字段以空白分隔,不要写逗号:Components: main contrib✅;Components: main, contrib❌。禁用源的正确姿势
优先使用Enabled: no,而不是整段注释,更清晰也更易于脚本处理。apt-key已弃用
不要再用apt-key add往全局信任里塞第三方 key;用Signed-By+/etc/apt/keyrings/(或/usr/share/keyrings/)即可。文件命名与位置
仅.sources与.list两类后缀会被读取;字符集有限制(字母、数字、下划线、连字符、点),不符合的会被忽略。新系统建议放到vendor.sources这类文件名中。慎用
Trusted: yes
这会绕过apt-secure的重要检查,仅在完全受信的本地场景下才可考虑。
八、最小模板
# /etc/apt/sources.list.d/<name>.sources
Types: deb
URIs: https://<mirror-or-repo>
Suites: trixie
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/<repo>.gpg
Enabled: yes进一步阅读
man sources.list(APT 官方手册,含 DEB822 全量字段与示例)。(Debian Manpages)apt modernize-sources的背景与讨论。(daniel-lange.com)安全地为第三方仓库设置
Signed-By。(Debian Manpages)
- 1
- 0
-
分享