APKBUILD
Maintainer 声明
# Maintainer 需要放在 # Contributor 后。
以便在简单的更改(如只修改 pkgver 或 pkgrel) 时,能够在默认的 diff 3 行信息中看到 Maintainer 信息。
license
该标签反映上游项目的许可证,检查 COPYING、LICENSE 或源码文件的许可证标头。 开源项目的许可证应采用 SPDX License List1 或 SPDX License Exceptions2 中规定的标准标识符。
部分许可证要求在所有副本中包含版权声明、许可声明和源代码,因此需要在 package() 阶段同样 install 这些文件。
设置 subpackages="$pkgname-doc" 会自动检出相关许可文件到 -doc 子包,减小主包体积。
source
包含多个部分:
- 远程拉取的源码归档包
- 本地 patch 补丁
- 本地 openrc 配置文件(initd & confd)
但不包括 install-script
cache
远端文件会先调用 curl 或 wget3 缓存到本地 /var/cache/distfiles4
如果缓存冲突或者 rename 操作失误可以随时来此删除
环境变量参考 cURL 文档:Proxy environment variables
与 Arch 不同,如果是以打包压缩后缀 tar.gz 等结尾,后续构建会自动解压到 srcdir。
rename
远端文件以文件名为缓存,因此应避免冲突,遵守 $pkgname-$pkgver.xxx 的命名规则。
如有需要,使用重命名语法 <name>::<remote-link>:
$pkgname-$pkgver.tar.gz::https://github.com/software/software/archive/v$pkgver.tar.gz
可使用 wget --spider -S http://example.com/file.zip 查看文件名是否满足要求。
remote-link
GitHub 项目的源码归档文件下载链接参考文档5,常用 tag 和 commit
https://github.com/<user>/<repo>/archive/<commit-hash>.tar.gz
https://github.com/qaqland/display-test/archive/9e3a201a102e3e08447b75cfa0d402fac16bd496.tar.gz
https://github.com/qaqland/display-test/archive/refs/tags/v0.0.2.tar.gz
https://github.com/<user>/<repo>/archive/refs/tags/<tag-name>.tar.gz
Alpine Linux 官方的缓存可以在这里查看 https://distfiles.alpinelinux.org/distfiles/
builddir
指向 source 解压之后的文件夹(后续构建的工作目录),一般有:
$srcdir/$pkgname-$pkgver(由于是默认值 apkbuild-lint 会提示您删掉)$srcdir/v$pkgver(某些 GitHub 自动生成的 release)
可以首先使用默认值观察是否成功构建,否则前往 $srcdir 观察解压后的目录