Arch Linux 采用 ports 的构建系統,使用 PKGBUILD 文件建立描述信息,然后用 makepkg 命令搜索当前目录下的 PKGBUILD 文件,并且通过该文件中配置的规则下载所需要的资源,进行完整性检查,然后通过编写的打包规则编译成可执行的二进制程序包

详细打包流程建议配合 Arch wiki 上的打包教学PKGBUILD 规范一起食用

准备工作

首先你需要一个已经安装base-devel 组件包的 Arch Linux 系统,其中包含了打包必备的 makemakepkg 工具

sudo pacman -S base-devel #安装 bash-devel

注册一个 AUR 帐号,并且在本地系统创建一个 AUR 仓库使用的 SSH 公钥,将其添加到 AUR 网页版的个人资料中

创建&編輯 ~/.ssh/config 文件,写入如下配置内容

Host aur.archlinux.org
  IdentityFile ~/.ssh/teaper #teaper 是我的 AUR 用户名,你改成自己的
  User teaper #你的用户名

这个配置就是告诉 git,如果是提交到 aur.archlinux.org 的仓库自动使用 teaper 这个用户的公钥进行验证

ssh-keygen -f ~/.ssh/teaper #为 teaper 生成公钥文件,同上改成你的用户名
cat ~/.ssh/teaper.pub #查看公钥信息,复制到 AUR 网页版个人资料中

如果需要更好的管理 AUR 软件包,只是有 pacman 是不够的,还需要 yaourt 或者更为优秀的 yay ,它可以帮助安装来自 AUR 中的软件包,以确定自己打包的程序没有问题

最后就是下载你需要打包的软件源码 ,针对不同语言编写的源代码进行编译,记录下所有依赖关系

./configure
make
make install

如果你是打包来自其他 Linux 发行版的 *.deb 这三步也不是必要的,你可以直接从项目的 README.md 文件中得到相关的依赖关系

如果是要打包已经在 Arch 上安装好的程序,可以直接使用 pactree 得到程序的依赖关系

仓库说明

AUR 仓库属于 Arch Linux 的社区仓库,不受 Arch Linux 的官方支持,也就是说 AUR 的软件无法使用 pacman 来进行安装,如果你希望你的社区仓库上架到官方仓库中,可以通过发邮件给 Arch 官方的并且通过官方打包人员的检测,或者等官方打包人员自行发现,上架官方仓库则意味着该仓库将得到持续的支持和更新