Last updated on 2020年10月24日 at 下午1:30

本文是对页面 Manpage of EBUILD 的翻译,最后更新日期:9.26。


EBUILD

章节:Portage (1)
上次更新:Mar 2013
目录  

名称

ebuild – Portage 系统的底层接口  

摘要

ebuild 文件 命令 [命令] 

描述

Ebuild 程序是 Portage 系统的直接接口。它允许对具有特定子命令 或命令组的 ebuild 采取直接操作,以执行特定 ebuild 的内容(上下文)和函数。 Ebuild 程序接受一个 ebuild 脚本和一个或多个命令作为参数,然后解析 ebuild 脚本并执行指定的命令。 存在用于获取源代码,解压缩源代码,编译源代码,将目标文件安装到临时目录“image”,将映像合并到本地文件系统,从映像创建 bzip 压缩包的命令等。  

文件(命令行参数)

这必须是有效的 ebuild 脚本。有关更多信息,请阅读 ebuild(5)。  

命令

默认情况下,portage 将按实际指定的顺序执行所有函数,但先前 ebuild 调用中已执行的除外。例如,仅仅发出命令 compile 会引发此前的函数同样运行(例如 setupunpack),除非它们已在先前的 ebuild 调用中运行。 如果要确保它们都将运行,则需要首先使用命令 clean。如果只希望运行指定的命令,则应在 FEATURES 环境变量中开启 noauto 选项。有关更多信息,请参见 make.conf(5) 手册页 。

help
显示此手册页的精简形式及许多特定于软件包的信息。
setup
运行所有特定于程序包的设置操作和外部系统检查。
clean
清理 Portage 为此 ebuild 文件创建的临时构建目录。构建目录通常包含解压后源文件,还可能有一个“安装镜像”(所有将被合并到本地文件系统或存储在软件包中的文件)构建目录位置由 PORTAGE_TMPDIR 变量设置。运行 emerge –info 以获取其值;若要覆盖其值,请参见 make.conf(5)。

注意:除非 FEATURES 中含有“noclean”,否则 Portage 将在包成功并入后清理几乎一切。将“noclean”加入 FEATURES 将导致大量文件残留,并快速消耗大量空间。除非您在合并后还需要使用这些源文件,否则不建议打开这个功能。也可以用 rm -rf /var/tmp/portage 手动清理这些文件。

fetch
检查 SRC_URI 中指定的所有源代码是否已存在于 DISTDIR(参见 make.conf(5))并具有有效的校验和。如果源代码不存在,Portage 将试图从 SRC_URL 指定的位置下载。如果一个文件有多个下载位置,Portage 将 ping 每个位置,看哪个位置更接近。(现状可能并非如此)GENTOO_MIRRORS 所定义的 Gentoo Linux 镜像总是被优先考虑。若出于某些原因,已有或刚下载的源文件的校验和与 files/digest-[package]-[version-rev] 中记录的不一致,则会输出警告,然后 ebuild 以错误代码 1 退出。
digest
现在,这等同于 manifest 命令。
manifest
更新软件包的 manifest 文件。这将为在与当前 ebuild 相同的目录中找到的所有文件以及 files 子目录的递归内容创建校验和;它还会为每个 ebuild 的 SRC_URI 中列出的所有文件创建校验和。有关此命令的行为的更多信息,请参见 make.conf(5) 中 FEATURESassume-digests 的文档。如果您想阻止校验被假定正确,请参见 –force 选项。
unpack
通过运行 ebuild 中函数 src_unpack() 解压源文件到构建目录(BUILD_PREFIX)子目录。 如果未指定 src_unpack() 函数,则将使用该函数的默认实现解压 SRC_URL 中指定的所有文件。 源文件通常被解压至 ${BUILD_PREFIX}/[package]-[version-rev]/work。可以使用 ${WORKDIR} 变量来引用此特定目录。

若要创建 ebuild,则需要确保在 ebuild 脚本顶部定义的 S(源文件目录)变量指向其中包含已解压的源文件的目录。默认情况下,此目录被定义为 ${WORKDIR}/{P},因此通常不需要这么做。Src_unpack() 函数还负责为源代码打补丁以便接下来的编译。

