GLEP 83:EAPI 弃用
作者 | Ulrich Müller <ulm@gentoo.org> |
---|---|
类型 | 信息 |
状态 | 活跃 |
版本 | 2 |
创建 | 2022-06-30 |
最后修改 | 2024-09-08 |
发布历史 | 2022-07-11, 2022-07-31, 2024-08-30, 2024-09-01 |
GLEP 源代码 | glep-0083.rst |
摘要
介绍 EAPI 弃用和禁止的标准化标准。
动机
到目前为止,旧的 EAPI 是由 Gentoo 委员会以临时的方式弃用的。没有使用固定的标准,导致在批准更新的 EAPI 后,弃用时间不可预测。弃用和禁止的标准化标准将使 EAPI 的生命周期更可预测。
规范
弃用的 EAPI 对于用户系统升级路径不再是必需的。不建议使用它,pkgcheck 等工具将对此发出警告 [1].
被禁止的 EAPI 不得再使用,无论是用于新的 ebuild,还是用于更新现有的 ebuild [2].
当一个或多个更新的委员会批准的 EAPI 被 Portage 的稳定版本支持时,Gentoo 委员会将弃用 EAPI,即
- 两个更新的 EAPI,其中一个至少支持 24 个月,或者
- 一个更新的 EAPI,至少支持 48 个月。
Gentoo 委员会将在以下情况下禁止一个弃用的 EAPI
- 距离其弃用已过去 24 个月,并且
- 它被 Gentoo 存储库中不到 5% 的 ebuild 使用。
配置文件中使用的 EAPI 不在本文档的范围之内。
基本原理
EAPI 弃用的时间安排是不同因素之间权衡的结果。一方面,应该限制活动使用的 EAPI 的总数;这将防止新开发人员和贡献者的学习曲线变得过于陡峭,并将有助于减少代码复杂性,例如在 eclass 中。
另一方面,为一个稳定的系统提供了一年的升级路径,并且对超过一年已过时的系统提供有限的支持 [3]. 因此,在此期间仍然需要以前的 EAPI。在弃用之前选择了 24 个月的时间段,这超过了所需的最低时间,并且将允许项目支持更长的升级路径。
在弃用之前要求两个更新的 EAPI 将允许否则很少更新的 ebuild 立即升级到下一个 EAPI。但是,EAPI 的弃用不应该永远推迟,因此即使在这种情况下只存在一个更新的 EAPI,它也可以在更长的等待期(48 个月)之后生效。
弃用和禁止之间 24 个月的延迟将给 ebuild 作者足够的时间进行更新。这对于覆盖层和下游发行版尤其重要。禁止 EAPI 的另一个要求是,不到 5% 的 ebuild 使用该 EAPI。定义此要求是为了帮助保持 ebuild 更新的数量(以及请求它们的 bug 报告)易于管理,因为禁止的 EAPI 是更新 ebuild 的充分理由。
示例
根据此策略,EAPI 7 将在以下任一情况下被弃用
- Portage 已经支持 EAPI 8 24 个月,并且支持另一个更晚的 EAPI(例如 EAPI 9),或者
- Portage 已经支持 EAPI 8 48 个月。
Portage 自 2021-07-05 起开始支持 EAPI 8。第一个条件将在 2023-07-05 之后实现,一旦 EAPI 9 也得到支持。第二个条件将在 2025-07-05 之后实现。
向后兼容性
下表比较了实际的弃用和禁止日期 [4] 与此 GLEP 中提出的标准将产生的日期(“新日期”)。
EAPI | Portage | Gentoo 存储库 | 弃用 | 差异 | 禁止 | 差异 | ||
---|---|---|---|---|---|---|---|---|
稳定 | 使用率 < 5 % | 实际日期 | 新日期 | 月 | 实际日期 | 新日期 | 月 | |
0 | 2005-12-26 | 2017-02-28 | 2014-02-25 | 2009-12-11 | -50 | 2016-01-10 | 2017-02-28 | +14 |
1 | 2007-12-11 | 2009-10-25 | 2013-04-09 | 2011-01-08 | -27 | 2014-03-11 | 2013-01-08 | -14 |
2 | 2009-01-08 | 2015-03-27 | 2013-04-09 | 2012-03-08 | -13 | 2014-03-11 | 2015-03-27 | +12 |
3 | 2010-03-08 | 2015-01-16 | 2014-02-25 | 2013-03-17 | -11 | 2016-01-10 | 2015-03-17 | -10 |
4 | 2011-03-17 | 2018-01-11 | 2015-10-11 | 2016-01-17 | +3 | 2018-04-08 | 2018-01-17 | -3 |
5 | 2012-12-11 | 2021-06-15 | 2018-05-13 | 2018-06-27 | +1 | 2021-08-08 | 2021-06-15 | -2 |
6 | 2016-01-17 | 2022-11-06 [*] | 2021-07-11 | 2021-07-05 | 0 | 2023-07-05 | ||
7 | 2018-06-27 | |||||||
8 | 2021-07-05 |
[*] | 外推日期,通过拟合 2021-01-01 到 2022-07-31 之间的数据获得,使用指数函数。 |
参考资料
[1] | "EAPI 弃用",Gentoo 委员会会议摘要 2013-04-09 (https://projects.gentoo.org/council/meeting-logs/20130409-summary.txt)。注意:原始引述中说的是“Repoman”而不是“pkgcheck”。 |
[2] | "禁止 EAPI 1 和 2 应该扩展到更新现有 ebuild 中的 EAPI",Gentoo 委员会会议摘要 2014-03-11 (https://projects.gentoo.org/council/meeting-logs/20140311-summary.txt) |
[3] | "旧系统的升级路径",Gentoo 委员会会议摘要 2009-11-09 (https://projects.gentoo.org/council/meeting-logs/20091109-summary.txt) |
[4] | Gentoo 软件包管理器规范项目 (https://wiki.gentoo.org/wiki/Project:Package_Manager_Specification#EAPI_life_cycle) |
版权
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。要查看此许可协议的副本,请访问 https://creativecommons.org/licenses/by-sa/4.0/.