2 个版本

0.0.14 2021 年 1 月 1 日
0.0.11 2021 年 1 月 1 日

#392构建工具

每月 21 次下载
relic 中使用

MIT/Apache

39KB
580 代码行

librelic

license-badge build codecov crates.io Minimum rustc

Arch Linux 打包生态系统的包管理库

用法

需要 rustc >= 1.42

此最小 rustc 要求由 tracing_subscriber 要求驱动。

研究

收集在此项目开发期间进行的所有研究。

参考文献

Arch 构建系统 (ABS)

Arch 构建系统 (ABS) 打包了 Arch Linux 生态系统的所有软件,包括以下工具

  • ABS 仓库树 - 包含软件描述的 Git 仓库集合
  • PKGBUILD - 每个软件包目录中的一个 bash 脚本,描述构建和打包步骤
  • makepkg - 从包含 PKGBUILD 的包目录中构建软件包的命令行工具
  • pacman - 管理 Arch Linux 软件的命令行工具
  • AUR - Arch 用户仓库是一个由社区维护的类似 ABS 的仓库

ABS 仓库树

  • 软件包 - 包含 Arch Linux coreextratesting 软件包仓库的 git 仓库
  • 社区 - 包含 communitymultilib 软件包仓库的 git 仓库

每个软件包都有自己的子目录,包含 repostrunk 目录

  • repos 包含官方 Arch Linux 仓库配置
  • trunk 用于测试最新开发版本,在晋升到 repos 之前

示例

acl
acl/repos
acl/repos/core-x86_64
acl/repos/core-x86_64/PKGBUILD
acl/trunk
acl/trunk/PKGBUILD

asp 软件包

asp 软件包只是 svntogit 仓库的一个薄包装器。

要克隆特定软件包的 git 仓库,请使用

$ asp checkout <pkg-name>

要更新已克隆的仓库,请运行

$ asp update; git pull

构建容器

在干净的 chroot 中构建可以防止软件包中缺少依赖项,并允许与当前系统分离。最好的做法是使用容器来构建。

Pacman

pacman 软件包管理器 结合了简单的二进制包格式和易于使用的构建系统。内部 pacman 使用 libalpm 库与包数据库进行交互。

Arch Linux 软件包管理 (ALPM)

Arch Linux 的软件包管理依赖于 Arch Linux 软件包管理 (ALPM) 库 libalpm 以实现其所有自动化。

ALPM 公共接口

pacmanlibalpm 都是用 C 编写的,并共享相同的 git 仓库alpm.halpm_list.h 构成了所有声明可供前端(即 pacman)使用的结构、数据和函数的总和。 pacman 为库提供了一个外观。所有库内部函数都以 _alpm_ 前缀,而公共函数以 alpm_ 前缀。

alpm 数据库

alpm 钩子

alpm 钩子 提供了根据被修改的软件包和/或文件在事务之前或之后运行脚本的选项。钩子包含一个描述要运行的 操作 部分和一个或多个描述它应该运行的 触发器 部分。

钩子从位于系统钩子目录 /usr/local/share/libalpm/hooks 的文件读取,以及 pacman.conf 中指定的附加自定义目录,默认为 /usr/local/share/etc/pacman.d/hooks。文件名必须具有后缀 .hook。钩子按照其文件名的字母顺序运行。

alpm 接口

alpm 列表

alpm 日志

alpm 杂项

alpm 软件包

alpm 同步

alpm 事务

贡献

欢迎提交拉取请求。但是请理解,它们将纯粹根据更改是否与我对项目的目标/理想相符来评估。

Git钩子

启用Git钩子以实现自动版本增量

cd ~/Projects/relic
git config core.hooksPath .githooks

许可证

本项目许可采用以下其中之一

贡献

除非您明确说明,否则您提交的任何贡献,根据Apache-2.0许可证定义,将被双许可如上所述,不附加任何额外条款或条件。


待办事项

  • 解析PKGBUILD文件
  • 添加与relic直接工作的命令行界面
  • 为libalpm提供ffi绑定或用Rust重写
  • pacman数据库访问
    • 读取 pacman.conf 以定位和加载本地和同步数据库
    • -Q 查询 本地数据库以获取提供的目标
    • -S 同步 在同步数据库中搜索提供的目标
  • 镜像排名
  • ABS交互
    • 下载、构建和打包
    • 安装、更新、删除软件包
  • 添加Rust文档注释

更改日志

依赖关系

~17–28MB
~513K SLoC