2 个版本
0.0.14 | 2021 年 1 月 1 日 |
---|---|
0.0.11 | 2021 年 1 月 1 日 |
#392 在 构建工具
每月 21 次下载
在 relic 中使用
39KB
580 代码行
librelic
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
core
、extra
和testing
软件包仓库的 git 仓库 - 社区 - 包含
community
和multilib
软件包仓库的 git 仓库
每个软件包都有自己的子目录,包含 repos
和 trunk
目录
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
以实现其所有自动化。
- libalpm 手册
- pacman 源代码关于 pacman 源代码 README
- Jguer/go-alpm (MIT) 在 Go 中绑定到 libalpm
- derekdreery/alpm (MIT) 在 Rust 中绑定到 libalpm
- pigeonhands/rust-arch (MIT) 在 Rust 中绑定到 libalpm
- pigeonhands/kea (MIT) 在 rust 中的 aur 辅助工具
ALPM 公共接口
pacman
和 libalpm
都是用 C 编写的,并共享相同的 git 仓库。 alpm.h
和 alpm_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
许可证
本项目许可采用以下其中之一
- MIT许可证 LICENSE-MIT 或 http://opensource.org/licenses/MIT
- Apache许可证,版本2.0 LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0
贡献
除非您明确说明,否则您提交的任何贡献,根据Apache-2.0许可证定义,将被双许可如上所述,不附加任何额外条款或条件。
待办事项
- 解析PKGBUILD文件
- 添加与relic直接工作的命令行界面
- 为libalpm提供ffi绑定或用Rust重写
- pacman数据库访问
- 读取
pacman.conf
以定位和加载本地和同步数据库 -Q 查询
本地数据库以获取提供的目标-S 同步
在同步数据库中搜索提供的目标
- 读取
- 镜像排名
- ABS交互
- 下载、构建和打包
- 安装、更新、删除软件包
- 添加Rust文档注释
更改日志
依赖关系
~17–28MB
~513K SLoC