Ebuild 文件格式

Ebuild 是一个在特殊环境中执行的 bash 脚本。文件应为扩展名为 .ebuild 的简单文本文件。

文件命名规则

Ebuild 应命名为 name-version.ebuild 的格式。

名称部分应仅包含小写无重音字母、数字 0-9、连字符、下划线和加号字符。强烈建议不要使用大写字符,但技术上有效。

名称不能以连字符或加号开头,也不能以连字符结尾,后跟任何可能被误认为版本的字符。

版本部分比较复杂。它由一个或多个数字组成,数字之间用句点(或句号、点或小数点)字符分隔(例如 1.2.320050108)。最后一个数字后面可以跟一个字母(例如 1.2b)。此字母不应用于指示“测试版”状态——Portage 将 1.2b 视为比 1.21.2a 更晚的版本。

版本可以有一个后缀来指示发布类型。在下表中,Portage 认为“最低”版本排在最前面。

后缀 含义
_alpha Alpha 版本(最早)
_beta Beta 版本
_pre 预发布版本
_rc 候选发布版本
(无后缀) 正式版本
_p 补丁版本

这些后缀中的任何一个后面都可以跟一个无符号整数。

这些后缀可以链接在一起,并且将被迭代处理。举几个例子(以下列表从最低版本到最高版本)

  • foo-1.0.0_alpha_pre
  • foo-1.0.0_alpha_rc1
  • foo-1.0.0_beta_pre
  • foo-1.0.0_beta_p1

版本的任何整数部分都不能超过 18 位数字。

最后,版本可以采用 -r1 格式的 Gentoo 修订版本号。最初的 Gentoo 版本不应有修订版后缀,第一次修订版应为 -r1,第二次为 -r2,依此类推。请参阅 Ebuild 修订版本。修订版本号与补丁版本号的区别在于,修订版本号是由 Gentoo 开发人员更改的,而补丁版本号是由上游发布的新版本(快照除外,见下文)。

总的来说,这给了我们一个像 libfoo-1.2.5b_pre5-r2.ebuild 这样的文件名。

EAPI 7 版本命令 可用于操作和提取 ebuild 版本组件。

版本的正式规范 格式 和比较 算法 可以在 PMS 中找到。

快照和实时 Ebuild

在打包源代码库的快照时,有两种常用的格式。第一种将快照视为对先前版本的补丁,因此 ebuild 版本采用 $(last-released-version)_pYYYYMMDD 的格式。或者,快照可以被视为即将发布版本的预发布版本,通常在预期发布但尚未发布时使用。此格式为 $(upcoming-version)_preYYYYMMDD。

对于所谓的实时 Ebuild(请参阅 src_unpack 操作)的策略是使用 9999 作为版本(或作为最后一个版本组件)。对于版本超过 4 位数字(例如 YYYYMMDD 格式)的软件包,99999999 是可以接受的替代方案。

二进制软件包

Gentoo 通常从源代码构建其软件包。例外情况是,可以提供二进制软件包(例如,如果上游未提供源代码)。此类软件包仍应遵循正常的命名约定,并且不需要任何特殊后缀。

如果除了基于开源的等效软件包之外还提供了二进制软件包,则如果需要区分,则前者的名称应以 -bin 为后缀。例如,从源代码构建时需要大量资源(如 CPU 时间或内存)的软件包。

Ebuild 头部

提交到树中的所有 Ebuild 应在开头立即包含两行头部,分别指示版权信息,后跟一个空行。这必须是 Gentoo 存储库顶级目录中 header.txt 内容的完全副本。

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

缩进和空白

Ebuild 中的缩进必须使用制表符,每个缩进级别一个制表符。每个制表符代表四个空格。制表符仅用于缩进,在字符串内部不应使用。

避免尾随空格:如果您提交的 Ebuild 包含尾随或前导空格(用于缩进的空格而不是制表符),pkgcheck 将会警告您。

在可能的情况下,尽量使行宽不超过 80 个位置。“位置”通常与字符相同——制表符为四个位置宽,而多字节字符仅为一个位置宽。

字符集

所有 Ebuild(以及 Eclass、元数据文件等)都必须使用 UTF-8 字符集。有关详细信息,请参阅 GLEP 31