关于 Debian 包管理器新 DEB822 格式介绍
后知后觉 暂无评论

当安装 Debian Sid 版本时会发现安装源的定义文件已经从 /etc/apt/sources.list 变为 /etc/apt/sources.list.d/debian.sources,且内部的格式定义已经改变。

DEB822

DEB822 格式的文件扩展名为 .sources。 该格式在语法上与 Debian 及其衍生版本使用的其他文件类似,例如 apt 将从配置的源文件中下载的元数据文件,或 Debian 源码包中的 debian/control 文件。

特别要注意的是,多个值之间用空格(如空格、制表符和换行符)分隔,而不是像单行格式那样用逗号分隔。多值字段如 Architectures 也有 Architectures-AddArchitectures-Remove 来修改默认值,而不是直接替换默认值。

默认配置

使用官方网络源安装 test 版本(未发布的 Debian 13 代号 trixie),然后可见其源配置文件为:

示例源文件

格式相比旧格式,更加直观,但是字段复杂性更高了,同时在 Debian 13 (trixie) 中引入了源配置转换工具,在执行更新源命令时可见其提示:

Notice: Some sources can be modernized. Run 'apt modernize-sources' to do so.

使用其命令可自动将配置转换为 DEB822 格式:

sudo apt modernize-sources

以官方配置为例进行说明:

参数说明可用值
Types种类安装包(deb)、源码包(deb-src)
URIs统一资源标识符,理解为地址即可(http)(https)(mirror)、(file)、(cdrom)、(ftp)、(copy)、(rsh/ssh) 等
Suites套件无固定值,为仓库定义
Components组件无固定值,为仓库定义
Signed-By签名,签名文件地址/
Architectures*架构,定义所下载的安装包所支持的处理器架构/
Languages*语言,定义所下载的安装包翻译所支持的语言/
Targets*目标,定义将从所指定的地址获取资源文件/
PDiffs*对比索引,定义是获取全量资源还是仅获取更新的部分(yes)、(no)
By-Hash*校验,用于控制是否验证校验码(yes)、(no)、(force)
小贴士:带 * 标记的参数为可选参数,默认配置中不会包含。

转换示例

以官方 docker-ce 仓库为例,原格式:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] \
    https://download.docker.com/linux/debian bookworm stable

转换后:

Types: deb
URIs: https://download.docker.com/linux/debian
Suites: bookworm
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpg
# 需要注意的是部分 Debian 官方支持的架构,Docker CE 版本并不支持,因此需要添加以下参数
Architectures: amd64

附录

参考链接

如果遇到问题或者对文章内容存疑,请在下方留言,博主看到后将及时回复,谢谢!
回复 / 查看「历史评论
回答36+32=