Archlinux打包软件包步骤
1.介绍
archlinux中的软件包都是通过makepkg来打包的,makepkg工具会读取一个PKGBUILD的脚本,按照脚本里面的规则自动构建软件包,打包完成后会在打包的目录下面生成一个.pkg.tar.zst的文件,这个文件可以直接使用pacman包管理工具安装(pacman -U name.pkg.tar.zst)
2.打包前的准备
首先要准本打包的工具,一般有base-devel这个软件包就足够了,通常makepkg在打包的过程中主要做以下几个步骤:
1.检查软件包的相关依赖是否已经安装
2.从指定的服务器下载软件包对应的源代码
3.解压对应的源代码
4.编译源码,并将其安装在伪root目录下面
5.生成包的元数据(metadata)
6.将伪root环境打包为一个tar文件后用zstd将其压缩
7.将生成的打包好的软件保存至配置好的目录下面
3.PKGBUILD写法
PKGBUILD脚本中一般有以下几个变量和函数
- 变量
1.pkgdesc
软件包的描述信息
2.pkgdir
软件包存储的目录
3.pkgname
软件包的名称
4.pkgver
软件包的版本
5.source
软件的源码
6.arch
软件适用的架构,如果和平台无关可以直接填写any
7.license
软件的许可证
8.depens
软件的依赖
9.srcdir
软件源码的目录
- 函数
1.prepare()
此函数会执行用于预处理源文件执行的命令,例如patch,此函数执行在build之前
2.pkgver()
此函数会抓取并解压源文件,执行完prepare函数后执行此函数
3.build()
此函数第一步先进入源代码的目录下,makepkg会在执行build函数之前更改当前目录为pkgdir目录
1
2
3cd "$pkgdir/$pkgname-$pkgver"
./configure --prefix=/usr
make4.package()
此函数会将编译好的文件安装值伪root环境下面
1
make DESTDIR="$pkgdir/" install