GLEP 52:RESTRICT=unattended
作者 | Marius Mauch <genone@gentoo.org> |
---|---|
类型 | 标准跟踪 |
状态 | 已撤回 |
版本 | 1 |
创建日期 | 2006-10-13 |
最后修改日期 | 2014-01-23 |
发布历史 | 2006-10-14 |
GLEP 源码 | glep-0052.rst |
摘要
本 GLEP 提出在 ebuild 中为 RESTRICT 元数据变量添加一个新值,以指示某个 ebuild 是否需要用户的交互。
动机
当前树中某些 ebuild 需要用户执行某些操作才能继续进行。一个常见的例子是,某些 ebuild 需要物理介质(CD/DVD-ROM)来获取其 distfile,而不是从网络上获取。但是,ebuild 应该是非交互式的,因此这种行为虽然有时是必要的,但违反了现有的策略。为了解决这种情况,应该添加一个新的 RESTRICT 值,以便根据元数据过滤这些 ebuild,并在构建过程中提前告知用户(在显示依赖关系图时)某个软件包将需要他们的关注。
规范
Portage(以及扩展的其他软件包管理器)将支持 RESTRICT 元数据变量的一个新值,称为unattended。软件包管理器和使用其 API 的工具可以使用此值过滤需要交互操作的软件包(例如,在自动化构建环境中屏蔽它们)。软件包管理器如何准确地对该新标志的存在做出反应超出了本规范的范围,但建议在相关时向用户指示其存在。
如果已知某个 ebuild 在构建过程中_通常_需要用户关注,则应在该 ebuild 中使用此新设置。如果某个 ebuild 只是存在有限的风险变成交互式(例如使用built_with_use函数),则不应对其进行限制。请注意,此处仅涵盖软件包安装,无法使用此功能指示软件包删除(在 pkg_prerm 和 pkg_postrm 中)的交互性。
基本原理
新的 RESTRICT=unattended 元数据设置将为我们带来以下好处:
- 使自动化构建环境能够屏蔽交互式 ebuild
- 基于元数据搜索交互式 ebuild(优于 grep)
- 减少因挂起构建过程而导致的用户沮丧
本提案不会更改关于交互式 ebuild 的现有策略(ebuild 应尽可能保持非交互式),它仅仅说明了一种识别它们的方法。
向后兼容性
严格来说,此扩展需要 EAPI 版本升级,但是由于现有的 Portage 会忽略未知的 RESTRICT 值,因此在不进行版本升级的情况下引入它不会导致任何实际的破坏。
鸣谢
感谢以下人员对本 GLEP 的意见或相关贡献(即使他们可能并不知道):Alec Warner、Zac Medico、Simon Stelling
版权
此作品根据知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。要查看此许可协议的副本,请访问 https://creativecommons.org/licenses/by-sa/3.0/。