Handbook:Parts/Working/USE/zh-cn

USE标志的指导思想
你在安装gentoo（或者是其他发行版，甚至于其他特定操作系统）的时候，你要依据你工作的环境做出选择. 服务器跟工作站的组织结构不同，游戏机跟3D工作站也会不一样.

不单只是选择你想要安装的包时如此，选择某一个包需要的特性时同样如此. 如果你不需要OpenGL，为什么还要花费时间安装OpenGL并在其他包中加入对OpenGL的支持？如果你不用KDE，而且软件包没有KDE也能完美运行，为什么还要在编译这些包的时候加入KDE支持？

为了帮用户判断什么需要安装或激活，什么不需要；我们希望用户能用简单的方式设定他们自己的环境. 这能促使用户判断他真正需要的东西，并让Portage做出有用的决定的过程变得简单.

USE标志的设定
我们来具体看看USE标志. 每一个标志都是代表对某特定概念的支持和依赖关系信息的关键字. 如果你设定了某个USE标志，Portage会明白你选择了支持这个选项. 当然这同时也改变了这个包的依赖关系信息.

让我们看一个特殊示例：关键字. 如果你的 USE 变量里面没有这个关键字，所有具有可选KDE支持的包在编译时都 不会 编译KDE支持. 所有具有可选KDE依赖关系的包在安装时都 不会 （做为一个依赖关系而）安装KDE库. 如果你设定了kde关键字，这些包在安装时都 会 编译KDE支持，而且KDE库也 会 （作为一个依赖关系而）被安装.

通过正确设定关键字，你会得到一个根据你的需要而定制的系统.

有哪些USE标志
USE标志分两类：全局和局部USE标志.


 * 全局USE标志适用范围是整个系统，可以被许多包使用. 这就是大多数人眼里的USE标志. 当前可用的全局USE标志列表可以在网上 main site 或者本机的 文件里找到.
 * 局部USE标志只被单个包用来做该包特有的决定. 当前可用的局部USE标志列表可以在网上 main site当前可用的局部USE标志列表可以在本机的文件里找到.

声明永久USE标志
就像前面提到的，所有USE标志都声明在 USE 变量里面. 为了让用户能方便地查找和选择USE标志，我们提供了一份默认的USE设定. 这些设定是我们觉得Gentoo用户通常都要用到的USE标志的集合. 这个默认设置在 文件──你的profile声明.

你的系统使用的profile是符号链接 所指向的目录. 每个profile叠加于某个更大的profile之上，最终的结果是这些profile的并集. 初始profile是base profile.

要查看当前正在使用的USE标志（全部），请使用 ：

As can be seen, this variable already contains quite a lot of keywords. Do not alter any file to tailor the USE variable to personal needs though: changes in these files will be undone when the Gentoo repository is updated!

要改变这个默认设置，你需要在 USE 变量里添加或移去关键字. 这是通过在里定义USE全局变量来实现的. 在这个变量里，添加你需要的额外的USE标志，或者移去你不需要的USE标志. 后者可通过在标记前面加个负号 .前缀来实现.

For instance, to remove support for KDE and Qt but add support for LDAP, the following USE can be defined in :

为单个包声明USE标志
Sometimes users want to declare a certain USE flag for one (or a couple) of applications but not system-wide. To accomplish this, edit. is typically a single file, however it can also be a directory filled with children files; see the tip below and then for more information on how to use this convention. The following examples assume is a single file.

For instance, to only have Blu-ray support for the VLC media player package:

Similarly it is possible to explicitly disable USE flags for a certain application. For instance, to disable bzip2 support in PHP (but have it for all other packages through the USE flag declaration in ):

声明临时USE标志
有时，你只想暂时改变一个USE设置. 你可以仅仅把 USE 变量声明成一个环境变量，而不必两次修改. 但是要记住，当你重新emerge或者升级这个程序的时候（不管是单独地还是作为系统升级的一部分），你的修改会被重置.

The following example temporarily removes the  value from the USE variable during the installation of SeaMonkey:

优先级
当然，在什么设置优先于USE设置有一定的优先级. USE设置的优先级，按优先级排序（第一优先级最低）：
 * 1)  里面的USE默认设定
 * 2) 用户在里面的USE默认设定
 * 3) 用户在 里面的USE默认设定
 * 4) 用户作为环境变量的USE设定

运行 可以看到Portage识别的最终的USE设定. 它会列出Portage使用的所有相关变量（包括 USE 变量）.

在整个系统上应用新的USE标志
如果你已经修改了你的USE标志，而且你想用新的USE标志更新你的系统，可以使用的 选项：

然后运行Portage的depclean来移除已经安装到你的"旧"系统里但是在新USE标志中被废除的条件依赖关系.

depclean完成之后，运行来重新构建那些动态链接到由可能已经删除的包提供的公共对象的程序. 是包的一部分，不要忘了先安装它.

这些都完成之后，你的系统就已经应用上了新的USE标志的设定.

查看可用USE标志
让我们以seamonkey来作例子，看看它接收什么USE标志. 我们可以以 和 为选项执行 来查看：

并不是做这件事的唯一工具. 事实上，我们有一个专门的包信息工具叫，它属于.

现在以为参数执行 来查看指定包的USE标志. 例如：gnumeric包：

满足 REQUIRED_USE
一些ebuild需要或禁止USE标志的某些组合才能正常工作. 这通过放置在 REQUIRED_USE ，用一组条件来表示. 此条件确保所有功能和依赖性都已完成，并且构建将成功并按预期执行. 如果任何一个不符合，emerge会提醒你，并要求你解决这个问题.

下面是 REQUIRED_USE 的一个例子：