|
|
USE大概是gentoo配合从源代码编译软件的一个非常有用的功能,我的理解是:USE是系统编译软件的功能模块参考,是软件或者功能的关键字。你可以通过USE设置让gentoo知道你需要什么功能,不需要什么功能,这样系统帮你编译出的软件就是最符合你的要求的,同时避免编译你不需要的功能模块进你的软件,也可以让你的系统代码更干净,运行更高效。
另外一种理解是:不同用途的机器有不同的需求,Gentoo为了使构造出的系统最满足自己的需求,于是有了USE。
或许还比较难理解,举个简单的例子:mplayer是大家比较常用的媒体播放软件,这个软件在gentoo里面可以指定各种功能模块比如alsa dvd real等,如果你不需要real的支持,你可以不用这个use标签,那系统在编译安装这个软件的时候就会去掉相关的功能支持。
规划设置好自己的USE是非常重要的,它不仅影响到编译的效率,还直接影响到系统的运行状态。过多过复杂的USE设置不仅使系统臃肿、烦琐,还可能造成很多莫名其妙的编译失败。而太过精简的USE设置又可能给将来的应用带来麻烦:很多已经安装好的软件需要rebuild才能支持自己需要的功能
一般系统编译软件的时候,会使用软件缺省的设置,配合你机器上的make.conf里的设置来决定使用什么USE参数进行编译。make.conf中的 use设置是你对整个系统内功能模块的一些定义,你可以增加或者删除这些功能模块(不想使用一个功能模块,除了删除这个USE,还可以在前面加上一个减号,比如-ipv6)
当然,就象你了解的那样,make.conf是针对整个系统设置的,安装任何软件都会读取其中的use设置。如果你想某个软件的use设置和系统的整个设置不一样,又不能把make.conf改来改去,可以有两种方法:
1、在特定描述文件中(/etc/portage/package.use)单独指定某个软件的use,比如在文件中增加:
- dev-db/mysql berkdb #前面是和portage树一样结构的软件名称,后面是指定它的use设置;
复制代码
2、emerge的时候用环境变量的方式直接指定use参数,比如:
- # USE="-java" emerge mozilla #关闭mozilla中的java use标签;
复制代码
当然,为了避免混乱,这些use的使用是有优先级别之分的,各优先级别从低到高分别为:
- make.defaults(系统自动设置,不可更改) -> use.defaults(软件自动use参数) -> /etc/make.conf(对整个系统指定,可自己修改) -> /etc/portage/package.use(自己指定某个软件的use,独立于make.conf中的全局设置) -> 环境变量指定的use设置
复制代码
那么一般我们编译软件的时候,有哪些可用参数呢?
1、用emerge查询:
- #emerge --pretend --verbose XXX
复制代码
2、用gentoolkit的equery查询:
有时候我们因为某种原因增加了一个use,为了使系统中所有支持这个use的软件都开启这项功能,我们可以用如下命令:
- #emerge --update --deep --newuse world
复制代码
这样你系统内以前安装的软件就可以增加到新增加的use设置的功能了(比如你关闭了ipv6标签,要使所有已安装的支持ipv6功能的软件都去掉这项功能,就可以用这个命令应用设置)。但要注意的是这个命令可能会让很多相关软件rebuild,耗费时间可能会很长。
至于系统内所有可用的use标签的作用,找到一个中文的参考,有兴趣认真读一下:
参考文献:
繁体中文手册中关于use的说明:
http://www.gentoo.org/doc/zh_tw/ ... l?part=2&chap=2
wiki.gentoo.tw上面的USE说明:
http://wiki.gentoo.tw/mediawiki/index.php/Gentoo_USE |
|