软件包仓库会同时发布软件包、索引和发行元数据。包管理器下载索引,选择与已配置发行版和架构兼容的版本,验证仓库身份,再获取所需软件包文件。
软件包 · 第 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 有什么安全用途?
谨慎添加第三方来源
仓库可以用系统权限安装软件包和生命周期脚本,因此添加仓库会扩大系统的软件信任边界。添加前:
- 如果发行版仓库能够满足需求,应优先使用它。
- 确认发布者、受支持版本、架构和签名密钥指纹。
- 使用独立的软件源文件和限定范围的密钥环。
- 安装前检查软件包名称和依赖变更。
- 记录如何禁用软件源,以及如何迁移或移除其软件包。
不要照搬禁用签名检查的过时说明,也不要把未经审核的远程脚本通过管道送入特权 shell。
为什么添加第三方仓库会扩大系统的信任边界?
可以在Linux 软件安装实验中练习通过仓库安装,或在使用 YUM 查询和更新软件包实验中比较 Red Hat 家族流程。准确的 APT 语法请查阅本机 sources.list(5) 手册。
课程已完成
你已完成 软件包仓库
现在,你可以解释已配置仓库如何成为受信任的软件包元数据来源。
区分仓库索引与软件包归档。
使用
apt update刷新本地目录。找到单行和 deb822 风格的 APT 软件源定义。
限定签名密钥,并谨慎审查第三方信任。