prepare
Prepares the extracted sources by running the src_prepare() function specified in the ebuild file. When src_prepare() starts, the current working directory will be set to ${S}. This function is supported beginning with EAPI 2.
configure
Configures the extracted sources by running the src_configure() function specified in the ebuild file. When src_configure() starts, the current working directory will be set to ${S}. This function is supported beginning with EAPI 2.
compile
Compiles the extracted sources by running the src_compile() function specified in the ebuild file. When src_compile() starts, the current working directory will be set to ${S}. When src_compile() completes, the sources should be fully compiled.
test
Runs package-specific test cases to verify that everything was built properly.
preinst
Runs package-specific actions that need to be done before the package is installed into the live filesystem.
install
Installs the package to the temporary install directory by running the src_install() function. When completed, the install directory (${BUILD_PREFIX}/[package]-[version-rev]/image) will contain all the files that should either be merged to the local filesystem or included in a binary package.
instprep
Performs the additional post-install/pre-merge preparations inside the temporary install directory. This is intended to be called after building binary package but before executing preinst.
postinst
Runs package-specific actions that need to be done after the package is installed into the live filesystem. Usually helpful messages are shown here.
qmerge
This function installs all the files in the install directory to the live filesystem. The process works as follows: first, the pkg_preinst() function (if specified) is run. Then, the files are merged into the live filesystem, and the installed files’ checksums are recorded in /var/db/pkg/${CATEGORY}/${PN}-${PVR}/CONTENTS. After all the files have been merged, the pkg_postinst() function (if specified) is executed.
merge
通常,为了并入一个 ebuild,需要 fetchunpackcompileinstallqmerge 步骤。如果仅想并入 ebuild 而不关心细节,你可以使用此命令。此命令将执行以上步骤,并在失败处停止。
unmerge
This function first executes the pkg_prerm() function (if specified). Then it removes all files from the live filesystem that have a valid checksum and mtime in the package contents file. Any empty directories are recursively removed. Finally, it runs pkg_postrm() function (if specified). It is safe to merge a new version of a package first and then unmerge the old one. In fact, this is the recommended package upgrade method.
prerm
Runs package-specific actions that need to be executed before the package is removed from the filesystem. See also unmerge.
postrm
Runs package-specific actions that need to be executed after the package is removed from the filesystem. See also unmerge.
config
Runs package-specific actions that need to be executed after the emerge process has completed. This usually entails setup of configuration files or other similar setups that the user may wish to run.
package
This command is a lot like the merge command, except that after fetching, unpacking, compiling and installing, a .tbz2 binary package tarball is created and stored in PKGDIR (see make.conf(5)).
rpm
根据临时安装目录中的文件构建 RedHat RPM 软件包。目前,ebuild 的依赖信息尚未合并到RPM中。
 

选项

–debug
使用 -x 选项运行 bash,使其将详细的调试信息输出到 stdout。
–color < y | n >
启用或禁用颜色输出。这个选项将覆盖 NOCOLOR(参见 make.conf(5)),并且也可以在 stdout 不是 tty 时强制输出颜色 (默认情况下,除非 stdout 是 tty,否则颜色输出将被禁用)。
–force
当与 digest 或 manifest 命令一起使用时,这个选项会强制重新生成与当前 ebuild 相关的所有 distfiles 的检验。任何在 ${DISTDIR} 中不存在的 distfiles 都会被自动获取。
–ignore-default-opts
不使用 EBUILD_DEFAULT_OPTS 环境变量。
–skip-manifest
跳过所有 manifest 检查。
 

报告 BUGS

请通过 https://bugs.gentoo.org/   报告 bugs。

作者

Achim Gottinger <achim@gentoo.org>
Daniel Robbins <drobbins@gentoo.org>
Nicholas Jones <carpaski@gentoo.org>
Mike Frysinger <vapier@gentoo.org>
 

配置文件

/etc/portage/make.conf
包含调整构建过程的变量,并覆盖 make.globals 中的变量。
/etc/portage/color.map
包含自定义颜色的变量。
 

参见

emerge(1), ebuild(5), make.conf(5), color.map(5)
/usr/lib/portage/bin/ebuild.sh 脚本
/usr/lib/portage/bin 中的帮助程序


 

Index

名称
摘要
描述
文件(命令行参数)
命令
选项
报告 BUGS
作者
配置文件
参见

This document was created by man2html, using the manual pages.
Time: 06:06:52 GMT, September 21, 2020

1 对 “翻译:Manpage of EBUILD”的想法;

发表评论

电子邮件地址不会被公开。 必填项已用*标注