EBUILD
章节: Portage (5)更新: 2023年4月
索引 返回主内容
名称
ebuild - ebuild 脚本中的内部格式、变量和函数
描述
ebuild(1) 程序接受一个 ebuild 脚本作为参数。该脚本包含变量和命令,指定如何从其原始源下载、解压、修补、编译、安装和合并特定软件包。除此之外,ebuild 脚本还可以根据需要包含安装前/安装后/删除前/删除后命令。所有 ebuild 脚本都用 bash 编写。ebuild 对 Bash 的最低版本要求取决于 EAPI 版本。
依赖项
依赖项原子仅仅是 Portage 在计算软件包之间关系时使用的依赖项。请注意,如果原子尚未合并,则会匹配可用的最新版本。- 原子基础
- 原子基础只是一个完整的类别/包名。完整类别/包名的另一个名称是“catpkg”。您会发现此简写名称在 Gentoo 中经常使用。以下是一些原子基础,也就是“catpkg”
net-misc/dhcp sys-apps/sed sys-libs/zlib
- 原子版本
- 更具体地说明仅接受原子的某些版本会更好。请注意,版本必须与前缀组合(见下文)。因此,您可以将版本号作为后缀添加到基础中。
示例:
sys-apps/sed-4.0.5 sys-libs/zlib-1.1.4-r1 net-misc/dhcp-3.0_p2
版本通常由用点分隔的两个或三个数字组成,例如 1.2 或 4.5.2。此字符串后面可以跟一个字符,例如 1.2a 或 4.5.2z。请注意,此字母并不表示 Alpha、Beta 等状态。为此,请使用可选后缀;_alpha、_beta、_pre(预发布)、_rc(候选发布版)或 _p(补丁)。这意味着对于软件包的第 3 个预发布版本,您将使用类似 1.2_pre3 的内容。此处后缀可以任意链接,没有限制。
- 原子前缀运算符 [> >= = <= <]
- 有时您希望能够依赖于通用版本,而不是一直指定确切的版本。因此,我们提供了标准的布尔运算符
示例:
>media-libs/libgd-1.6 >=media-libs/libgd-1.6 =media-libs/libgd-1.6 <=media-libs/libgd-1.6 <media-libs/libgd-1.6
- 扩展原子前缀 [!ti] 和后缀 [*]
- 现在更进一步,我们提供了定义阻塞包和版本范围匹配的功能。另请注意,这些扩展前缀/后缀可以以任何方式与上面定义的原子类组合。
-
- ti
- 表示匹配指定的基础版本的任何修订版。因此,在下面的示例中,我们将匹配版本“1.0.2a”、“1.0.2a-r1”、“1.0.2a-r2”等。
示例:
tinet-libs/libnet-1.0.2a
- !
- 表示阻止同时安装软件包。
示例:
!app-text/dos2unix
- !!
- 表示阻止同时安装软件包,并明确禁止在升级系列期间临时同时安装它们。此语法从EAPI 2开始支持。
示例:
!!<sys-apps/portage-2.1.4_rc1
- *
- 表示匹配软件包的任何版本,只要匹配指定的基准即可。因此,对于版本“2*”,我们可以匹配“2.1”、“2.2”、“2.2.1”等,而不匹配版本“1.0”、“3.0”、“4.1”等。在没有“*”的情况下,版本部分之前的内容必须是有效的版本。例如,“2”是有效版本,“2.”不是。因此,“2*”是允许的,“2.*”是不允许的。
示例:
=dev-libs/glib-2* !=net-fs/samba-2*
-
- 原子槽
- 从EAPI 1开始,任何原子都可以限制为匹配特定的槽。这是通过附加冒号后跟槽来实现的
示例:
x11-libs/qt:3 tix11-libs/qt-3.3.8:3 >=x11-libs/qt-3.3.8:3 =x11-libs/qt-3.3*:3
- 子槽
- 从EAPI 5开始,槽依赖项可以包含一个可选的子槽部分,该部分位于常规槽之后,并由/字符分隔。
示例:
dev-lang/perl:0/5.12 dev-libs/icu:0/0 dev-libs/icu:0/49 dev-libs/glib:2/2.30
- 原子槽运算符
- 从EAPI 5开始,槽运算符依赖项由冒号后跟以下运算符之一组成
-
- *
- 表示任何槽值都是可以接受的。此外,对于运行时依赖项,表示如果匹配的软件包被卸载并替换为不同槽中匹配的其他软件包,则软件包不会中断。
示例:
dev-lang/perl:* dev-libs/glib:* dev-libs/icu:*
- =
- 表示任何槽值都是可以接受的。此外,对于运行时依赖项,表示除非在安装软件包时可用的最佳已安装版本的槽和子槽等于槽和子槽,否则软件包将中断。
示例:
dev-libs/glib:= dev-lang/perl:= dev-libs/icu:=
- slot=
- 表示仅接受特定的槽值,否则其行为与普通等于槽运算符完全相同。
示例:
dev-lang/perl:0= dev-libs/glib:2= dev-libs/icu:0=
要实现等于槽运算符,软件包管理器需要存储匹配软件包的最佳已安装版本的槽/子槽对。此语法仅供软件包管理器使用,ebuild 必须不得使用。软件包管理器可以通过在保存软件包的依赖项时在冒号和等号之间插入相应的槽/子槽对来执行此操作。此处不得省略子槽部分(当 SLOT 变量省略子槽部分时,该软件包被视为具有等于常规槽的隐式子槽)。
示例:
dev-lang/perl:0/5.12= dev-libs/glib:2/2.30= dev-libs/icu:0/0= dev-libs/icu:0/49=
-
- 原子 USE
- 从EAPI 2开始,任何原子都可以限制为匹配特定的USE标志设置。当与槽依赖项一起使用时,USE依赖项出现在槽依赖项的右侧。
-
- 无条件 USE 依赖项
-
示例 含义 foo[bar,baz] foo 必须同时启用 bar 和 baz foo[-bar,baz] foo 必须禁用 bar 并启用 baz - 条件 USE 依赖项
-
紧凑形式 等效扩展形式 foo[!bar?] bar? ( foo ) !bar? ( foo[-bar] ) foo[bar=] bar? ( foo[bar] ) !bar? ( foo[-bar] ) foo[!bar=] bar? ( foo[-bar] ) !bar? ( foo[bar] )
-
- 原子 USE 默认值
- 从EAPI 4开始,USE依赖项可以指定关于可能或可能不存在于匹配软件包的IUSE中的标志值的默认假设。此类默认值通过在标志后立即跟随(+)或(-)来指定。使用(+)表示缺少的标志存在且已启用,或使用(-)表示缺少的标志存在且已禁用
示例:
media-video/ffmpeg[threads(+)] media-video/ffmpeg[-threads(-)]
- 动态依赖项
- 有时程序可能根据 USE 变量依赖于不同的内容。Portage 提供了一些选项来处理此问题。请注意,使用以下语法时,每个情况都被视为其出现范围内的 1 个原子。这意味着每个原子都条件地包含多个原子,并且可以嵌套到无限深度。
-
- usevar? ( Atom )
- 要在用户在USE中启用 jpeg 时包含 jpeg 库,只需使用以下语法
jpeg? ( media-libs/libjpeg-turbo )
- !usevar? ( Atom )
- 如果只想在用户在USE变量中没有某个选项时才包含软件包,则使用以下语法
!nophysfs? ( dev-games/physfs )
这在您希望为功能添加可选支持并默认启用它时通常很有用。
- usevar? ( Atom if true ) !usevar? ( Atom if false )
- 对于像 C 中找到的三元运算符这样的功能,您必须使用两个语句,一个正常语句和一个反向语句。如果软件包使用 GTK3 或 GTK2,但两者都不使用,则可以像这样处理
gtk3? ( =x11-libs/gtk+-3* ) !gtk3? ( =x11-libs/gtk+-2* )
这样,默认值就是更高级的 GTK3 库。
- || ( Atom Atom ... )
- 当软件包可以与一些不同的软件包一起工作但虚拟包不合适时,可以使用此语法。
示例:
|| ( app-games/unreal-tournament app-games/unreal-tournament-goty )
这里我们看到 unreal-tournament 有一个普通版本和一个 goty 版本。由于它们提供了相同的基本文件集,因此另一个软件包可以使用两者之一。由于范围很小,因此添加虚拟包是不合适的。
另一个很好的例子是当软件包可以使用多个视频接口构建时,但它只能始终只有一个。
示例:
|| ( sdl? ( media-libs/libsdl ) svga? ( media-libs/svgalib ) opengl? ( virtual/opengl ) ggi? ( media-libs/libggi ) virtual/x11 )
这里只会选择其中一个软件包,并且优先级顺序由它们出现的顺序决定。因此,sdl 最有可能被选择,其次是 svga,然后是 opengl,然后是 ggi,如果用户没有指定任何先前的选择,则默认为 X。
请注意,如果列出的任何软件包已合并,软件包管理器将使用它来认为依赖项已满足。
-
变量使用说明
-
- *
- 在make.conf(5) 中定义的变量可用于 ebuild(除了 Portage 特定的变量,其他软件包管理器可能不支持)。
- *
- 在 ebuild 中为变量赋值时,您不能在变量名和等号之间留有空格。
- *
- 变量值只能包含属于ascii(7) 字符集的字符。此要求由GLEP 31强制执行。
ebuild 中使用的变量
- ARCH
- 此变量包含当前运行系统架构的官方 Gentoo 特定首字母缩写词。有关权威列表,请查看 /var/db/repos/gentoo/profiles/arch.list。
- P
- 此变量包含不带 ebuild 修订版的包名。此变量绝不能修改。
示例:
x11-base/xorg-server-1.20.5-r2 --> 'xorg-server-1.20.5'
- PN
- 包含脚本名称,不包含版本号。
示例:
x11-base/xorg-server-1.20.5-r2 --> 'xorg-server'
- PV
- 包含版本号,不包含修订号。
示例:
x11-base/xorg-server-1.20.5-r2 --> '1.20.5'
- PR
- 包含修订号,如果不存在修订号则为“r0”。
示例:
x11-base/xorg-server-1.20.5-r2 --> 'r2'
- PVR
- 包含版本号和修订号(如果有)。
示例:
x11-base/xorg-server-1.20.5 --> '1.20.5' x11-base/xorg-server-1.20.5-r2 --> '1.20.5-r2'
- PF
- 包含完整包名 PN-PVR
示例:
x11-base/xorg-server-1.20.5 --> 'xorg-server-1.20.5' x11-base/xorg-server-1.20.5-r2 --> 'xorg-server-1.20.5-r2'
- CATEGORY
- 包含包类别名称。
示例:
x11-base/xorg-server-1.20.5-r2 --> 'x11-base'
- A
- 包含包所需的所有源文件。此变量必须未定义,它由 SRC_URI 变量自动生成。
- WORKDIR = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/work
- 包含包构建根目录的路径。请勿修改此变量。
- FILESDIR = ${PORTAGE_TMPDIR}/${CATEGORY}/${PF}/files
- 包含包特定辅助文件所在的目录路径。请勿修改此变量。
- EBUILD_PHASE
- 包含当前正在执行的阶段函数的缩写名称,例如“setup”、“unpack”、“compile”或“preinst”。
- EBUILD_PHASE_FUNC
- 从 EAPI 5 开始,包含当前正在执行的阶段函数的完整名称,例如“pkg_setup”、“src_unpack”、“src_compile”或“pkg_preinst”。
- EPREFIX
- 从 EAPI 3 开始,包含 Portage 在安装期间配置的偏移量。在 ebuild 或 eclass 中有时需要偏移量,并且在这种情况下可用,例如 ${EPREFIX}。EPREFIX 不包含尾部斜杠,因此不存在的偏移量由空字符串表示。请勿修改此变量。
- S = ${WORKDIR}/${P}
- 包含临时构建目录的路径。此变量由函数src_compile和src_install使用。两者都以S作为当前目录执行。此变量可以修改为匹配包的 tarball 的提取目录。
- T = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp
- 包含临时目录的路径。您可以将其用于任何您喜欢的内容。
- D = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/
- 包含临时安装目录的路径。每个不涉及辅助工具和函数(如下所示)的写入操作都应以 ${D} 为前缀。从 EAPI 3 开始,此处通常需要考虑偏移量前缀,为此提供了变量 ${ED}(见下文)。请注意,使用 EAPI 7,此路径中包含的任何尾部斜杠将自动删除,以便于在 ebuild 中连接路径。请勿修改此变量。
- ED = ${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image/${EPREFIX}/
- 从 EAPI 3 开始,包含路径“${D%/}${EPREFIX}/”,用于方便起见。对于 EAPI 3 之前的 EAPI 值,它们不支持 ED,帮助程序在它们原本使用 ED 的地方使用 D。请注意,使用 EAPI 7,此路径中包含的任何尾部斜杠将自动删除,以便于在 ebuild 中连接路径。请勿修改此变量。
- MERGE_TYPE
- 从 EAPI 4 开始,可以使用 MERGE_TYPE 变量查询当前的合并类型。此变量将包含以下可能值之一
-
值 含义 buildonly 未计划合并的源构建 source 已计划合并的源构建
-
- PROVIDES_EXCLUDE = [空格分隔的 fnmatch 模式列表]
- 这些 fnmatch 模式匹配的 soname 和文件路径将在生成 PROVIDES 元数据期间被排除(参见 portage(5))。模式由空格分隔,并且可以创建包含带引号的空格的模式。
- PORTAGE_LOG_FILE
- 包含构建日志的路径。如果 PORTAGE_LOGDIR 变量未设置,则 PORTAGE_LOG_FILE="${T}/build.log"。
- PORTAGE_SOCKS5_PROXY
- 包含到 SOCKSv5 代理的 UNIX 套接字路径,该代理提供主机网络访问。仅在网络沙箱内运行且代理可用时才可用(请参阅 make.conf(5) 中的网络沙箱)。
- REPLACED_BY_VERSION
- 从 EAPI 4 开始,可以在 pkg_prerm 和 pkg_postrm 中使用 REPLACED_BY_VERSION 变量查询正在替换当前包的包版本。如果没有替换包,则变量将为空,否则将包含单个版本号。
- REPLACING_VERSIONS
- 从 EAPI 4 开始,可以在 pkg_pretend、pkg_setup、pkg_preinst 和 pkg_postinst 中使用 REPLACING_VERSIONS 变量查询当前包正在替换的包版本。如果没有要替换的包,则变量将为空,否则将包含与要替换的包版本相对应的空格分隔的版本号列表。通常,此变量不会包含多个版本,但根据 PMS,它可以包含多个版本。
- REQUIRES_EXCLUDE = [空格分隔的 fnmatch 模式列表]
- 这些 fnmatch 模式匹配的 soname 和文件路径将在生成 REQUIRES 元数据期间被排除(参见 portage(5))。模式由空格分隔,并且可以创建包含带引号的空格的模式。
- ROOT = /
- 请注意有关 ROOT 变量的一个重要的最新更改——在 EAPI 7 ebuild 中,当指向根文件系统时,此变量在 ebuild 中默认为 "" 而不是传统的 "/",并且当设置为非根路径时,此变量将永远不会包含尾部斜杠。这增加了方便性,消除了连接路径时指定 "${ROOT%/}" 的需要,使 ROOT 的使用更优雅。这也适用于变量 EROOT、D 和 ED。请注意,这意味着 ebuild 必须在条件语句中使用不同的逻辑来确定它们是否安装到根文件系统——使用 [[ "$ROOT" == "" ]] 而不是 [[ "$ROOT" == "/" ]]。
包含 Portage 应用作活动文件系统根目录的路径。当包希望对活动文件系统进行更改时,它们应该在以 ${ROOT} 为前缀的树中执行此操作。此处通常需要考虑偏移量前缀,为此提供了变量 ${EROOT}(见下文)。请勿修改此变量。
- EROOT = ${ROOT%/}${EPREFIX}/
- 从 EAPI 3 开始,包含“${ROOT%/}${EPREFIX}/”,用于方便起见。请勿修改此变量。另请参见上面有关 EAPI 7 中 ROOT 的重要说明。与 ROOT 一样,当设置为根文件系统时,EROOT 将定义为 "",并且在 ebuild 中永远不会有尾部斜杠。
- BROOT = ${EPREFIX}
- 从 EAPI 7 开始,包含构建依赖项(由 BDEPEND 满足)的绝对路径,通常是可执行的构建工具。这包括任何适用的偏移量前缀。请勿修改此变量。
- DESCRIPTION = 一个快乐的小包
- 应包含对包的简短描述。
- EAPI = 0
- 定义此包符合的 ebuild API 版本。如果未定义,则默认为“0”。如果 Portage 不识别 EAPI 值,则它将屏蔽包并拒绝对其执行任何操作,因为这意味着需要首先安装更新版本的 Portage。为了最大限度地提高向后兼容性,包应符合尽可能低的 EAPI。请注意,任何使用此包的 ebuild(1) 命令的用户都需要具有识别此包符合的 EAPI 的 Portage 版本。
- SRC_URI = https://example.com/path/${P}.tar.gz
- 包含所需源文件的 URI 列表。它可以包含单个源文件的多个 URI。如果在任何 GENTOO_MIRRORS 上都找不到该文件,则按顺序处理该列表。从 EAPI 2 开始,可以使用右侧的“->”运算符自定义给定 URI 的输出文件名,后跟所需的输出文件名。所有标记,包括运算符和输出文件名,都应由空格分隔。
- HOMEPAGE = https://example.com/
- 应包含源主站点和包其他相关信息的 URI 列表。
- KEYWORDS = [-ti][x86,ppc,sparc,mips,alpha,arm,hppa,...]
-
KEYWORDS 与 ACCEPT_KEYWORDS(参见 make.conf(5))一起工作,以实现创建不同类型的包集的系统,然后可以批量屏蔽或取消屏蔽这些包集。在 Gentoo Linux 项目中,它们由 Gentoo 架构团队用于定义特定 CPU 架构的稳定和不稳定未屏蔽包集中包含哪些 ebuild。
它们的工作原理如下。为了解释起见,让我们假设您有一个稳定的 x86-64 位系统,通常称为“amd64”。ARCH 将定义为“amd64”。如果您使用的是 Gentoo Linux 的稳定版本,则 ACCEPT_KEYWORDS 将通过配置文件设置为“amd64”。然后,任何在 KEYWORDS 中具有“amd64”的 ebuild 都会默认取消屏蔽。
在“不稳定”的 amd64 系统上,ACCEPT_KEYWORDS 将设置为“amd64 tiamd64”,其中波浪号表示“不稳定”。然后,如果 ebuild 在 KEYWORDS 中具有“amd64”或“tiamd64”,则它将在该系统上默认按关键字取消屏蔽。类似地,如果已知某个 ebuild 与特定架构不兼容,则可以指定“-”前缀(即“-amd64”)设置以仅在该架构上屏蔽它。如果您正在为 Gentoo Linux 开发 ebuild,则有一些关于 KEYWORDS 的策略,您需要遵循这些策略以与 Gentoo 的架构团队工作流程保持一致。下面列出了最重要的策略
-
- *
- 如果您不知道某个 ebuild 是否在特定架构下运行,则不要在 KEYWORDS 中指定它。然后它将在该架构上默认屏蔽。
- *
- 如果已知 ebuild 不适用于某个架构,请在 KEYWORDS 中禁用该架构。例如,这可以通过指定“-ppc”来完成。这将确保它在该架构上明确按关键字屏蔽。
- *
- 向 Gentoo Linux 提交 ebuild 时,项目的策略是仅在已成功测试的架构的 KEYWORDS 中设置“tiarch”,而不是更多。随着 ebuild 获得更多测试,Gentoo 架构团队将逐渐扩展 KEYWORDS 设置以将包“提升”到不稳定状态,并可能提升到稳定状态。
可以使用配置文件中的 package.accept_keywords 和 package.keywords 文件,在每个包的基础上自定义 ACCEPT_KEYWORDS 和 KEYWORDS 的行为。有关使用这些文件的更多信息,请参见 portage(5)。
-
- SLOT
- 此变量用于设置包的 SLOT,以便多个版本的包可以共存。默认情况下,应将 SLOT 设置为 "0"。如果您不确定,请在寻求专家指导之前不要修改此值。此值 绝不 应留空。
从 EAPI 5 开始,SLOT 变量可以包含一个可选的子槽部分,该部分位于常规槽之后,并以 / 字符分隔。子槽必须是有效的槽名称。子槽用于表示以下情况:将包升级到具有不同子槽的新版本可能需要重新构建依赖包。当 SLOT 定义中省略子槽部分时,该包被视为具有一个隐式子槽,该子槽等于常规槽。有关子槽用法的更多信息,请参阅 Atom Slot Operators 部分。
- LICENSE
- 此变量应包含一个空格分隔的许可证列表,表示该包适用的许可证。此变量 _必须_ 设置为 /var/db/repos/gentoo/licenses/ 中存在的匹配许可证。如果存储库中尚不存在该许可证,则必须先添加它。
- IUSE
- 此变量应包含构建脚本中使用到的所有 USE 标记的列表。此处不应列出的唯一 USE 标记是与架构相关的标记(请参阅 KEYWORDS)。从 EAPI 1 开始,可以在标记前添加 + 或 - 以创建分别启用或禁用相应 USE 标记的默认设置。有关 USE 标记堆叠顺序的详细信息,请参阅 make.conf(5) 中的 USE_ORDER 变量。鉴于默认的 USE_ORDER 设置,负 IUSE 默认设置仅对否定存储库级别的 USE 设置有效,因为配置文件和用户配置设置会覆盖它们。
- DEPEND
- 此变量应包含程序编译(也称为构建时 依赖项)所需的所有包的列表。这些通常是库和头文件。
从 EAPI 7 开始,工具应放在 BDEPEND 变量中,因为 DEPEND 仅会安装到正在构建的系统中,因此在交叉编译时无法执行。
您可以使用上面在 Dependencies 部分中描述的语法。
- RDEPEND
- 此变量应包含此程序运行(也称为运行时 依赖项)所需的所有包的列表。这些通常是库。
在 EAPI 3 或更早版本中,如果未设置此变量,则默认为 DEPEND 的值。在 EAPI 4 或更高版本中,RDEPEND 将永远不会被隐式设置。
您可以使用上面在 Dependencies 部分中描述的语法。
- BDEPEND
- 此变量应包含编译此程序(也称为本地构建 依赖项)期间需要执行的所有包的列表。这些通常是工具,例如解释器或(交叉)编译器。它们将安装到执行构建的系统中。
此变量在 EAPI 7 中正式引入,但在实验性的 EAPI 5-hdepend 中之前称为 HDEPEND。
您可以使用上面在 Dependencies 部分中描述的语法。
- IDEPEND
- 此变量应包含合并此包期间需要执行的所有包的列表(也称为本地安装时 依赖项)。这些通常是安装后的工具,例如缓存生成器。它们将安装到执行合并的系统中。
此变量在 EAPI 8 中引入。
您可以使用上面在 Dependencies 部分中描述的语法。
- PDEPEND
- 此变量应包含在此包之后应合并的所有包的列表(也称为后期 合并依赖项),但如果不可能,包管理器可以随时安装这些包。
***警告***
仅在作为打破循环依赖关系的最后手段时使用此变量!您可以使用上面在 Dependencies 部分中描述的语法。
- REQUIRED_USE
- 从 EAPI 4 开始,REQUIRED_USE 变量可用于指定允许或不允许的 USE 标记组合。必要时,元素可以嵌套。
行为 表达式 如果 flag1 启用,则 flag2 启用 flag1? ( flag2 ) 如果 flag1 禁用,则 flag2 启用 !flag1? ( flag2 ) 如果 flag1 禁用,则 flag2 禁用 !flag1? ( !flag2 ) 必须启用一个或多个(包含或) || ( flag1 flag2 flag3 ) 必须启用一个但不超过一个(互斥或) ^^ ( flag1 flag2 flag3 ) 最多可以启用一个(EAPI 5 或更高版本) ?? ( flag1 flag2 flag3 ) - RESTRICT
- 此变量应包含一个空格分隔的 Portage 功能限制列表。您可以使用上面在 DEPEND 中看到的条件语法来更改限制。
-
- binchecks
- 禁用所有二进制文件的 QA 检查。这 仅 应用于二进制检查没有意义的包(例如,linux-headers 和 kernel-sources 可以安全地跳过,因为它们没有二进制文件)。如果需要出于其他原因跳过二进制检查(例如专有二进制文件),请参阅 QA CONTROL VARIABLES 部分以获取更具体的豁免。
- bindist
- 构建包的分发受到限制。
- fetch
- 类似于 mirror,但文件也不会通过 SRC_URI 获取。
- installsources
- 禁用特定包的 installsources。这适用于二进制文件与 debugedit 不兼容的包。
- mirror
- SRC_URI 中的文件不会从 GENTOO_MIRRORS 下载。
- network-sandbox
- 禁用特定包的网络命名空间。不应在 Gentoo 主树中使用。
- preserve-libs
- 禁用特定包的 preserve-libs。请注意,当合并包时,如果新实例或旧实例设置了 RESTRICT=preserve-libs,则 RESTRICT=preserve-libs 会应用。
- primaryuri
- 在 GENTOO_MIRRORS 之前从 SRC_URI 中的 URI 获取。
- splitdebug
- 禁用特定包的 splitdebug。这适用于二进制文件触发 splitdebug 问题的包,例如 /usr/lib/debug/.build-id 中符号链接之间的文件冲突(由捆绑的库触发)。
- strip
- 最终的二进制文件/库不会剥离调试符号。
- test
- 即使用户启用了 FEATURES=test,也不运行 src_test。
- userpriv
- 禁用特定包的 userpriv。
-
- PROPERTIES
- 一个空格分隔的属性列表,支持条件语法。
-
- interactive
- 一个或多个 ebuild 阶段将产生一个需要用户交互的提示。
- live
- 该包使用实时源代码,每次安装该包时源代码可能会有所不同。
- test_network
- 即使 ebuild 具有 RESTRICT=test,包管理器也可能运行需要互联网连接的测试。
-
- DOCS
- 从 EAPI 4 开始,用于默认 src_install 函数的文档文件的数组或空格分隔列表,使用 dodoc 进行安装。如果未定义,则使用合理的默认列表。请参阅下面的 src_install 文档。
- PATCHES
- 从 EAPI 6 开始,用于在默认 src_prepare 函数中使用 eapply 应用补丁的数组。
QA 控制变量
- 用法说明
- 提供了一些 QA 变量,允许 ebuild 操作 Portage 执行的一些 QA 检查。ebuild 中这些变量的使用应保持在绝对最低限度,否则会违背 QA 检查的目的,并且其使用须经 QA 团队同意。它们主要用于安装无法更改的闭源二进制对象的 ebuild。
请注意,违反这些规则的对象可能会在某些架构上失败。
- QA_AM_MAINTAINER_MODE
- 此变量应包含一个包含 automake 缺少 --run 命令的行列表。这些行可以包含使用转义引号的特殊字符的正则表达式。
- QA_CONFIG_IMPL_DECL_SKIP
- 此变量应包含一个函数名称列表,在检查配置日志中的 -Wimplicit-function-declaration 时应忽略这些函数。这仅应用于误报。
- QA_CONFIGURE_OPTIONS
- 此变量应包含一个配置选项列表,这些选项会触发有关无法识别的选项的警告。这些选项可以包含使用转义引号的特殊字符的正则表达式。
- QA_DESKTOP_FILE
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是桌面文件,不应进行验证。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_DT_NEEDED
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是缺少 NEEDED 条目的共享库。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_EXECSTACK
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是需要可执行堆栈才能运行的对象。这些路径可以包含 fnmatch 模式。
此变量旨在用于确实需要可执行堆栈的对象(即,不是标记为需要但实际上不需要的对象)。
- QA_FLAGS_IGNORED
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是文件,这些文件不包含 .GCC.command.line 部分或包含 .hash 部分。这些路径可以包含使用转义引号的特殊字符的正则表达式。
此变量旨在用于忽略 CFLAGS、CXXFLAGS、FFLAGS、FCFLAGS 和 LDFLAGS 变量的二进制包的文件。
- QA_MULTILIB_PATHS
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是应忽略多库严格检查的文件。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_PKGCONFIG_VERSION
- 如果设置,则 Portage 会验证所有 pkg-config .pc 文件是否具有值为 QA_PKGCONFIG_VERSION 的 Version 字段。例如,如果您的包预计会安装所有 Version 字段包含 PV 的 pkg-config .pc 文件,则设置 QA_PKGCONFIG_VERSION=${PV}。
- QA_PREBUILT
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是预构建的二进制文件。此处列出的路径将附加到下面列出的每个 QA_* 变量。这些路径可以包含类似 fnmatch 的模式,这些模式将在内部转换为正则表达式,用于支持正则表达式而不是 fnmatch 模式的 QA_* 变量。转换机制只是将 "*" 替换为 ".*"。
- QA_PRESTRIPPED
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是包含预剥离二进制文件的文件。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_SONAME
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是缺少 SONAME 的共享库。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_SONAME_NO_SYMLINK
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是具有 SONAME 但不应在同一目录中具有相应的 SONAME 符号链接的共享库。这些路径可以包含使用转义引号的特殊字符的正则表达式。
- QA_TEXTRELS
- 此变量可以设置为一个文件路径列表,相对于映像目录,这些文件路径是包含无法消除的文本重定位的文件。这些路径可以包含 fnmatch 模式。
此变量旨在用于无法更改的闭源二进制对象。
- QA_WX_LOAD
- 此变量应包含一个文件路径列表,相对于映像目录,这些文件路径是包含可写和可执行段的文件。这些很少见。这些路径可以包含 fnmatch 模式。
PORTAGE 声明
- inherit
- 继承是portage维护的额外函数类,这些函数位于ebuild外部,并作为可继承的功能和数据提供。它们定义函数并设置数据类型作为直接替换、扩展和简化的例程,用于极其常见的任务,以简化构建过程。对继承的调用不能依赖于在给定ebuild中可能变化的条件。eclass的规范仅包含其名称,而不包含.eclass扩展名。还要注意,inherit语句必须位于其他变量声明之前,除非这些变量用于eclass的全局范围。
阶段函数
- pkg_pretend
- 从EAPI 4开始,可以定义此函数以检查是否满足各种要求。它在尽可能早的时候被调用,在尝试满足任何依赖项之前。如果函数检测到问题,则应调用eerror并退出。用于执行pkg_pretend的环境(变量、函数、临时目录等)不会被保存,因此在之后执行的阶段中不可用。
- pkg_nofetch
- 当由于任何原因无法获取SRC_URI中的文件时,将执行此函数。如果您在RESTRICT中开启了fetch,这对于向用户显示如何获取这些文件的信息很有用。您只需输出一条消息并让函数返回即可。不要以调用die结束函数。
- pkg_setup
- 如果包需要在其他任何操作之前执行特定的设置操作或检查,则可以使用此函数。
初始工作目录:$PORTAGE_TMPDIR - src_unpack
- 此函数用于将A中的所有源代码解压到WORKDIR。如果未在ebuild脚本中定义,则调用unpack ${A}。任何补丁和其他预配置/编译修改都应在此处完成。
初始工作目录:$WORKDIR - src_prepare
- 所有源代码的准备工作,例如应用补丁,都应在此处完成。此函数从EAPI 2开始支持。
初始工作目录:$S - src_configure
- 所有必要的配置步骤都应在此处完成。此函数从EAPI 2开始支持。
初始工作目录:$S - src_compile
- 在EAPI 2之前,所有必要的配置和编译步骤都应在此处完成。从EAPI 2开始,此处仅应完成编译步骤。
初始工作目录:$S - src_test
- 运行所有包特定的测试用例。默认情况下,运行'emake check',然后运行'emake test'。在EAPI 5之前,默认的src_test实现将自动将-j1选项作为最后一个参数传递给emake,从EAPI 5开始,它将允许测试并行运行。
初始工作目录:$S - src_install
- 应包含在临时安装目录中安装包所需的一切。
初始工作目录:$S从EAPI 4开始,如果src_install未定义,则使用以下默认实现
src_install() { if [[ -f Makefile || -f GNUmakefile || -f makefile ]] ; then emake DESTDIR="${D}" install fi if ! declare -p DOCS &>/dev/null ; then local d for d in README* ChangeLog AUTHORS NEWS TODO CHANGES \ THANKS BUGS FAQ CREDITS CHANGELOG ; do [[ -s "${d}" ]] && dodoc "${d}" done elif [[ $(declare -p DOCS) == "declare -a "* ]] ; then dodoc "${DOCS[@]}" else dodoc ${DOCS} fi }
- pkg_preinst pkg_postinst
- 在合并包之前和之后,对实时文件系统所需的所有修改都应放在此处。还应在此处列出用户的注释,因为它将最后显示。
初始工作目录:$PWD - pkg_prerm pkg_postrm
- 与pkg_*inst函数类似,但用于取消合并。
初始工作目录:$PWD - pkg_config
- 此函数应包含可选的基本配置步骤。
初始工作目录:$PWD
辅助函数
阶段
- default
- 调用当前正在执行阶段的默认阶段函数实现。此函数从EAPI 2开始支持。
- default_*
- 从EAPI 2开始,默认的pkg_nofetch和src_*阶段函数可以通过名称以default_开头并以相应阶段函数名称结尾的函数访问。例如,调用名为default_src_compile的函数等效于调用默认的src_compile实现。
-
默认阶段函数 default_src_unpack default_src_prepare default_src_configure default_src_compile default_src_test
-
通用
- assert [原因]
- 检查shell的PIPESTATUS数组变量的值,如果任何组件非零(表示失败),则使用原因作为失败消息调用die。
- die [原因]
- 导致当前emerge进程中止。最终显示将包含原因。
从EAPI 4开始,所有辅助函数在发生任何错误时都会自动调用die。辅助函数调用可以以nonfatal辅助函数为前缀,以防止错误变为致命错误。
- nonfatal <辅助函数>
- 执行辅助函数,如果失败不要调用die。nonfatal辅助函数从EAPI 4开始可用。
- use <USE项>
- 如果USE项在USE变量中,则函数将静默返回0(即shell true)。如果USE项不在USE变量中,则函数将静默返回1(即shell false)。usev是use的详细版本。
-
- 示例
-
if use gnome ; then guiconf="--enable-gui=gnome --with-x" elif use gtk ; then guiconf="--enable-gui=gtk --with-x" elif use X ; then guiconf="--enable-gui=athena --with-x" else # No gui version will be built guiconf="" fi
-
- usev <USE项>
- 与use类似,但在use返回true时还会回显USE项。
- usex <USE标志> [true输出] [false输出] [true后缀] [false后缀]
- 如果设置了USE标志,则回显[true输出][true后缀](默认为“yes”),否则回显[false输出][false后缀](默认为“no”)。usex辅助函数从EAPI 5开始可用。
- use_with <USE项> [配置名称] [配置选项]
- 用于创建传递给配置脚本的自定义选项。如果USE项在USE变量中并且指定了配置选项,则将回显字符串--with-[配置名称]=[配置选项]。如果未指定配置选项,则仅回显--with-[配置名称]。如果USE项不在USE变量中,则将回显字符串--without-[配置名称]。如果未指定配置名称,则将使用USE项代替。从EAPI 4开始,识别空配置选项参数。在EAPI 3及更早版本中,空配置选项参数被视为未提供。
-
- 示例
-
USE="opengl" myconf=$(use_with opengl) (myconf now has the value "--with-opengl") USE="jpeg" myconf=$(use_with jpeg libjpeg) (myconf now has the value "--with-libjpeg") USE="" myconf=$(use_with jpeg libjpeg) (myconf now has the value "--without-libjpeg") USE="sdl" myconf=$(use_with sdl SDL all-plugins) (myconf now has the value "--with-SDL=all-plugins")
-
- use_enable <USE项> [配置名称] [配置选项]
- 与上面的use_with相同,只是配置选项为--enable-而不是--with-,以及--disable-而不是--without-。从EAPI 4开始,识别空配置选项参数。在EAPI 3及更早版本中,空配置选项参数被视为未提供。
- has <项> <项列表>
- 如果项在项列表中,则has返回0。否则,返回1。还有另一个版本hasv,它将有条件地回显项。
项列表由IFS变量分隔。此变量的默认值为' ',或空格。它是bash(1)设置。 - hasv <项> <项列表>
- 与has类似,但在has返回true时还会回显项。在EAPI 8中被禁止。
- has_version [-b] [-d] [-r] [--host-root] <依赖项规范>
- 检查<依赖项规范>是否已安装。该参数接受DEPEND变量中可接受的所有值。如果<依赖项规范>已安装,则函数返回0,否则返回1。默认情况下,在ROOT中搜索包。
在EAPI 5和EAPI 6中,如果给定--host-root选项,则在构建主机中搜索包。
在EAPI 7及更高版本中,令人困惑的--host-root选项已被-b替换,它对应于构建主机中BDEPEND满足的依赖项。类似地,-d选项对应于SYSROOT中的DEPEND,-r选项对应于ROOT中的RDEPEND。
- best_version [-b] [-d] [-r] [--host-root] <包名称>
- 此函数将在当前已安装包的数据库中查找包名称,并回显找到的包的“最佳版本”,如果未安装任何版本,则回显空字符串。默认情况下,在ROOT中搜索包。它接受与has_version相同的选项。
示例
VERINS="$(best_version net-ftp/glftpd)" (VERINS now has the value "net-ftp/glftpd-1.27" if glftpd-1.27 is installed)
输出
- einfo 一次性消息
- 与elog相同,但应在消息对用户不重要时使用(例如构建过程中的进度或状态消息)。
- elog 信息性消息
- 如果您需要显示希望用户阅读并注意的消息,则使用elog。它的工作原理与echo(1)相同,但会向输出添加更多内容以吸引用户的注意。消息还将由portage记录以供以后查看。
- ewarn 警告消息
- 与einfo相同,但应在向用户显示警告时使用。
- eqawarn QA警告消息
- 与einfo相同,但应在向用户显示QA警告时使用。
- eerror 错误消息
- 与einfo相同,但应在向用户显示错误时使用。
- ebegin 帮助信息
- 与einfo类似,我们输出帮助信息,然后提示以下操作可能需要一些时间才能完成。任务完成后,需要调用eend。
- eend <状态> [错误消息]
- 使用适当的“OK”或“!!”(用于错误)标记跟随ebegin消息。如果状态非零,则显示附加的错误消息。
解压
- unpack <源代码> [更多源代码列表]
- 此函数将解压缩和/或解压缩源代码列表到当前目录。该函数将源代码附加到DISTDIR变量。
准备
- eapply [补丁选项] <文件|目录>
- 使用指定的选项将补丁应用于${WORKDIR}。默认补丁级别为-p1。如果指定了目录,则应用该目录中所有后缀为.patch或.diff的补丁。此函数从EAPI 6开始可用,替换旧的epatch.eclass(5)函数。
- eapply_user
- 将用户提供的补丁从Portage配置目录树应用于${WORKDIR}。有关目录语法和应用规则,请参阅portage(5)中的/etc/portage/patches/部分。此函数从EAPI 6开始可用,替换旧的epatch.eclass(5)函数。
编译
- econf [配置选项]
- 这用作configure的替代品。执行
${ECONF_SOURCE:-.}/configure \ ${CBUILD:+--build=${CBUILD}} \ --datadir="${EPREFIX}"/usr/share \ --host=${CHOST} \ --infodir="${EPREFIX}"/usr/share/info \ --localstatedir="${EPREFIX}"/var/lib \ --prefix="${EPREFIX}"/usr \ --mandir="${EPREFIX}"/usr/share/man \ --sysconfdir="${EPREFIX}"/etc \ ${CTARGET:+--target=${CTARGET}} \ ${EXTRA_ECONF} \ configure options || die "econf failed"
请注意,EXTRA_ECONF 仅供用户使用,不适用于 ebuild 作者。如果您希望将更多选项传递给配置,只需将额外的参数传递给econf。另请注意,如果配置脚本失败,econf 会自动调用die。从EAPI 3开始,econf 使用${EPREFIX}变量,在之前的EAPI值中忽略此变量。从EAPI 4开始,如果字符串disable-dependency-tracking出现在configure --help的输出中,econf 会将--disable-dependency-tracking添加到参数中。从EAPI 5开始,如果字符串disable-silent-rules出现在configure --help的输出中,econf 会将disable-silent-rules添加到参数中。从EAPI 6开始,如果相应的字符串出现在configure --help的输出中,econf 会添加docdir和htmldir。从EAPI 7开始,如果字符串with-sysroot出现在configure --help的输出中,econf 会将with-sysroot添加到参数中。从EAPI 8开始,如果字符串datarootdir出现在configure --help的输出中,econf 会将datarootdir添加到参数中。此外,在EAPI 8中,如果字符串disable-static或enable-static出现在configure --help的输出中,econf 会将disable-static添加到参数中。 - emake [make 选项]
- 这必须在 ebuild 中代替 `make` 使用。执行`${MAKE:-make} ${MAKEOPTS} make 选项 ${EXTRA_EMAKE}`,并从EAPI 4开始自动调用`die`。
MAKEOPTS变量由用户设置,以便他们可以启用并行构建等功能;有关更多详细信息,请参阅make.conf(5)。
EXTRA_EMAKE 旋钮是 portage 功能,因此开发人员可以在调试 ebuild 时覆盖某些内容;它不是任何 EAPI 规范的一部分。
***警告***
您必须确保您的构建对并行构建 (make -j2) 感到满意。它应该经过彻底测试,因为并行构建以偶尔失败但并非总是失败而臭名昭著。如果您确定您的软件包无法并行构建,并且您无法解决此问题,则应显式运行`emake -j1`。但是,这是一种最后的手段,因为它可能会显着减慢具有大量处理器的系统上的构建速度。
安装
- einstall [make 选项]
- 这用作 make install 的替代品。执行
make \ prefix=${ED}/usr \ datadir=${ED}/usr/share \ infodir=${ED}/usr/share/info \ localstatedir=${ED}/var/lib \ mandir=${ED}/usr/share/man \ sysconfdir=${ED}/etc \ ${EXTRA_EINSTALL} \ make options \ install
请不要用它来代替 'emake install DESTDIR=${D}'。这是安装基于 make 的软件包的首选方法。此外,不要使用EXTRA_EINSTALL变量,因为它仅供用户使用。从EAPI 6开始禁止使用。 - docompress [-x] <路径> [更多路径列表]
-
- 从EAPI 4开始,docompress 帮助程序用于管理要包含在可选压缩中或从中排除的文件列表。如果第一个参数是-x,则将其后续每个参数添加到排除列表中。否则,将每个参数添加到包含列表中。包含列表最初包含/usr/share/doc、/usr/share/info和/usr/share/man。排除列表最初包含/usr/share/doc/${PF}/html。
可选压缩应在src_install完成后以及任何后续阶段函数执行之前进行。对于包含列表中的每个项目,假装它具有D变量的值作为前缀,然后
- 如果它是目录,则表现得好像此目录下的每个文件或目录都在包含列表中。
如果该项目是文件,则可以对其进行压缩,除非它已被如下所述排除。
如果该项目不存在,则将其忽略。
是否要排除某个项目由以下方式确定:对于排除列表中的每个项目,假装它具有D变量的值作为前缀,然后
- 如果它是目录,则表现得好像此目录下的每个文件或目录都在排除列表中。
如果该项目是文件,则不应对其进行压缩。
如果该项目不存在,则将其忽略。
- 如果它是目录,则表现得好像此目录下的每个文件或目录都在包含列表中。
- 从EAPI 4开始,docompress 帮助程序用于管理要包含在可选压缩中或从中排除的文件列表。如果第一个参数是-x,则将其后续每个参数添加到排除列表中。否则,将每个参数添加到包含列表中。包含列表最初包含/usr/share/doc、/usr/share/info和/usr/share/man。排除列表最初包含/usr/share/doc/${PF}/html。
- dosed s:orig:change:g <文件名>
- 从EAPI 4开始,dosed 帮助程序不再存在。Ebuild 应该直接调用sed(1)(并假设它是 GNU sed)。
在${ED}内部对文件名执行就地 sed。如果没有给出表达式,则"s:${D}::g"将用作默认表达式。请注意,此表达式不使用偏移量前缀。
'dosed s:/usr/local:/usr:g /usr/bin/some-script' 对${ED}/usr/bin/some-script运行 sed - dodir <路径> [更多路径]
- 在${ED}内部创建目录。
'dodir /usr/lib/apache' 创建${ED}/usr/lib/apache。请注意,do* 函数将为您运行dodir。如果合并时此目录将为空,则请改用keepdir。 - diropts [install(1) 的选项]
- 可用于定义dodir中使用的 install 函数的选项。默认为-m0755。
- into <路径>
- 设置其他函数(如dobin、dosbin、doman、doinfo、dolib)的根目录(DESTTREE)。
默认根目录为 /usr。 - keepdir <路径> [更多路径]
- 类似于dodir,但用于创建否则将为空的目录。PMS 未定义对完全空目录的处理,使用keepdir可确保跟踪它们。
- dobin <二进制文件> [更多二进制文件列表]
- 将二进制文件或二进制文件列表安装到DESTTREE/bin 中。创建所有必要的目录。
- dosbin <二进制文件> [更多二进制文件列表]
- 将二进制文件或二进制文件列表安装到DESTTREE/sbin 中。创建所有必要的目录。
- doinitd <init.d 脚本> [更多 init.d 脚本列表]
- 安装 Gentoo init.d 脚本。它们将安装到 Gentoo init.d 脚本的正确位置(/etc/init.d/)。创建所有必要的目录。
- doconfd <conf.d 文件> [更多 conf.d 文件列表]
- 安装 Gentoo conf.d 文件。它们将安装到 Gentoo conf.d 文件的正确位置(/etc/conf.d/)。创建所有必要的目录。
- doenvd <env.d 条目> [更多 env.d 条目列表]
- 安装 Gentoo env.d 条目。它们将安装到 Gentoo env.d 条目的正确位置(/etc/env.d/)。创建所有必要的目录。
- dolib <库> [更多库列表]
- dolib.a <库> [更多库列表]
- dolib.so <库> [更多库列表]
- 将库或库列表安装到DESTTREE/lib 中。创建所有必要的目录。dolib 在EAPI 7中被禁止:请改用更具体的dolib.a或dolib.so。
- libopts [install(1) 的选项]
- 可用于定义dolib函数中使用的 install 函数的选项。默认为-m0644。libopts 在EAPI 7中被禁止。
- doman [-i18n=<语言环境>] <手册页> [更多手册页列表]
- 根据手册文件的结尾,将手册页安装到/usr/share/man/man[0-9n]中。如果文件尚未压缩,则会对其进行压缩。您可以使用-i18n选项指定特定于语言环境的手册页。然后,手册页将安装到/usr/share/man/<语言环境>/man[0-9n]中。从EAPI 2开始,文件名中包含语言环境的特定于语言环境的手册页将安装在/usr/share/man/<语言环境>/man[0-9n]中,并删除文件名中的语言环境部分,并且-i18n选项无效。例如,使用EAPI 2,名为 foo.<语言环境>.1 的手册页将安装为/usr/share/man/<语言环境>/man1/foo.1。从EAPI 4开始,-i18n选项优先于文件名的语言环境后缀。
- dohard <文件名> <链接名>
- 从EAPI 4开始,dohard 帮助程序不再存在。Ebuild 应该直接调用ln(1)。
- dosym [-r] <文件名> <链接名>
- 执行 ln 命令以创建符号链接。设置 -r 将创建相对符号链接。从EAPI 8开始,可以使用 -r 选项。
- doheader [-r] <文件> [更多文件列表]
- 默认情况下,将给定的头文件安装到/usr/include/中,文件模式为0644(这可以通过insopts函数覆盖)。设置 -r 将设置递归。从EAPI 5开始,可以使用doheader 帮助程序。
- dohtml [-a 文件类型] [-r] [-x 要忽略的目录列表] [文件和目录列表]
- 将文件列表中的文件(以空格分隔的列表)安装到/usr/share/doc/${PF}/html 中,前提是文件以 .htm、.html、.css、.js 结尾,设置-a将限制包含的文件类型,-A将附加到默认列表中,设置-x将设置要排除的目录(默认情况下排除 CVS),-p将设置文档前缀,-r将设置递归。dohtml 在EAPI 7中被禁止:请改用dodoc和docinto。
- doinfo <info 文件> [更多 info 文件列表]
- 将 info 页安装到DESTDIR/info 中。文件会自动进行 gzip 压缩。创建所有必要的目录。
- domo <语言环境文件> [更多语言环境文件列表]
- 根据语言环境文件的结尾,将语言环境文件安装到DESTDIR/usr/share/locale/[LANG]中。创建所有必要的目录。
- fowners [-h|-H|-L|-P|-R] [用户][:组] <文件> [文件]
- fperms [-R] <权限> <文件> [文件]
- 执行 chown (fowners) 或 chmod (fperms),将权限应用于文件。
- insinto [路径]
- 设置doins函数的目标路径。
默认路径为 /。 - insopts [install(1) 的选项]
- 可用于定义doins中使用的 install 函数的选项。默认为-m0644。
- doins [-r] <文件> [更多文件列表]
- 将文件安装到insinto控制的路径中。此函数使用install(1)。创建所有必要的目录。设置 -r 将设置递归。从EAPI 4开始,doins和newins都保留符号链接。在EAPI 3及更早版本中,符号链接会被取消引用而不是保留。
- exeinto [路径]
- 设置doexe函数的目标路径。
默认路径为 /。 - exeopts [install(1) 的选项]
- 可用于定义doexe中使用的 install 函数的选项。默认为-m0755。
- doexe <可执行文件> [更多可执行文件列表]
- 将可执行文件安装到exeinto控制的路径中。此函数使用install(1)。创建所有必要的目录。如果尚未调用exeinto,则行为未定义。
- docinto [路径]
- 设置dodoc和dohtml在安装到文档树(基于/usr/share/doc/${PF}/)时使用的子目录。默认为无子目录,或仅为""。
- dodoc [-r] <文档> [更多文档列表]
- 将文档或文档列表安装到/usr/share/doc/${PF}/<docinto 路径>中。文档被标记为压缩。创建所有必要的目录。从EAPI 4开始,支持递归,由新的-r选项启用。
- newbin <旧文件> <新文件名>
- newsbin <旧文件> <新文件名>
- newinitd <旧文件> <新文件名>
- newconfd <旧文件> <新文件名>
- newenvd <旧文件> <新文件名>
- newlib.so <旧文件> <新文件名>
- newlib.a <旧文件> <新文件名>
- newman <旧文件> <新文件名>
- newins <旧文件> <新文件名>
- newexe <旧文件> <新文件名>
- newdoc <旧文件> <新文件名>
- 所有这些函数都像 do* 函数一样工作,但它们只适用于一个文件,并且该文件将安装为[新文件名]。从EAPI 5开始,当第一个参数为 -(连字符)时,将读取标准输入。
示例
# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit another-eclass some-eclass DESCRIPTION="Super-useful stream editor (sed)" HOMEPAGE="https://www.gnu.org/software/sed/" SRC_URI="ftp://alpha.gnu.org/pub/gnu/${PN}/${P}.tar.gz" LICENSE="GPL-2" SLOT="0" KEYWORDS="tiamd64" BDEPEND="nls? ( sys-devel/gettext )" src_configure() { econf \ --bindir="${EPREFIX}"/bin } src_install() { emake DESTDIR="${D}" install dodoc NEWS README* THANKS AUTHORS BUGS ChangeLog }
文件
- /usr/lib/portage/bin/ebuild.sh 脚本。
- /usr/lib/portage/bin中的帮助程序应用。
- /etc/portage/make.conf
- 包含构建过程的变量,并覆盖 make.defaults 中的变量。
- /usr/share/portage/config/make.globals
- 包含构建过程的默认变量,您应该编辑/etc/portage/make.conf 而不是此文件。
- /etc/portage/color.map
- 包含自定义颜色的变量。
参见
ebuild(1), make.conf(5), color.map(5)
报告错误
请通过 https://bugs.gentoo.org/ 报告错误。
作者
Achim Gottinger <[email protected]> Mark Guertin <[email protected]> Nicholas Jones <[email protected]> Mike Frysinger <[email protected]> Arfrever Frehtes Taifersar Arahesis <[email protected]> Fabian Groffen <[email protected]>
索引
本文件由 man2html 使用手册页创建。
时间:2024年11月12日,格林威治标准时间03:27:02