广告位
在Arch Linux上使用Makepkg
作者: 分类:Linux浏览(7,500)2019-11-13

如果makepkg直接使用它,将会对您的系统造成一定的污染。的base-devel必须安装软件包组。这样,默认情况下,将保留仅生成软件包所需的依赖关系,而无需使用它。可以更改此默认行为,但这涉及安装和卸载软件包以及污染/var/log/pacman.log

请参阅本文以了解和一般使用AUR,包括获取AUR PKGBUILDmakepkg如果您选择编译包的方法,则此文档仅显示特定于的步骤。

使用进行编译

如果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压缩来制作文件。

在多CP​​U系统上,可以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签名的选项。

图片压缩在线工具 tools online