1个不稳定版本
0.1.0 | 2019年3月3日 |
---|
#665 in 操作系统
94KB
2.5K SLoC
Faux apt
这是一个类似于库的工具,用于与Debian/Ubuntu软件包元数据交互,就像使用apt
或aptitude
一样。然而,这些工具不是作为库组织的,因此很难以这种方式驱动它们。
该项目是纯Rust,可在Windows、OSX等系统上正常运行。除非你想将其写入只限root的目录,否则不需要root权限。
它目前不包含安装软件包的方式,因此不能作为apt
的替代品。
它旨在在需要时提供数据访问,例如
let mut fapt = System::cache_only()?;
commands::add_sources_entries_from_str(&mut fapt, src_line)?;
commands::add_builtin_keys(&mut fapt);
fapt.update()?;
for block in commands::all_blocks(&fapt)? {
这可以在一个示例中看到
% cargo run -q --example \
list_source_packages deb-src https://deb.debian.org/debian buster main non-free
Downloading: https://deb.debian.org/debian/dists/buster/InRelease ... complete.
Downloading: https://deb.debian.org/debian/dists/buster/main/source/by-hash/SHA256/c3a1781dc47ba30d2c29eafd556d36917bb180c1f55c4862fedd48da28a2042f ... complete.
0ad
0ad-data
0xffff
...
还支持将这些HashMap<String, Strings>
解析为合适的对象。
这两个API之间的区别可以在list_latest_source_map
(对于映射API)和list_latest_source_obj
(对于对象API)中看到。映射API更稳定,因为它做的工作较少,并将解析和错误处理留给您。
数据模型
以下是在amd64
机器上的一个示例sources list
条目
deb https://deb.debian.org/debian sid main contrib
deb-src https://deb.debian.org/debian sid main contrib
这被解释为
- 下载https://deb.debian.org/debian/dists/sid/Release。这被称为
ReleaseFile
。 - 查找以下命名的条目。每个都称为
Listing
main/binary-amd64/Packages
contrib/binary-amd64/Packages
main/source/Sources
contrib/source/Sources
- 下载它们全部。
这个结果(忽略验证和压缩)现在是一个块列表。
每个块包含多个字段。
每组字段可能描述了一个软件包,无论是源软件包还是二进制软件包。
依赖关系
~24–36MB
~635K SLoC