#repository #signing-key #apt #debian #packaging #file-path #cli-tool

app debctl

apt 仓库管理的 CLI 工具

1 个不稳定版本

0.1.0 2023 年 10 月 25 日

配置 中排名 #490

MIT 许可证

125KB
3K SLoC

debctl

debctl 是一个用于管理 apt 仓库的 CLI 工具。它旨在替代 add-apt-repositoryapt-key,支持新的 deb822 格式,并实现了管理签名密钥的现代最佳实践。

现有的工具有什么问题?

  • add-apt-repository 将仓库条目添加到 /etc/apt/sources.list,而该格式已被新的 deb822 格式淘汰。
  • apt-key 已弃用,因为它信任所有 apt 仓库的签名密钥,而不仅仅是它们应该签名的那些。

此工具旨在鼓励最佳实践,同时提供执行奇怪操作的方法。

安装

安装 Rust 并运行

cargo install debctl

此工具将使用 GnuPG 与 PGP 密钥交互,因此您必须在您的 PATH 上安装并可用 gpg

示例

让我们将 Docker apt 仓库 添加到您的系统

debctl new \
    --name docker \
    --uri https://download.docker.com/linux/ubuntu \
    --key https://download.docker.com/linux/ubuntu/gpg \
    --component stable

这将下载仓库的签名密钥并将其安装到 /etc/apt/keyrings/ 下。它可以从 URL、本地文件路径或密钥服务器获取签名密钥并将其安装到密钥环中或内联到 .sources 文件中。

此命令在 /etc/apt/sources.list.d/docker.sources 下创建仓库条目。以下是这个文件的外观

Enabled: yes
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: jammy
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpg

大多数第三方 apt 仓库的文档都指示用户使用 add-apt-repository。此工具接受由 add-apt-repository 使用的旧式语法,并将其转换为 deb822 语法

debctl add \
    --name docker \
    --key https://download.docker.com/linux/ubuntu/gpg \
    'deb [arch=amd64 lang=en,de] https://download.docker.com/linux/ubuntu jammy stable'

以下是该命令生成的文件

Enabled: yes
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: jammy
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpg
Architectures: amd64
Languages: en de

您还可以将现有的旧式 .list 文件转换为 deb822 风格的 .sources 文件

debctl convert --name docker

这会将 /etc/apt/sources.list.d/docker.list 替换为 /etc/apt/sources.list.d/docker.sources

.list 文件中注释掉的条目包含在 .sources 文件中,但设置了 Enabled: no 选项。在 .list 文件中的常规注释被保留并包含在 .sources 文件中。

依赖项

~13–28MB
~465K SLoC