LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2543|回复: 35

我对USE的看法

[复制链接]
发表于 2006-8-25 12:07:04 | 显示全部楼层 |阅读模式
其实现在的USE含义有些歧义,我觉得应该分开来定义。比如我现在装的wm是xfce,而且只有这一个,那么我的make.conf文件里的USE是有"-kde -qt"这个字眼的(其实是我在修改make.conf的时候想到我不会用kde当桌面,所以设置这个USE的)。但我不用kde这个wm,并不代表我不用所有和kde沾边的软件啊,比如我的论坛终端就是qterm,而这个软件是需要用到Qt库的,也就是kde的基础图形库。这样就有一个问题,use里是-kde -qt的,但装qterm的时候还得装qt相关的lib,时间一长,就形成了这种结果:我的use是-qt的,但我的系统里有一大堆和qt有关的软件。

所以,我觉得use有两重含义,需要区别这两重含义,其一是是否加入对XXX的支持,其二是是否安装依赖XXX的软件。

我们现在意义上的use都指第一种功能。

我觉得可以分别定义两个变量,指代上述两种含义。比如说叫SupportUse,和DependenceUse,
对于我自己的情况,就可以这样定义:
SupportUse=“-kde”
DependenceUse="kde"
即:
我在安装某个软件的时候,如果该软件的configure有--enable-kde之类的选项,那么都禁用该选项,如果该软件依赖qt,那么就正常安装,先装qtlib,然后装该软件。

这样下来,含义就比较清楚了。
不知大家怎么认为
发表于 2006-8-25 12:10:55 | 显示全部楼层
同样的USE对应到不同软件包可能是完全不同的东西,可能是一个编译选项,也有可能只是几个相关的patch。

USE本身就是为了方便而定的,方便让用户能“顾名思义”,并不是一个严格的设定。再说一个软件可能有几十个编译开关,USE只是选了其中最常用的一些罢了。
回复 支持 反对

使用道具 举报

发表于 2006-8-25 12:34:18 | 显示全部楼层
需要用qt库的话就别-qt,只-kde就行了啊
回复 支持 反对

使用道具 举报

发表于 2006-8-25 14:00:26 | 显示全部楼层
我和楼主也有同感,就拿楼主提到的qt的例子来说,我也是有同样的想不通,但我认为问题不在“USE”有歧义或者说有两重含义,而是在于这个“支持”是一个什么样的概念和把握尺度。

比如说opera依赖qt库,而qt库包含有libA、libB、libC......假如正常运行opera只需要libA而不需要其他,那么,USE="-qt" 将会使得安装opera时只安装libA?还是libA/B/C....全装上?还是什么都不装(什么都不装,那opera当然就不能运行了,还谈什么支持?)?

而另一方面来说,如果没有USE="-qt"这个设置,那么安装opera又会是什么样子呢?只装libA?还是libA/B/C....都装上?
回复 支持 反对

使用道具 举报

发表于 2006-8-25 14:05:34 | 显示全部楼层
USE一般指定的是configure选项
和依赖关系完全是两回事
如果依赖一个东西,根本不会看你是否有相应的USE
qterm就是这样的例子
回复 支持 反对

使用道具 举报

发表于 2006-8-25 16:14:19 | 显示全部楼层
Post by zhllg
USE一般指定的是configure选项
和依赖关系完全是两回事
如果依赖一个东西,根本不会看你是否有相应的USE
qterm就是这样的例子

那版主能不能解释下两者的异同点在哪里?或者说 configure 选项解决什么问题?起到什么样的效果?
回复 支持 反对

使用道具 举报

发表于 2006-8-25 16:53:12 | 显示全部楼层
configure选项可以选择的是可有可无的东西
依赖关系是必须满足的

细想了一下,对于有的软件来说,其实前者也可以转化为后者。不过不是所有的软件都是这样。qt之于qterm就是必须的。

你看看 equery uses qterm,结果里没有qt,说明它不是可选的,此外还有两种可能,要么是必需的,要么是根本无关的。而在这里它是必需的。
回复 支持 反对

使用道具 举报

发表于 2006-8-25 18:35:28 | 显示全部楼层
这下我也明白了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-25 20:47:31 | 显示全部楼层
依赖关系和USE有关系的。
软件功能可以分为核心功能和外围功能,核心功能是只要安装这个软件就必然会有的功能,外围功能是可选功能,取决于configure时候的参数,也就是USe了,每一个功能都不是自己单独可以实现的,必然会依赖低级库,最底层当然就是硬件了。

所以,任何一个软件必然会依赖其他软件和库,核心功能依赖核心功能需要的库,外围功能依赖外围功能需要的库。而这个软件有哪些外围功能取决于use,所以use能够影响依赖性的。use里-的比较多,那么安装软件时外围功能就比较少,极端情况就是只剩下核心功能了。

我说的use两重含义就是这样的,use在影响软件的功能多寡的同时还影响了安装该软件时需要的依赖库。现在的use有个这样的问题,我让某个软件有某个外围功能,但该外围功能需要的依赖包却是我不想安装的,现在的use就不管这么多了,直接就把这个我不想安装的包给安装了。如果把use分成两个use,一个管功能扩展,一个管依赖包。就能解决这种情况。当遇到上述情况时,它能给给我一个提示,由我自己决定是否让这个软件有这个外围功能。

最典型的情况是,我的系统里装的软件非常少,我喜欢这种精简的感觉,如果我要安装一个软件,该软件有一个use来控制某个外围功能,而要安装该外围功能需要安装上十个依赖软件或者包,这时候我可能会取消安装这个外围功能的打算,以保持我系统的轻快。否则我会在不经意间让我的系统装了很多我不喜欢的东西(我本人就不喜欢qt的东西,呵呵)

说了一大堆,不知道说清楚了没有。

Post by zhllg
USE一般指定的是configure选项
和依赖关系完全是两回事
如果依赖一个东西,根本不会看你是否有相应的USE
qterm就是这样的例子
回复 支持 反对

使用道具 举报

发表于 2006-8-25 21:12:33 | 显示全部楼层
我后来不是更正了么
有的时候是有关系的

不过有的时候你是没有办法的
比如要装qterm,必须要装qt
如果你想知道到底会装什么东西使用 -a 参数来emerge
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表