Ebuild 文件格式
Ebuild 是一个在特殊环境中执行的 bash
脚本。文件应为扩展名为 .ebuild
的简单文本文件。
文件命名规则
Ebuild 应命名为 name-version.ebuild
的格式。
名称部分应仅包含小写无重音字母、数字 0-9、连字符、下划线和加号字符。强烈建议不要使用大写字符,但技术上有效。
名称不能以连字符或加号开头,也不能以连字符结尾,后跟任何可能被误认为版本的字符。
版本部分比较复杂。它由一个或多个数字组成,数字之间用句点(或句号、点或小数点)字符分隔(例如 1.2.3
、20050108
)。最后一个数字后面可以跟一个字母(例如 1.2b
)。此字母不应用于指示“测试版”状态——Portage 将 1.2b
视为比 1.2
或 1.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
是可以接受的替代方案。
Ebuild 头部
提交到树中的所有 Ebuild 应在开头立即包含两行头部,分别指示版权信息,后跟一个空行。这必须是 Gentoo 存储库顶级目录中 header.txt
内容的完全副本。
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
$Id$
或 $Header$
关键字。在转换为 Git 后,根据 2017 年 2 月 28 日 Gentoo 理事会的决定,该行已废除,并且不得再添加。缩进和空白
Ebuild 中的缩进必须使用制表符,每个缩进级别一个制表符。每个制表符代表四个空格。制表符仅用于缩进,在字符串内部不应使用。
避免尾随空格:如果您提交的 Ebuild 包含尾随或前导空格(用于缩进的空格而不是制表符),pkgcheck
将会警告您。
在可能的情况下,尽量使行宽不超过 80 个位置。“位置”通常与字符相同——制表符为四个位置宽,而多字节字符仅为一个位置宽。
字符集
所有 Ebuild(以及 Eclass、元数据文件等)都必须使用 UTF-8 字符集。有关详细信息,请参阅 GLEP 31。