makepkg-optimize
makepkg-optimizeAUR 是一系列补充 tidy、buildenv 和 executable 脚本的集合,用于 pacman,它为 build()
和 package()
阶段的几种优化提供了宏。
安装
安装 makepkg-optimizeAUR,并安装后端以使其可用于需要优化的功能:openmp、upx、optipng、svgo 和 polly。
配置
makepkg-optimizeAUR 从您当前的 makepkg.conf(5) 配置生成一个冗余的配置文件 /etc/makepkg-optimize.conf
。
此文件列出了补充 编译标志、构建环境 选项、全局软件包选项、软件包输出 选项和 压缩默认值,所有这些默认情况下都是禁用的。
构建优化包
$ makepkg -c --config /etc/makepkg-optimize.conf
$PROFDEST/pkgbase.gen
中启动配置文件生成;第二阶段将它们移动到 $PROFDEST/pkgbase.used
并应用它们。在干净的 chroot 环境中构建优化包
或者,makepkg-optimize
可以用于在 chroot 中构建优化的软件包。
Chroot 设置
在设置 chroot 后,还需要一些额外的步骤。
安装 makepkg-optimize 和后端
首先,为优化宏安装一些后端到基本 chroot 中
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly
然后下载并构建 makepkg-optimizeAUR 和 svgo。
要将它们安装到基本 chroot 中,请将其软件包文件复制到其中并安装它们,例如
# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/ $ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
使用 chroot
构建软件包
首先,编辑 $CHROOT/root/etc/makepkg-optimize.conf
并选择您偏好的优化。
在构建时,将配置文件传递给 makepkg
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
使用 PGO 构建
BUILDENV
的 pgo
选项启用配置文件的生成或应用,具体取决于这是启用此标志的软件包的第一次构建还是第二次构建。干净的 chroot 构建使情况变得复杂,因为软件在 chroot 之外运行以生成配置文件,但稍后重新编译时需要从 chroot 内部应用配置文件。解决方案是用绑定挂载的文件夹桥接三个文件系统。
创建 PGO 缓存
创建并绑定一个文件夹来存储 配置文件
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo # mount -o bind {,"$CHROOT"/root}/mnt/pgo # mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
#PGODEST /full/path/to/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0 /mnt/pgo/ /full/path/to/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0
编辑 $CHROOT/root/etc/makepkg-optimize.conf
并设置 PROFDEST=/mnt/pgo
。
分析程序
构建,然后安装软件包并测试运行其可执行文件。
exit()
时生成。持久守护进程,例如 systemd,可能需要重启才能生成配置文件。在充分利用该软件后,关闭它,然后重新构建并重新安装其软件包。