非原创,只是汇总一下网上比较杂乱的资料,希望对刚接触的朋友有帮助
USE是Gentoo的特色
gentoo下的软件安装由源代码编译,所以可以自由选择哪些功能需要哪别不需要,很简单的一个例子就是比如你使用的是gnome,那么在安装某个软件时就无需浪费精力去支持kde.
关于USE,官方文档的解释如下
USE标记
内容:
USE标记是什么? 使用USE标记 包特有的USE标记
2.a. USE标记是什么?
USE标记的指导思想
你在安装gentoo(或者是其他发行版,甚至于其他特定操作系统)的时候,你要依据你工作的环境做出选择。服务器跟工作站的组织结构不同,游戏机跟3D工作站也会不一样。
不单只是选择你想要安装的包时如此,选择某一个包需要的特性时同样如此。如果你不需要OpenGL,为什么还要颇费周折的安装OpenGL并在其他包中加 入对OpenGL的支持?如果你不想用KDE,而且软件包没有KDE也能完美运行,为什么还要在编译这些包的时候加入KDE支持?
为了帮用户判断什么需要安装或激活,什么不需要;我们希望用户能用简单的方式设定他们自己的环境。这能促使用户判断他真正需要的东西,并让Portage(我们的包管理系统)做出有用的决定的过程变得简单。
USE标记的设定
我们来具体看看USE标记。每一个标记都是代表对某特定概念的支持和依赖关系信息的关键字。如果你设定了某个USE标记,Portage会明白你选择了支持这个关键字(所代表的概念)。当然这同时也改变了这个包的依赖关系信息。
让我们看一个示例:关键字kde。如果你的USE变量里面没有这个关键字,所有具有可选KDE支持的包在编译时都不会编译KDE支持。所有具有可选KDE依赖关系的包在安装时都不会(做为一个依赖关系而)安装KDE库。如果你设定了kde关键字,这些包在安装时都会编译KDE支持,而且KDE库也会(作为一个依赖关系而)被安装。
通过正确设定关键字,你会得到一个根据你的需要而定制的系统。
有哪些USE标记?
USE标记分两类:全局和局部USE标记。
全局USE标记适用范围是整个系统,可以被许多包使用。这就是大多数人眼里的USE标记。 局部USE标记只被单个包用来做该包特有的决定。
当前可用的全局USE标记列表可以在网上或者本机的/usr/portage/profiles/use.desc文件里找到。
当前可用的局部USE标记列表可以在本机的/usr/portage/profiles/use.local.desc 文件里找到。
2.b. 使用USE标记
声明永久USE标记
希望您已经意识到了USE标记的重要性,现在我们就让你了解怎样声明USE标记。
就像前面提到的,所有USE标记都声明在USE变量里面。为了让用户能方便地查找和选择USE标记,我们提供了一份默认的USE设定。这些设定是我们觉得Gentoo用户通常都要用到的USE标记的集合。这个默认设置在make.defaults文件──你的profile的一部分──里声明。
你的系统使用的profile是符号链接/etc/make.profile所指向的目录。每个profile叠加于某个更大的profile之上,最终的结果是这些profile的并集。初始profile是base profile(/usr/portage/profiles/base)。
让我们看看2004.3 profile的默认设定:
代码 2.1: 2004.3 profile的累积make.defaults USE标记
(这个例子是base,default-linux,default-linux/x86和 default-linux/x86/2004.3的设定的并集)USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77 foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"就像你看到的那样,这个变量已经包括了非常多的关键字。不要通过修改make.defaults文件里的USE变量来满足你的需要:在升级Portage的时候,这个文件将会被破坏(被覆盖)。
要改变这个默认设置,你需要在USE变量里添加或移去关键字。这是通过在/etc/make.conf里定义USE全局变量来实现的。在这个变量里,添加你需要的额外的USE标记,或者移去你不需要的USE标记。后者可通过在标记前面加个负号(“-”)前缀来实现。
例如,要移除对KDE和QT的支持,并添加对ldap的支持,可以在/etc/make.conf 里声明USE如下:
代码 2.2: /etc/make.conf里关于USE设置的一个例子
USE="-kde -qt3 -qt4 ldap"为单个包声明USE标记
如果你想要为一个(或者几个)程序而不是系统范围内声明一个USE标记,你需要创建/etc/portage目录(如果没有这个目录的话),然后编辑/etc/portage/package.use文件。通常这是一个文件,不过它也可以是一个目录;请看man portage以获得更多信息。下面的例子假设package.use是一个文件。
比如说,如果你不想全局的启用berkdb支持,但是你想把它应用到mysql,你可以这样:
代码 2.3: /etc/portage/package.use示例
dev-db/mysql berkdb你当然也可以直接为某一个程序禁用USE标记。比如说,如果你不想要PHP的java支持:
代码 2.4: /etc/portage/package.use第二个示例
dev-php/php -java声明临时USE标记
有时,你只想暂时改变一个USE设置。你可以仅仅把USE变量声明成一个环境变量,而不必两次修改/etc/make.conf。但是要记住,当你重新emerge或者升级这个程序的时候(不管是单独地还是作为系统升级的一部分),你的修改都会丢失!
下面的例子我们将在安装seamonkey的时候暂时性地从USE设置中移去java标记。
代码 2.5: 将USE作为一个环境变量使用
# USE="-java" emerge seamonkey优先级
当然,我们需要一个明确的先后次序来决定何处的USE设定优先级较高。你肯定不希望在定义了USE="-java"之后,因为某个有更高优先级的设定而导致java仍然被使用。USE设定的优先级顺序是(由低到高):
make.defaults里面的USE默认设定 用户在/etc/make.conf里面的USE设定 用户在/etc/portage/package.use里面的USE设定 作为环境变量的USE设定
运行emerge --info可以看到Portage识别的最终的USE设定。它会列出Portage使用的所有相关变量(包括USE变量)。
代码 2.6: 运行emerge --info
# emerge --info
--------------------------------------------------------------------------------------------------
为了更有效的使用USE
我是先在/etc/make.conf下设定总的use
再去/etc/portage/packge.use中针对个别软件设置use
我的设置如下
ceyes@gentoo:~% cat /etc/make.conf 11-11-04 20:39
# These settings were set by the catalyst build script that automatically
# built this stage.
# Please consult /usr/share/portage/config/make.conf.example for a more
# detailed example.
CFLAGS="-O2 -march=native -pipe"
CXXFLAGS="${CFLAGS}"
# WARNING: Changing your CHOST is not something that should be done lightly.
# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.
CHOST="i686-pc-linux-gnu"
LINGUAS="en"
GENTOO_MIRRORS="http://mirrors.163.com/gentoo/"
SYNC="rsync://mirrors.163.com/gentoo-portage"
MAKEOPTS="-j3"
PORTDIR_OVERLAY=/usr/local/portage
USE=" -* alsa apm crypt dbus encode exif ftp gnome grub gtk gtk2 gtkhtml icu iconv imagemagick imlib imlib2 jpeg lame mad mozilla mp3 mp4 mpeg mplayer ncurses nptl oggvorbis opengl pdf pam png psyco python rdesktop readline samba sasl sdl spell tcpd truetype unicode usb X xml xml2 xscreensaver zlib "
ceyes@gentoo:~% cat /etc/portage/package.use 11-11-04 21:05
pp-admin/conky tvim-syntax ruetype audacious -ipv6
net-www/mozilla -java moznocompose moznoirc moznomail
media-gfx/gimp mng svg
app-editors/gvim perl
media-sound/xmms -opengl
media-video/mplayer divx4linux xvid xv theora
net-im/gaim -crypt
=sys-devel/gcc-3.3* java gcj
app-shells/zsh maildir pcre
x11-wm/fvwm stroke
media-video/avidemux xvid
media-libs/libsamplerate sndfile
www-client/chromium -gnome vi zh_CN
app-office/dia -gnome -python
关于每个USE的意义,可以单独去查询
为了方便,参考了一论坛网友的总结
3dfx
添加Xorg下的3dfx显卡支持 (参见: voodoo3)
3dnow
添加AMD处理器的3dnow!多媒体指令集支持
X
添加X11支持
Xaw3d
添加Xaw3d(X athena widgets in 3d)支持。Xaw3d是MIT Athena Widget set for X Windows的增强版本,可以在几乎不修改源代码的情况下为应用程序添加3D视觉效果。
a52
添加用于DVD的ATSC A/52解码支持
aac
添加MPEG-4 AAC音频支持
aalib
添加media-libs/aalib支持 (ASCII-Graphics库) (用于将图形转换成ASCII字符的”ascii艺术”)
accessibility
添加辅助功能支持(方便残疾人使用计算机的技术,比如’at-spi’库)
acl
添加文件访问控制列表支持[参考文档:文件访问控制列表]
acpi
添加A