我在多个目录中有一堆文件,我想用它们创建一个 APK 包并将其发布到私有存储库中。对于Debian/Ubuntu 上的dpkg-deb
+或 RHEL/Fedora 上的+ ,这样的任务很容易。但对于,我不知道如何继续。apt-ftparchive
rpmbuild
createrepo
abuild
Abuild 似乎要求从上游下载所有源代码,在本地构建,打包到 fakeroot 中,包括各种二进制剥离、基于路径的子打包内容估计和各种其他自动化任务,这些任务确实很棒,但对于我的用例来说完全没有必要。此外,abuild 似乎还要求将 APKBUILD 文件本身存储在 git 存储库中。
我已阅读 Alpine wiki rg.packaging 和 APKBUILD 参考上的文章,并且还浏览了https://git.alpinelinux.org/cgit/abuild/tree/abuild.in,试图弄清楚构建包时到底发生了什么,然后我想出了以下步骤:
# Create mock git repo to satisfy prepare_metafiles when it asks about commit hash
cd /my-build-root
git init
git add APKBUILD
git commit -m "mock repo"
# bindmount the directories into $pkgdir so it looks like they were built locally
mkdir /my-build-root/pkgname/pkg/pkgname
mount --bind /real-location-of-my-files /my-build-root/pkgname/pkg/pkgname
# Run the minimum needed abuild functions
abuild prepare_metafiles create_apks index
这或多或少产生了我所期望的结果,但是这种方法在很多层面上都是错误的,因此必须有更好的方法。
如何从现有文件集创建 APK 包,而无需对源文件进行任何更改(剥离、符号链接修复),最好也不需要 git?