如果makepkg
直接使用它,将会对您的系统造成一定的污染。的base-devel
必须安装软件包组。这样,默认情况下,将保留仅生成软件包所需的依赖关系,而无需使用它。可以更改此默认行为,但这涉及安装和卸载软件包以及污染/var/log/pacman.log
。
请参阅本文以了解和一般使用AUR,包括获取AUR PKGBUILD
。makepkg
如果您选择编译包的方法,则此文档仅显示特定于的步骤。
使用Makepkg进行编译
如果base-devel
尚未安装软件包组,则需要安装它。如果您没有makepkg
安装,则将假定它已经安装,并且如果其中的软件包是必需的但尚未安装,则它只会失败而不是为您安装。 makepkg
本身是pacman
软件包的一部分,已经安装。
# pacman -S base-devel
您需要makepkg
在的目录中运行PKGBUILD
,该目录由创建git clone
。默认情况下,它将下载实际的源代码,编译该程序包并将其打包。
的选项很多makepkg
,包括以下常用选项:
-s, --syncdeps
:自动安装构建和使用软件包所需的缺少依赖项。- 请注意,如果
PKGBUILD
依赖于AUR软件包,则需要先安装它们,或者在您自己的本地存储库中提供它们,以便它可以找到它们。
- 请注意,如果
-r, --rmdeps
:如果构建成功,则自动卸载不再需要的依赖项,包括以下内容:- 需要构建但不使用软件包的软件包。
- 如果不带
--install
选件使用,则是使用该包装所必需的。
-i, --install
:如果构建成功,则自动安装/升级软件包。-c, --clean
:自动删除临时构建文件,通常仅在调试出问题的构建时才需要。
要自动安装/升级软件包,请保留使用软件包的依赖关系,并删除仅在构建期间需要的依赖关系,请运行:
# makepkg -sri
或者,您可以选择不自动安装它,并保留所有依赖项的安装,因此,如果有一天打包升级包,则它们已经安装:
# makepkg -s
然后,您可以按照此处的说明使用本地存储库,也可以直接安装文件:
# pacman -U <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz
包装更快
默认情况下,makepkg
将整个软件包合并为存档格式;.tar.xz
使用单个线程进行xz
压缩来制作文件。
在多CPU系统上,可以xz
通过编辑允许使用多个线程/etc/makepkg.conf
,并更改以下行:
COMPRESSXZ=(xz -c -z -)
您可以允许具有虚拟核心的线程数:
COMPRESSXZ=(xz -c -z - --threads=0)
为了允许使用多个虚拟核心,但又不是全部虚拟核心,以减少对整体系统性能的影响,请添加一个特定的数字,例如:
COMPRESSXZ=(xz -c -z - --threads=21)
注意: 指定的线程数多于所拥有的虚拟核心数,将会降低性能。
如果您不介意打包文件较大(可能很大),请通过编辑禁用压缩/etc/makepkg.conf
,然后更改以下行:
PKGEXT='.pkg.tar.xz'
它应如下所示:
PKGEXT='.pkg.tar'
跳过验证PGP签名
我们推荐正确验证,并添加任何signaturesused PGP,如解释在这里一节“PGP签名错误”。
但是,如果makepkg
直接运行,则可以为其--skippgpcheck
选择跳过验证PGP签名的选项。
- Linux 查看磁盘空间
- Centos7 hostnamectl 设置主机名
- 在Debian 8上安装4.19.x内核
- 在 CentOS 8 上安装和配置Redis
- 在Ubuntu 16.04上备份,还原或传输MySQL / MariaDB数据库
- chattr 解决项目.user.ini权限删除不掉
- 在Linux系统上快速创建大文件
- 在CentOS 6上使用WonderShaper限制流量
- [ Linux VPS ] Debian/Ubuntu/CentOS 网络安装/网络重装/纯净安装 一键脚本
- Linux查看端口占用情况,并强制释放占用的端口
- 在Arch Linux上构建软件包(包括AUR)
- 在Arch Linux上使用Devtools