GLEP 29:USE 标记组
作者 | Ciaran McCreesh <ciaranm@gentoo.org> |
---|---|
类型 | 标准跟踪 |
状态 | 已撤回 |
版本 | 1 |
创建日期 | 2004-08-19 |
最后修改日期 | 2019-11-07 |
发布历史 | 2004-08-21, 2004-10-18, 2004-10-25, 2005-07-24 |
GLEP 源码 | glep-0029.rst |
状态
应作者要求撤回。
摘要
目前,USE 标记必须逐个选择,这使得为机器的角色适当地设置 make.conf 变得非常耗时。
动机
许多软件包对其他软件包提供了可选支持(例如,Vim 文本编辑器可以选择性地支持 perl、python 和 ruby 解释器)。在 Gentoo 中,用户可以使用 USE 标记选择这些可选依赖项。这允许构建适合给定环境的系统——例如,服务器通常不应该具有 X11 服务器或声音支持,而这两个功能在大多数桌面系统上都是理想的。
由于有数百个 USE 标记可用,因此决定启用哪些 USE 标记并禁用哪些 USE 标记可能需要很长时间。尽管默认的 USE 标记设置是合理的,但它们显然不适用于每个系统。此外,使用 "-*" 禁用所有默认 USE 标记可能存在风险,因为某些 USE 标记通常不应关闭。此 GLEP 提出了一种将 USE 标记分组以简化选择并使 USE="-*" 不那么危险的机制。
规范
组规范
一个组应包含一个或多个标记。每个标记可以是 USE 标记、-USE 标记、对另一个组的引用或对另一个组的否定引用。
这些组在${PORTDIR}/profiles/use.groups中定义。建议仅对组使用大写名称,以使它们在视觉上与普通 USE 标记(几乎所有 USE 标记都小写)区分开来,尽管这不应该以编程方式强制执行。该文件格式应类似于现有的 use.* 文件。在以下内容中,SOME_GROUP和OTHER_GROUP是组名,而flag1到flag5是 USE 标记名
SOME_GROUP flag1 flag2 flag3 OTHER_GROUP flag2 flag4
组可以递归地包含其他组。为了与 GLEP 23 [1] 保持一致,建议在组名之前加上“at”符号 (@)。
GROUP1 flag1 GROUP2 flag2 flag3 @GROUP1 GROUP3 flag4 GROUP4 @GROUP2 @GROUP3 flag5
同一个标记最终可能在某个特定组中出现多次。
GROUP1 flag1 flag2 GROUP2 flag2 flag3 GROUP3 @GROUP1 @GROUP2 flag3 flag4
与类似文件一样,可以包含注释。以井号 (#) 开头的行是注释。
# This is a comment FOO bar baz fnord
用户可以使用/etc/portage/use.groups创建自己的组。如果存在重复项,此文件将覆盖配置文件设置。
组应该可以指定 -use 标记,尽管由于下面讨论的原因,此功能不应普遍使用。语法相同。
# This group contains two negative flags GROUP1 flag1 -flag2 -flag3 flag4
组不能包含循环组引用。以下示例是非法的。
# Illegal circular references GROUP1 @GROUP2 foo GROUP2 @GROUP1 bar
组描述
组应与其关联的文本描述相同,就像 USE 标记一样。文件${PORTDIR}/profiles/use.groups.desc包含这些描述。
# This is a comment DESKTOP Flags which are appropriate for most desktop systems RECOMMENDED Flags which should be enabled on almost all systems
使用组
组可以在/etc/make.conf, /etc/portage/package.use以及其他通常指定 USE 标记的地方使用。它们不能在IUSE` 中使用。和以前一样,@ 符号用于指示正在引用组。例如,用于 KDE 桌面系统的 ``make.conf可能类似于
USE="@DESKTOP @KDE perl alsa dvd"
组前面可以加 - 符号以反转其内容(即,所有“启用”use 标记都变成 -标记,所有 -标记都变成启用标记)。请注意,此功能可能会造成混淆(请参见下文)。示例用法
# We have the following groups defined... GROUP1 foo bar GROUP2 -bar baz -fnord GROUP3 @GROUP1 -@GROUP2 -bar foo GROUP4 -foo -bar # And the following... USE="-@GROUP3 @GROUP4 bar" # which resolves to... USE="-@GROUP1 @GROUP2 bar -foo -foo -bar bar" USE="-foo -bar bar -baz fnord bar -foo -foo -bar bar" USE="-baz fnord -foo bar"
-flags 和 -@GROUPS 的问题
此 GLEP 的早期草案不允许 -use 标记或 -@GROUPS。但是,由于收到诸如“我们不应该仅仅因为某些用户不理解而禁止功能”(例如,[3])之类的反馈,现在允许但建议避免使用这些功能。
这些问题最好通过示例来说明。假设我们定义了以下组:
KDE X kde qt GNOME X gtk gtk2 gnome
想要 KDE 桌面但没有 GNOME 的用户可以执行以下操作:
USE="@KDE -@GNOME"
但是,这不会产生预期的效果——XUSE 标记最终将被禁用。
类似地,如果 -use 标记使用不当,可能会导致很多混乱。例如,如果 KDE 组关闭了 GNOME 相关内容,而 GNOME 组关闭了 KDE 相关内容
KDE X kde qt -gtk -gnome GNOME X gtk gtk2 gnome -kde -qt
并且用户希望在一个系统上同时使用 KDE 和 GNOME,因此 USE 标记如下:
USE="@KDE @GNOME"
他们最终将得到
USE="X kde qt -gtk -gnome X gtk gtk2 gnome -kde -qt"
简化为
USE="X gtk gtk2 gnome -kde -qt"
这显然不是预期的效果。
添加新组
要创建的实际组超出了此 GLEP 的范围,此处包含的任何组名都应仅视为示例。根据现有的新全局 USE 标记策略,应在 gentoo-dev 邮件列表中讨论创建新组和更改组标记。
特别是,在实施任何涉及 -flags 的更改之前,必须进行彻底的讨论。
基本原理
USE 组将简化为系统选择一组合适的 USE 标记。
参考实现
待办事项
向后兼容性
用户无需进行任何更改即可保留其当前设置。未运行支持组的 Portage 版本的用户可以继续使用当前语法,而不会产生任何副作用。
一些与 make.conf 和/或 USE 标记一起使用的工具(例如,ufed)将需要更新以理解新的组语法。
Gentoo 网站上目前有一个可用的 USE 标记动态列表 [2]。为了保持一致性,将需要为 USE 组提供类似的列表。
参考文献
[1] | GLEP 23:Portage 处理 ACCEPT_LICENSE (https://gentoolinux.cn/glep/glep-0023.html) |
[2] | https://gentoolinux.cn/dyn/use-index.xml |
[3] | gentoo-dev 邮件列表上的 GLEP 29 讨论,Message-ID 20041018225119.GK26288@mail.lieber.org (https://archives.gentoo.org/gentoo-dev/message/aba918fc38f72ff332de08b5e01e20e5) |
版权
此作品根据知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。要查看此许可协议的副本,请访问 https://creativecommons.org/licenses/by-sa/3.0/。
vim: set tw=74