尝试写了个翻译软件打包到AUR上,记录一下过程。
什么是AUR
AUR的全称是Arch User Repository,用户主导,每个注册用户可以上传自己打包的软件,供别的用户下载,官方会定期从中挑选得票数比较高的软件包进入community仓库。进入community仓库即意味着以后可以通过pacman直接安装了。
注册aur帐号
要打包软件到AUR,首先需要一个AUR帐号。可以去AUR的网站去注册,填好用户名,邮箱,密码等信息即可,另外也要上传自己的ssh公钥。生成ssh密钥可以使用ssh-keygen
命令,推荐直接用aur来命名,以方便区分多个密钥。生成好后也要在.ssh
目录配置一下config:
1 | Host aur.archlinux.org |
然后将公钥粘贴到注册界面中对应栏即可。
创建仓库
创建好aur帐号后,接下来就是创建自己对应的软件包仓库:
git clone git+ssh://[email protected]/[package_name]
通过上面命令可以新建一个仓库。
制作软件包
打包软件包其实就是编写PKGBUILD
文件,这个文件在/usr/share/pacman/
目录下有模板PKGBUILD.proto
,复制一份到新建的软件仓库中。然后修改对应行。
1 | Maintainer: Your Name <[email protected]> |
按照上述要求填写好对应参数。
在安装时,其实会通过makepkg
先进行打包,将软件包打包成.zst
包,然后再用pacman -U .zst
进行安装,这里要注意,在PKGBUILD
的编写中需要熟练使用pkgdir
变量,makepkg
会将该文件夹当成系统根目录,比如:
1 | package() { |
就是将build目录下的软件包移动到${pkgdir}/opt/
中,那么在真正安装时,pacman会将软件包安装到系统根目录的/opt/
文件夹中,这样做的好处是避免了打包时需要root环境。这样在卸载时,才能卸载干净,要注意package()
函数只是用来打包的,而不是用来安装的。
生成.SRCINFO
编写好PKGBUILD
后,执行updpkgsums
更新哈希值,然后通过makepkg --printsrcinfo > .SRCINFO
来生成.SRCINFO
文件。
.SRCINFO
用一个简单直接的格式记录软件包的元数据。AUR的网站后台或AUR工具可以不用解析PKGBUILD
就获得需要的信息。里面的内容相当于将PKGBUILD里的内容提取了一部分。所以可以看出来PKGBUILD
文件是打包过程中最核心的文件。
上传软件包
有了PKGBUILD
和.SRCINFO
后,先在本地使用测试是否能够正常安装:
1 | makepkg |
如果没有问题,就可以通过git上传到AUR了,注意上传时PKGBUILD
和.SRCINFO
文件是必传的,软件包则不需要上传。至此,就完成了打包软件包到AUR的过程。
- 本文标题:将软件打包到AUR
- 本文作者:Kale
- 创建时间:2022-06-18 18:03:29
- 本文链接:https://kalew515.com/2022/06/18/将软件打包到AUR/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!