软件包仓库
100%

软件包 · 第 2 课

软件包仓库

了解仓库如何发布已签名的软件包索引,以及 APT 如何发现已配置的 Debian 家族软件源。

软件包仓库会同时发布软件包、索引和发行元数据。包管理器下载索引,选择与已配置发行版和架构兼容的版本,验证仓库身份,再获取所需软件包文件。

仓库元数据与本地目录

仓库不只是一个归档文件目录。其元数据描述可用软件包名称、版本、架构、校验和、依赖项和仓库分区。客户端缓存一份本地目录,这样无需先下载每个归档,就能搜索和解析软件包。

在 Debian 家族系统上,使用以下命令刷新已配置的元数据:

$ sudo apt update

该命令更新本地软件包索引,本身不会安装所有可用升级。应检查报告的软件源和身份验证错误,而不能忽略失败条目。

apt update 主要刷新什么?

APT 软件源配置

APT 会从以下两个位置读取已配置来源:

  • /etc/apt/sources.list
  • /etc/apt/sources.list.d/ 下以 .list 或 .sources 结尾的文件

.list 扩展名使用传统单行格式;.sources 扩展名使用 deb822 风格的段落,当前 APT 文档建议新配置使用后者。发行版可以把默认来源放在任一位置,因此 /etc/apt/sources.list 不一定包含完整或主要配置。

Deb822 风格的软件源可能如下:

Types: deb
URIs: https://deb.example.invalid/repository
Suites: stable
Components: main
Signed-By: /etc/apt/keyrings/example.gpg

这只是语法示例;保留的 .invalid 域名不是可用仓库。

APT 可以从哪里读取活动仓库定义?

仓库身份验证

APT 会验证已签名的仓库发行元数据,再依据经过身份验证的元数据中的校验和检查下载的软件包文件。Signed-By 可以把一个软件源限定到特定密钥环,而不是让该仓库信任所有全局配置密钥。

有效签名表明元数据来自获接受签名密钥的持有者,而且没有在未被发现的情况下修改。它不能证明发布者的软件没有缺陷、没有恶意或适合当前系统。应通过独立且受信任的渠道确认密钥指纹和软件源说明。

APT 软件源定义中的 Signed-By 有什么安全用途?

谨慎添加第三方来源

仓库可以用系统权限安装软件包和生命周期脚本,因此添加仓库会扩大系统的软件信任边界。添加前:

  1. 如果发行版仓库能够满足需求,应优先使用它。
  2. 确认发布者、受支持版本、架构和签名密钥指纹。
  3. 使用独立的软件源文件和限定范围的密钥环。
  4. 安装前检查软件包名称和依赖变更。
  5. 记录如何禁用软件源,以及如何迁移或移除其软件包。

不要照搬禁用签名检查的过时说明,也不要把未经审核的远程脚本通过管道送入特权 shell。

为什么添加第三方仓库会扩大系统的信任边界?

课程已完成

你已完成 软件包仓库

现在,你可以解释已配置仓库如何成为受信任的软件包元数据来源。

  • 区分仓库索引与软件包归档。

  • 使用 apt update 刷新本地目录。

  • 找到单行和 deb822 风格的 APT 软件源定义。

  • 限定签名密钥,并谨慎审查第三方信任。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 软件包