记一次pacman的makepkg-本地二进制打包

创建PKGBUILD文件

1
2
3
4
5
6
7
8
pkgname=sendfile
pkgver=1.1
pkgrel=1
arch=('x86_64')
licence=('MIT')
package(){
echo 'helloworld'
}

pkgrel相当于打包第几次?package是一个函数,打包时会运行这个
运行 makepkg

1
makepkg

目录会生成src,pkg目录,将我们的二进制文件,放在src里面去,我这里的二进制文件名字叫sendfile。打包会进入fakeroot环境,pkg目录就是root目录。因此,我们将src里面的文件移动到pkg目录就行了,移动的代码写在package函数里面。${pkgdir}就可以访问pkg目录,同理 $srcdir就可以访问src目录。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
pkgname=sendfile
pkgver=1.1
pkgrel=1
arch=('x86_64')
licence=('MIT')
package(){
cd $srcdir
if [ ! -d "${pkgdir}/usr/bin" ]; then
mkdir -p "${pkgdir}/usr/bin"
fi
install "sendfile" "${pkgdir}/usr/bin"
echo "finish"
}

最后makepkg完成打包。最后会在当前目录生成一个zst文件,就是pacman的安装文件,使用```

1
sudo pacman -U xxx.zst

安装

打包之后,包文件里面会有一个BUILDINFO文件,里面包含pacman -Q所有输出,如果在乎隐私。可以这样重写write_buildinfo函数

1
2
3
4
nano ~/.config/pacman/makepkg.conf
function write_buildinfo(){
msg2 "Don't write .BUILDINFO"
}

记一次pacman的makepkg-本地二进制打包
http://tang895.github.io/2023/04/12/记一次pacman的makepkg-本地二进制打包/
作者
TangYijun
发布于
2023年4月12日
许可协议