Abuild 和助手
abuild 软件包提供了为 Alpine Linux 创建软件包 所需的脚本。它还实现了构建软件包的功能,以及用于软件包维护的附加命令和选项。对于软件包开发和维护,建议安装 alpine-sdk 元软件包,它除了其他相关工具外,还将安装 abuild 软件包。
apk add alpine-sdk
git 仓库 始终包含脚本、示例文件和 makefile 的最新版本。
设置构建环境
Abuild 需要为系统和用户进行配置。
根据需求编辑文件 /etc/abuild.conf。大多数默认设置可以保持不变,除非您正在为自定义平台开发,在这种情况下,文件中的注释应该会指导您。需要编辑的一个字段是 PACKAGER,这样您就可以为自己创建的软件包获得功劳(或指责)。
为了使用 abuild
命令,执行 abuild
的用户必须是 abuild
组的成员
# addgroup <您的用户名> abuild
对于 abuild,需要公钥/私钥 rsa 密钥对。abuild 软件包中的 abuild-keygen
命令生成并配置安全密钥。
$ doas abuild-keygen -a -i
abuild-keygen 选项
- -a 在 abuild.conf 中设置 PACKAGER_PRIVKEY=<生成的密钥>
- -i 使用 sudo 将公钥安装到 /etc/apk/keys 中
- -h 显示此帮助信息
- -n 非交互式。使用默认值
- -q 静默模式
构建软件包
基本用法
如果您只想从 APKBUILD 文件构建软件包,只需要两个命令。这两个命令都在当前目录中的 APKBUILD 文件上操作,因此您应该在运行它们之前 cd
进入目录。
abuild checksum
:更新源文件的校验和。abuild -r
:构建软件包。
手册页(可通过 man abuild
获得)描述了 abuild
的所有选项和命令。
在 chroot 中构建
安装软件包 abuild-rootbld
apk add abuild-rootbld
现在,您可以使用以下命令在基于 bubblewrap 的非特权沙箱中从源代码构建软件包
abuild rootbld
rootbld
假定您的 APKBUILD 文件位于像 aports 这样的目录结构中,或者您需要将环境变量 APORTSDIR
设置为当前目录。
如果构建过程需要网络访问,则必须在 APKBUILD 中设置 net 选项。
请注意,在 docker 容器内部使用 rootbld
需要 额外的配置。
提升软件包版本
工具 abump
是一个实用程序,用于在软件包更新到较新的上游版本时提升 APKBUILD 文件中的 pkgver。abump
将更新软件包的 pkgver
,重建它,并使用结果更改创建一个新的提交。
手册页(可通过 man abump
获得)描述了 abump
的所有选项。
更新软件包发布版本
如果您想提升或重置 APKBUILD 的 pkgrel 值,或者测试您的 APKBUILD 文件,apkgrel可以帮助您。
apkgrel -a|-h|-s NUM|-t|-z [-f] FILE...
apkgrel 选项
- -a 将当前 pkgrel 加 1
- -f 强制,即使给定文件格式不正确
- -h 显示此帮助信息
- -s 将 pkgrel 设置为 NUM
- -t 仅验证文件格式是否正确
- -z 将 pkgrel 设置为 0
生成新的 APKBUILD
newapkbuild
newapkbuild
工具作为 abuild 软件包的一部分安装,可以生成一个新的 APKBUILD 模板作为起点。手册页(可通过 man newapkbuild
获得)描述了 newapkbuild
的所有选项。
如果您不确定您的软件包属于哪个仓库,您可以安全地使用 testing。在您的 aports/testing 目录中构建软件包不是强制性的,但这样软件包已经位于正确的位置。
以下命令将使用给定的软件包名称创建一个目录,将示例/模板 APKBUILD 文件放置在该目录中,并在提供变量时填充一些变量。
newapkbuild 软件包名称
如果您正在创建需要 initd 脚本的守护程序软件包,您可以添加 -c 选项,如下所示
newapkbuild -c 软件包名称
这将复制示例 initd 和 confd 文件到构建目录。第三个文件 sample.install 文件也将被复制(我们稍后将讨论这一点)。
apkbuild-cpan
Comprehensive Perl Archive Network (CPAN) 提供了大量的 perl 软件和文档。apkbuild-cpan帮助创建来自 CPAN 的 perl 模块的 APKBUILD。
apkbuild-cpan [create <Module::Name> | check | recreate | update | upgrade]
此命令由 apkbuild-cpan 软件包提供。
apkbuild-pypi
Python 软件包索引 (PyPi) 是 Python 编程语言的软件和库的仓库。apkbuild-pypi
命令帮助创建托管在 PyPI 上的 python 软件包的 APKBUILD。
apkbuild-pypi [create <package> | check | recreate | update | upgrade
此命令由 apkbuild-pypi 软件包提供。
签名软件包和索引
abuild-sign
abuild-sign用于签名索引。
abuild-sign [-hq] [-k PRIVKEY] [-p PUBKEY] INDEXFILE...
abuild-sign 选项
- -h 显示此帮助信息
- -k 用于签名的私钥
- -p 公钥的名称。apk add 将查找 /etc/apk/keys/PUBKEY
abuild-tar
apkbuild-tar [--hash[=<algorithm>]] [--cut]
apkbuild-tar 选项
- --hash[=sha1|md5] 从 stdin 读取 tar 存档,预先计算常规条目的哈希值,并在 stdout 上输出 tar 存档
- --cut 删除文件结尾 tar 记录
buildrepo
buildrepo
构建整个软件包仓库。
请参阅 手册页 以获得完整描述。