名字
makepkg - 包构建实用程序
概要
makepkg [选项] [ENVVAR=值] [ENVVAR+=值] ...
描述
makepkg 是一个自动构建包的脚本。 使用该脚本的要求是具有构建能力的 *nix 平台和您希望构建的每个包的自定义构建脚本(称为 PKGBUILD)。 有关创建自己的构建脚本的详细信息,请参阅 PKGBUILD(5)。
基于脚本的构建的优点是工作只完成一次。 一旦你有了一个包的构建脚本,makepkg 将完成剩下的工作:下载和验证源文件,检查依赖关系,配置构建时设置,构建包,将包安装到临时根目录,进行自定义,生成元 信息,并将整个内容打包以供 pacman 使用。
makepkg 默认使用您当前的语言环境,并且在构建软件包时不会取消设置。 如果您希望在寻求帮助或其他目的时与其他人共享您的构建输出,您可能希望运行“LC_ALL=C makepkg”,这样您的日志和输出就不会被本地化。
选项
-A, --ignorearch
忽略构建脚本中缺失或不完整的 arch 字段。 当 PKGBUILD 可能稍微过时并且没有使用 arch=('yourarch') 字段更新时,这是为了从源代码重建包。
-r, --rmdeps
成功构建后,使用 -s 删除依赖项自动解析和安装期间 makepkg 安装的所有依赖项。
-c, --clean
成功构建后清理剩余的工作文件和目录。
-i, --install
使用 pacman(8) 成功构建后安装或升级软件包。
-s, --syncdeps
使用 pacman 安装缺少的依赖项。 当未找到构建时或运行时依赖项时,pacman 将尝试解决它们。 如果成功,将下载并安装缺少的软件包。
-C, --cleanbuild
在构建包之前删除 $srcdir。
--config <file>
使用备用配置文件而不是 /etc/makepkg.conf 默认值。
-d, --nodeps
不执行任何依赖性检查。 如果未安装所有依赖项,此选项很可能会中断构建过程。
-e, --noextract
不提取源文件或运行 prepare() 函数(如果存在); 使用 $srcdir/ 目录中已经存在的任何源。 如果您想进入 $srcdir/ 并手动修补或调整代码,然后从结果中制作一个包,这很方便。 请记住,创建补丁可能是允许其他人使用您的 PKGBUILD 的更好解决方案。
--verifysource
对于 PKGBUILD 的源数组中的每个源文件,如果需要,请下载文件并执行完整性检查。 不执行提取或构建。 除非使用 --syncdeps,否则不会处理 PKGBUILD 中指定的依赖项。 对于执行后续的离线构建很有用。
-f, --force
如果 PKGDEST(在 makepkg.conf(5) 中设置)目录中已经存在构建的包,makepkg 将不会构建包,该目录可能默认为当前目录。 这允许覆盖构建的包。
-g, --geninteg
对于 PKGBUILD 的源数组中的每个源文件,如果需要,下载文件并生成完整性检查。 生成的完整性检查由 PKGBUILD 中存在的检查确定,如果不存在则回退到 makepkg.conf(5) 中的 INTEGRITY_CHECK 数组的值 此输出可以重定向到您的 PKGBUILD 以使用“makepkg -g”进行源验证 >> PKGBUILD”。
--skipinteg
不要对源文件执行任何完整性检查(校验和和 PGP)。
--skipchecksums
不要验证源文件的校验和。
--skippgpcheck
不要验证源文件的 PGP 签名。
-h, --help
输出语法和命令行选项。
--holdver
使用 VCS 源 (PKGBUILD(5)) 时,任何当前签出的源都不会更新到最新版本。
-L, --log
启用日志记录。 这将使用 tee 程序将每个 PKGBUILD 函数的输出发送到控制台和构建目录中名为 pkgbase-pkgver-pkgrel-arch-<function>.log 的文本文件。 如上所述,日志将被本地化,因此如果与他人共享日志输出,您可能需要相应地设置您的语言环境。
-m, --nocolor
在输出消息中禁用颜色。
-o, --nobuild
下载并解压文件,运行 prepare() 函数,但不要构建它们。 如果您希望在构建之前调整 $srcdir/ 中的文件,则使用 --noextract 选项很有用。
-p <buildscript>
阅读包脚本 buildscript 而不是 PKGBUILD 默认; 参见 PKGBUILD(5)。 buildscript 必须位于调用 makepkg 的目录中。
-R, --repackage
重新打包包的内容而不重建包。 例如,如果您忘记了 PKGBUILD 中的依赖项或安装文件并且构建本身不会更改,这将非常有用。
-S, --source
不要实际构建包,而是构建一个仅包含源代码的 tarball,其中不包含可通过下载 URL 获取的源代码。 这对于将单个 tarball 传递给另一个程序(例如 chroot、远程构建器或 tarball 上传)很有用。 因为完整性检查已经过验证,所以包的所有源文件都需要存在或可下载。
-V, --version
显示版本信息。
--allsource
不要实际构建包,而是构建一个包含所有源的纯源 tarball,包括那些通常通过 makepkg 下载的源。 这对于将单个 tarball 传递给另一个程序(例如 chroot 或远程构建器)很有用。 在分发二进制包时,它也将满足 GPL 的要求。
--check
运行 PKGBUILD 中的 check() 函数,覆盖 makepkg.conf(5) 中的设置。
--noarchive
不要在构建过程结束时创建存档。 这对于测试 package() 函数或者如果你的目标发行版不使用 pacman 很有用。
--nocheck
不要在 PKGBUILD 中运行 check() 函数或处理 checkdepends。
--noprepare
不要在 PKGBUILD 中运行 prepare() 函数。
--sign
使用 gpg 对生成的包进行签名,覆盖 makepkg.conf(5) 中的设置。
--nosign
不要为构建的包创建签名。
--key <key>
指定签名包时使用的密钥,覆盖 makepkg.conf(5) 中的 GPGKEY 设置。 如果在任一位置均未指定,则将使用密钥环中的默认密钥。
--noconfirm
(传递给 pacman)防止 pacman 在继续操作之前等待用户输入。
--needed
(传递给 pacman)告诉 pacman 如果它已经是最新的,则不要重新安装它。 (与 -i / --install 一起使用)。
--asdeps
(传递给 pacman)将软件包安装为非显式安装(与 -i / --install 一起使用)。
--noprogressbar
(传递给 pacman)阻止 pacman 显示进度条; 如果您将 makepkg 输出重定向到文件,这很有用。
--packagelist
列出无需构建即可生成的包文件名。 列出的包文件名包括 PKGDEST 和 PKGEXT。
--printsrcinfo
生成 SRCINFO 文件并将其打印到标准输出。
附加的功能
makepkg 支持构建软件包的开发版本,而无需手动更新 PKGBUILD 中的 pkgver。 这以前是使用单独的实用程序 versionpkg 完成的。 有关如何设置开发 PKGBUILD 的详细信息,请参阅 PKGBUILD(5)。
再现性
makepkg 旨在与 Reproducible Builds 兼容。 如果设置了 SOURCE_DATE_EPOCH 环境变量,将导出到子进程,源和包文件修改时间和包元数据将根据指定的时间戳统一。
如果未设置 SOURCE_DATE_EPOCH 环境变量,makepkg 将使用自己的开始日期供内部使用,但不会在构建之前统一源文件时间戳。
环境变量
pacman
将用于检查缺少的依赖项以及安装和删除软件包的命令。 此命令必须支持 Pacman 的 -Qq、-Rns、-S、-T 和 -U 操作。 如果变量未设置或为空,makepkg 将回退到“pacman”。
MAKEPKG_CONF="/path/to/file"
使用备用配置文件而不是 /etc/makepkg.conf 默认值。
SRCPKGDEST="/path/to/directory"
将存储结果包的目录。 覆盖 makepkg.conf(5) 中定义的相应值。
SRCDEST="/path/to/directory"
将存储下载源的目录。 覆盖 makepkg.conf(5) 中定义的相应值。
SRCPKGDEST="/path/to/directory"
将存储源包文件的目录。 覆盖中定义的相应值
LOGDEST="/path/to/directory"
将存储生成的日志文件的目录。 覆盖中定义的相应值
PACKAGER="John Doe <john@doe.com>"
用于标识生成包的创建者的字符串。 覆盖中定义的相应值
BUILDDIR="/path/to/directory"
将在其中构建包的目录。 覆盖中定义的相应值
CARCH="(i686|x86_64)"
为特定架构强制构建。 用于交叉编译。 覆盖对应的值在 makepkg.conf(5) 中定义。
PKGEXT=".pkg.tar.gz", SRCEXT=".src.tar.gz"
设置制作编译包或源包时使用的压缩。 覆盖对应的值在 makepkg.conf(5) 中定义。
GNUPGHOME="/path/to/directory"
存储用于签署构建包的 gpg 密钥环的目录。
GPGKEY="keyid"
指定签名包时使用的密钥,覆盖 makepkg.conf(5) 中的 GPGKEY 设置。
SOURCE_DATE_EPOCH="<date>"
用于可重现的构建。
BUILDTOOL="<name>"
用于设置构建环境的工具生态系统的名称。 用于定义规范可重现的构建,例如 使用的 makepkg.conf(5)。
BUILDTOOLVER="<version>"
使用的 $BUILDTOOL 版本。