UP | HOME

Ebuild(1)

目录

NAME

ebuild - Prortgae 系统的底层接口

SYNOPSIS

ebuild file command [command]…

DESCRIPTION

ebuild 程序时 Prtage 系统的直接接口。它允许 ebuild 直接操作特定自命令和命令组,以在特定的 build 的上下文和函数中执行。ebuild 脚本接受一个或多个命令作为参数,ebuild 程序解析 ebuild 脚本并执行这些命令。有获取源代码、解压缩源文件、安装 object 文件到临时的"image"目录,将 image 目录 merge 到本地文件系统,从 image 目录创建 bzip 压缩包等命令。

FILE

必须时有效的 build 脚本。更多信息请阅读 ebuild(5)。

COMMANDS

默认,portage 将安装实际指定的顺序执行所有函数,除了在之前的 ebuild 调用中已经被执行的函数。例如,发出 compile 将会将会触发并运行在它之前的函数(像 setup 和 unpack),除非它们在之前的 build 调用已运行过。如果你想确保它们都运行,你需要先使用 clean 命令。如果你想仅运行指定的命令,那么你需要在 FEATURES 环境变量中使用 auto 选项。更多信息请见 make.conf(5)。

  • help

    显示 man page 和许多软件包特定信息的精简内容。

  • setup

    运行所有软件包特定的 setup 操作和外部系统检查。

  • clean

    清理 portage 为特定 ebuild 文件创建的临时构建目录。临时目录通常包含解压缩的源文件以及可能的"install image"(所有将会被 merge 到本地文件系统或存储在软件包中的文件)。该构建目录的位置被 PORTAGE_TMPDIR 变量设置。关于此变量内容的更多信息,运行 emerge –info 或覆盖该变量,请见 make.conf(5)。

    注意:Portage 在软件包被成功 merge 之后几乎清理所有东西,除非在 FEATURES 中包含了 noclean 。添加 noclean 到 FEATURES 中将会造成大量文件残留并迅速消耗大量的空间。不建议开启此选项,除非你用于源文件 post-merge(unless you have use for the sources post-merge)。可选的是,你可以用 rm -rf 手动清理这些文件

  • fetch

    检查所有在 SRC_URI 中指定的源文件在 DISTDIR(更多信息见 make.conf(5))可用并且拥有有效的 checksum。如果源文件不可用,则通过在 SRC_URI 中的指定位置下载。如果为特定文件列出了多个下载位置,portage 将会 ping 每个位置查看哪一个位置更近。(目前可能不是真的)在 GENTOO_MIRRORS 中定义的 Gentoo Linux 镜像总是第一个被考虑。如果因为某些原因当前或刚下再的源文件的 checksum 与在 files/digest-[package]-[version-rev] 中的记录不匹配,一个警告将会被打印并且 ebuild 用错误代码 1 退出。

  • digest

    现在和 manifest 命令一致

  • manifest

    更新该软件包的 manifest 文件。它为在与 ebuild 同一目录的和其子目录的递归内容中找到的所有文件创建 checksum。它还为每个 ebuild 中的 SRC_URI 列出的所有文件创建 checksum。有关此命令行为的更多信息,请见 make.conf(5)中 FEATURES 变量的 assume-digests 值的文档。如果你想阻止 digest 被 assume(?),请见–force 选项。

  • unpack

    通过运行在 ebuild 文件中的 src_unpack()函数,提取源文件到构建目录(BUILD_PREFIX)中的子目录中。如果没有特别指定 src_unpack(),一个默认的 src_unpack()函数将会被用来提取在 SRC_URI 中指定的所有文件。源文件通常被提取到 ${BUILD_PREFIX}/[package]-[version-rev]/work 。可以使用${WORKDIR}变量来引用此特定目录。

    如果你正在创建一个 ebuild,你最好确保 S(source directory)变量在 ebuild 最上面被定义,它指向包含你提取的源文件的目录。该目录默认被定义为=\({WORKDIR}/\)[P]=,所以它不是经常被需要定义。src_unpack()函数还负责为源文件进行适当的 patch,这样它们就准备好编译了。

  • prepare

    通过在 ebuild 文件中运行指定的。该函数从 EPAI 2 开始支持

  • configure

    通过运行在 ebuild 文件中指定的。该函数从 EPAI 2 开始支持

  • compile

    通过运行在 ebuild 文件中指定的。该函数从 EPAI 2 开始支持

  • test

    运行软件包特定的测试用例来确认所有东西都被正确的构建。

  • preinst

    运行软件包需要在被安装到实时文件系统之前应该做的特定操作。

  • install

    通过运行/[package]-[version-rev]/image=)将会包含所有被 merge 到本地文件系统或包含到二进制软件包中的所有文件。

  • instprep

    在临时安装目录中执行附加的 post-install/pre-merge 准备工作。倾向于在构建二进制软件包之后,但是在执行 preinst 之前调用。

  • postinst

    运行软件包特定需要在软件包被安装到本地文件系统之后执行的操作。通常帮助信息在这里显示。

  • qmerge

    该函数将安装目录中的所有文件安装到实时文件系统。工作流程如下:首先,运行 pkg_preinst()(如果指定了)。然后文件被 merge 到实时文件系统并且安装文件的 checksum 被记录在 /var/db/pkg/${CATEGORY}/${PN}-${PVR}/CONTENTS 中。在所有的文件被 merge 后,pkg_postinst()函数(如果指定了)将会执行。

  • merge

    通常,merge 一个 ebuild,你需要 fetch、unpack、compile、install 和 qmerge。如果你只是简单的对 merge ebuild 感兴趣,你可以使用该命令,它会为你执行所有步骤,如果特定的步骤未完成成功,则会在中途停止。

  • unmerge

    该函数首先执行 pkg_prerm()函数(如果指定了)。然后删除所有实时文件系统中在软件包 content 文件中拥有有效 checksum 和 mtime 的所有文件。任何空目录将会被递归删除。最后,它运行 pkg_postrm()函数(如果指定了)。先 merge 一个新版本的软件包,然后再 unmerge 旧的软件包是安全的。实际上,这是软件包更新的推荐做法。

  • prerm

    运行软件包特定的需要在软件包从文件系统删除之前执行的操作。另外请见 unmerge。

  • postrm

    运行软件包特定的需要在软件包从文件系统删除之后执行的操作。另外请见 unmerge。

  • config

    运行软件包特定的需要在 emerge 程序完成后执行的操作。这通常是设置配置文件或其他类似的用户希望运行的设置。

  • package

    该命令很像 merge 命令,除了在 fetching、unpacking、compiling 和 installing,一个.tbz2 的二进制压缩包将会被创建并储存在 PKGDIR(见 make.conf(5))。

  • rpm

    从临时安装目录构建 RedHat RPM 安装包。目前,ebuild 的依赖信息尚未合并到 RPM 中。

OPTIONS

  • –debug

    使用-x 选项运行 bash,使它向 stdout 输出详细的调试信息。

  • --color < y | n >

    开启或关闭颜色输出。该选项会被 NOCOLOR(见 make.conf(5))覆盖并且也可能用来当 stdout 不是 tty 时强制输出颜色(默认除非 stdout 时 tty,否则禁用颜色)。

  • –force

    当和 digest 或 manifest 命令一起使用时,该选项强制未所有和当前 ebuild 相关的 distfile 重新生成 digest。任何不存在于${DISTDIR}的 distfile 将会自动被拉取。

  • –ignore-defualt-opts

    不使用 EBUILD_DEAFULT_OPTS 环境变量。

  • –ship-manifest

    跳过所有manifest检查。

作者: Petrus.Z

Created: 2021-09-01 Wed 00:38