[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]
1.a. USE参数是什么?
USE参数背后的故事
你安装Gentoo(或者其他的发行版,甚至或者是其他的操作系统)时,你根据你所工作的环境来作出选择。服务器的安装就同工作站的安装不一样,游戏机的安装也同3D工作站的不一样。
这不仅对于你要选择安装什么软件如此,也对安装某一软件需要什么特性也如此。如果你不需要OpenGL,为什么就需要安装OpenGL和将OpenGL支持编译进你的许多的软件包?如果你不使用KDE,如果软件不需要,为什么要编译进KDE的支持?
为帮助用户决定什么需要安装/激活,什么不需要,我们需要用户可以用一种简单的方法来设定他/她的环境。这使得用户可以决定他们真正需要什么,简便Portage(我们的管理系统)的过程,方便作出有用的选择。
一个USE参数的定义
输入USE参数。这样的一个参数是概括某一概念的支持和依赖性信息的关键词。如果你定义一个特定的USE参数,Portage将会知道你要添加对于选定关键词的支持。当然,这也改变了一个软件包的依赖性信息。
让我们来看一看一个特定的例子:关键词kde。如果在你的USE变量中没有这个关键词,所有的有对KDE可选支持的软件包将在编译时不带上KDE支持。所有带有可选KDE支持的软件包都不会安装KDE的库(以依赖性方式)。如果你定义了关键词kde,那么这些软件包将会编译进KDE的支持,并且KDE的库文件也会以依赖性方式安装。
通过准确的定义这些关键词,你将会得到根据你的需要度身定做的系统。
USE参数用在哪里?
目前有两种USE参数:全局的和局部的USE参数。
目前已有的全局的USE参数可以在在线或者在本地的/usr/portage/profiles/use.desc中找到。一个简短的摘要如下(非常不完全):
代码 1: 已有的USE参数的简短片段 |
gtk - 添加对x11-libs/gtk+的支持(The GIMP Tookit的简称) gtk2 - 使用gtk+-2.0.0而不是gtk+-1.2,以防一个软件包同时需要两者的情况 gtkhtml - 添加对gnome-extra/gtkhtml的支持 guile - 添加对dev-util/guile的支持(Scheme的解释器) icc - 如果软件包支持,使用Intel的C++编译器 icc-pgo - 使用icc时,启用PGO数据生成或使用 imap - 添加对IMAP的支持 |
1.b. 使用USE参数
声明永久的USE参数
我们希望你能意识到USE参数的重要性,我们将告诉你怎样声明USE参数。
就同前面所提起的,所有的USE参数是在USE变量中声明的。为方便用户搜索和选择USE参数,我们已经提供了一个默认的USE设置。这个设置是我们认为Gentoo用户通常会使用到的USE参数的集合。这个默认的设置是在/etc/make.profile/make.defaults文件中声明的。让我们来看看这个默认设置:
代码 2: /etc/make.profile/make.defaults中用于x86系统的USE变量 |
USE="x86 oss apm arts avi berkdb crypt cups encode foomaticdb gdbm gif gpm
gtk gtk2 imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses
nls oggvorbis opengl pam pdflib png python qt quicktime readline sdl
slang spell ssl svga tcpd truetype X xml2 xmms xv zlib"
|
就同你看到的,这个变量已经包含了很多的关键词。千万不要根据你的需要改变/etc/make.profile/make.defaults的USE变量:当你更新Portage时将会覆盖这个修改。
要改变默认的设置,你需要对USE变量添加或者删减关键词。这个是在/etc/make.conf文件中全局定义USE变量完成的。在这个变量中,你添加你需要的USE参数,或者删减你不需要的USE参数。后者通过在关键词的前面加上一个负号("-")的前缀即可。
比如说,删掉对KDE和QT的支持,并添加对ldap的支持,下面的USE变量可以在/etc/make.conf中定义:
代码 3: /etc/make.conf中一个USE变量设置的例子 |
USE="-kde -qt ldap" |
声明临时的USE参数
有时候你需要设定只使用一次的USE设置。你可以只以环境变量的形式声明这个USE变量,而不需要编辑/etc/make.conf两次(修改和恢复)。
作为一个例子,我们将在mozilla的安装过程中暂时从USE设置中去掉java。
注释: 有关emerge命令将会在Portage和软件进行更彻底的讨论。 |
代码 4: 以环境变量的形式使用USE |
# USE="-java" emerge mozilla
|
继承USE参数
一些软件不仅仅服从USE参数,也提供USE参数。当你安装这样的一个软件包时,它所提供的USE参数将会添加到你的USE设定中。查看/etc/make.profile/use.defaults看看提供USE参数的软件包的列表:
代码 5: /etc/make.profile/use.defaults的一个片段 |
gnome gnome-base/gnome gtk x11-libs/gtk+ qt x11-libs/qt kde kde-base/kdebase motif x11-libs/openmotif |
优先权
当然这里有一个优先权的问题,那个设置有对USE设置有优先权。你不需要去声明USE="-java"仅仅是看到java通过某种方式声明了。USE设置的优先权如下(在前的优先权较低):
运行emerge info来查看最后用于Portage的USE设置。这会列出所有和Portage相关连的变量(包含USE变量)。
代码 6: 运行emerge info |
# emerge info
|
调整你的整个系统到新的USE参数
如果你已改变你的USE参数,并想更新你的整个系统都使用这个新的USE设置,你可以尝试用下面的步骤完成。注意,这些步骤将会花很长的是件来完成,并且这个工作将会调整Portage以使得动作更快和自动完成。
首先,使用新的USE参数重新编译你的整个系统:
代码 7: 重新编译你的整个系统 |
# emerge --emptytree world
|
然后,运行Portage的depclean来去掉旧系统已有但被新的USE参数废弃的可选依赖性。
警告: 运行emerge depclean是一个危险的操作,处理时要小心。反复检查废弃的软件包的列表,以确认它不会删掉你需要的软件包。在下面的例子中,我们添加-p参数,切换到只列出这些软件包,而没有删掉它们。 |
代码 8: 删掉废弃的软件包 |
# emerge -p depclean
|
当depclean完成后,你的系统就是在使用新的USE参数设置。
1.c. 软件包所特定的USE参数
查看所有的USE参数
在下一章Portage和软件中,我们将会解释到怎样管理你安装的软件和怎样使用emerge。但是,我们将会通过向你展示如何查看一个软件包使用到的USE参数来给个emerge的入门。
让我们以mozilla举个例子:它将会遵守哪些USE参数呢?我们使用emerge并带上--pretend(假装要做)和--verbose(获得更多信息)选项找到:
代码 9: 查看要用到的USE参数 |
# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:
Calculating dependencies ...done!
[ebuild N ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 -gtk2 +ssl +ldap
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft
|
emerge并不是这个工作的唯一工具。实际上,我们有一个致力于提供软件包信息的名叫etcat(在gentookit软件包里)的工具。首先,安装gentookit:
代码 10: 安装gentoolkit |
# emerge --usepkg gentoolkit
|
然后运行etcat,并带上uses参数,来查看一个特定软件包的USE参数。比如说,对于gnumeric软件包:
代码 11: 使用etcat查看USE参数 |
# etcat uses gnumeric [ Colour Code : set unset ] [ Legend : (U) Col 1 - Current USE flags ] [ : (I) Col 2 - Installed With USE flags ] U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ] - - libgda : Adds GNU Data Access (CORBA wrapper) support for gnumeric - - gnomedb : unknown + + python : Adds support/bindings for the Python language + + bonobo : Adds support for gnome-base/bonobo (Gnome CORBA interfaces) |
[ << ] [ < ] [ 手册主页 ] [ > ] [ >> ]