Redox OS 项目引入了用 Rust 编写的 pkgar 包管理器

操作系统开发商 氧化还原, 书面 使用 Rust 语言和微内核概念, 已提交 新的包管理器 帕克加。 该项目正在开发一种新的包格式、一个包管理库以及一个用于创建和检索经过加密验证的文件集合的命令行工具包。 pkgar 代码是用 Rust 编写的 分发者 在麻省理工学院的许可下。

pkgar 格式并不假装是通用的,而是根据 Redox OS 操作系统的具体情况进行了优化。 包管理器支持使用数字签名和完整性控制进行源验证。 使用哈希函数计算校验和 blake3。 通过仅操作标头部分,无需实际存储包存档即可访问 pkgar 的验证相关功能。 具体来说,该包由头文件 (.pkgar_head) 和数据文件 (.pkgar_data) 组成。 只需将头文件附加到数据文件(“cat example.pkgar_head example.pkgar_data > example.pkgar”)即可获得正确签名的完整摘要包(.pkgar)。

头文件包含头文件的单独校验和以及数据文件中的参数的结构,以及用于验证包的数字签名。 数据文件包括包中提供的所有文件和目录的顺序列表。 每个数据元素前面都有一个带有元数据的结构,其中包括数据本身的校验和、大小、访问权限、正在安装的文件的相对路径以及下一个数据元素的参数的偏移量。 如果在更新过程中单个文件没有更改并且校验和匹配,则它们将被跳过并且不加载。

您可以通过仅接收头文件来检查源的完整性,并通过仅加载具有该文件参数的结构并确保它们符合头文件中认证的校验和来检查所选数据文件的正确性。 数据本身可以在加载后使用数据前面带有参数的结构中的校验和进行检查。

包本质上是可重复的,这意味着为特定目录创建包将始终产生相同的包。 安装后,系统中仅保存元数据,这足以根据安装的数据重建软件包(元数据中包含软件包的组成、校验和、路径和访问权限)。

pkgar的主要目标:

  • 原子性——只要有可能,更新就会自动应用。
  • 节省流量 - 仅当哈希值更改时才通过网络传输数据(在更新期间,仅下载更改的文件)。
  • 使用高性能、快速的加密算法(blake3 在计算哈希值时支持并行数据处理)。 如果来自存储库的数据先前尚未被缓存,则可以在下载时计算所下载数据的散列。
  • 简约 - 与其他格式不同,pkgar 仅包含提取包所需的元数据。
  • 安装目录的独立性 - 任何用户都可以将软件包安装在任何目录中(用户必须对所选目录具有写权限)。
  • 安全性 - 数据包始终经过加密验证,并且在对包执行实际操作之前执行验证(首先加载标头,如果数字签名正确,则将数据加载到临时目录中,之后将其移动到目标目录)确认)。

来源: opennet.ru

添加评论