-
Notifications
You must be signed in to change notification settings - Fork 298
我们使用基于 Arch Linux 官方的打包工具 'devtools' 的 'devtools-cn' 来实现自动化的 chroot 打包。
在服务器上打包流程简要说明如下:
-
登录编译服务器 (build.archlinuxcn.org),克隆本仓库到自己的主目录下。可以使用 tmux/byobu 或者 mosh,以避免网络突然中断造成问题。使用 tmux 时,如果网络中断,您可以再次登录并使用
tmux attach
来继续工作。 -
在自己维护的包的打包目录下,执行
extra-i686-build
来打包 32 位软件包,extra-x86_64-build
来打包 64 位软件包,multilib-build
来打包 lib32 的软件包。如果是 any 的包,建议使用extra-x86_64-build
命令来打包。如果包依赖位于 archlinuxcn 里的软件包,可将命令中的extra
替换为archlinuxcn
。但请注意,archlinuxcn 的包更新会有延迟,因此如果一个包依赖另一个刚打好的包,那么可能会出问题。你也可以给打包命令传递-- -I a.pkg.tar.xz -I b.pkg.tar.xz
这样的参数来指定预先安装本地的包文件。 -
打包完成后,打好的包文件在 PKGBUILD 所在目录下,直接将包文件移动到
/repo 目录(软链接到 /home/repo; 如果不存在可以自行建立)下即可,无需分架构目录。该包文件被推送到社区仓库后将自动删除。签名文件也应当放到这个目录。注意如果PKGBUILD有更新,需要先將本地的git倉庫push到github上,再將檔案移動至/repo。 -
以上 archlinuxcn 打包脚本支持自动处理官方仓库 (不含 testing ) archlinuxcn 中所包含的包的依赖. 如果维护的包依赖其他不在这些仓库中的包,可以首先将依赖的包(例如64位依赖包名称为 depends-package-0.1.1-1.x86_64.pkg.tar.xz)下载到本地,然后执行
extra-x86_64-build -- -I depends-package-0.1.1-1.x86_64.pkg.tar.xz
来打包。相应地 32 位使用类似命令选项打包。如果有对其它仓库中的包或 testing/staging 中包的需求, 欢迎对 devtools-cn 提交 pull request.
如果是在本地打包,请将包文件上传至编译服务器自己主目录下的临时目录 ,上传完毕后移动到 /home/repo
目录,以避免网络中断或者其它原因造成不完整的包被添加到源中。工作方式同第3条。
注意申请当维护者最后提到的一点:请务必将所打包的 PKGBUILD 加入 git 仓库中(并 push 上来),否则该包会消失。
在 Push 之前,可以在本地仓库配置一下 pre-commit,用于在提交前检查问题。
$ ln -s ../../pre-commit .git/hooks
# pacman -S python-yaml python-jsonschema pyalpm
一般而言,split package 不需要做额外处理,只需要将其 base 包放入仓库即可。
注意,上面假设该包的 PKGBUILD
中对各个包拥有相应的 package_xxx
函数。如果不是这种情况,则需要手动在(新建)package.list
文件中列出各个包(参考firefox-nightly)。
lilac.yaml
文件写法参照:
https://archlinuxcn.github.io/lilac/
编译机上可以执行 sudo cleanup-package-files <pkgname>
列出将要删除的文件,再通过添加 --real
参数执行删除。