LinuxSir.cn,穿越时空的Linuxsir!

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

问个USE FLAG的问题

[复制链接]
发表于 2011-3-24 14:37:19 | 显示全部楼层 |阅读模式
USE在脑子很混乱。
手册中是说,以kde标记为例,有些包编译后可以支持kde或者产生支持kde的库。若去掉kde标记,包编译时就不再有这些功能了。

现在我想安装emacs,察看emacs所使用的标记,是否就是说,若这些标记中有我不想用的就去掉,emacs编译之后就不会产生相关的应用?

可是问题又来了:同志们一直在说使用USE定制,可这好像和包之间的依赖性不完全一样。包的标记不一定就是说:“包的编译依赖于该标记所制向的软件,该标记的软件不安装就不能安装该包。”但是有些包的编译需要使用局部环境标记,例如 USE='sqlite',才能安装。

那么到底包之间的依赖性和标记之间的依赖性是什么关系啊?
发表于 2011-3-24 16:32:32 | 显示全部楼层
看ebuild源代码,代码怎么写,就是怎么依赖
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-24 17:08:15 | 显示全部楼层
Post by darrenlee;2131845
看ebuild源代码,代码怎么写,就是怎么依赖


ebuild源代码在哪里?感觉你并没有回答我的问题。

USE 依赖和代码依赖什么关系?

其实我想问的是:qterm编译时必然需要qt包,有没有可能类似添加局部环境标记USE='qt'来替代真实编译qt包?
回复 支持 反对

使用道具 举报

发表于 2011-3-24 17:15:56 | 显示全部楼层
如果知道编译的基本过程,就很好理解了:configure --enable some flags,'some flags‘就是最初USE标记的由来。enable some flags 然后make的结果是产生一些库文件或列表文件,其他软件的安装或运行依赖这些列表文件或库文件;局部 USE用/etc/portage/package.use来定义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-24 17:22:28 | 显示全部楼层
Post by LongerZ;2131849
如果知道编译的基本过程,就很好理解了:configure --enable some flags,'some flags‘就是最初USE标记的由来。enable some flags 然后make的结果是产生一些库文件或列表文件,其他软件的安装或运行依赖这些列表文件或库文件;局部 USE用/etc/portage/package.use来定义。


编译过程我倒是了解一些,你这么说大概知道了USE的作用了。其实,一个包的USE标记就是产生一些其他包编译需要的库,可解决其他包编译的依赖关系。

是不是可以这么说:USE标记的依赖是不能替代软件编译的依赖关系,编译需要的依赖关系是不能通过USE='qt'取代的?
回复 支持 反对

使用道具 举报

发表于 2011-3-24 17:41:04 | 显示全部楼层
Post by easior lars;2131848
ebuild源代码在哪里?感觉你并没有回答我的问题。

USE 依赖和代码依赖什么关系?

其实我想问的是:qterm编译时必然需要qt包,有没有可能类似添加局部环境标记USE='qt'来替代真实编译qt包?


没看明白你的问题,
USE标记用来设定或取消编译时的某些特性,这些特性可能有依赖,也可能没依赖
要安装的包的依赖可以用USE指定,也可以不用

http://www.gentoo.org/proj/en/de ... l?part=2&chap=1
回复 支持 反对

使用道具 举报

发表于 2011-3-24 19:47:47 | 显示全部楼层
Post by easior lars;2131850
编译过程我倒是了解一些,你这么说大概知道了USE的作用了。其实,一个包的USE标记就是产生一些其他包编译需要的库,可解决其他包编译的依赖关系。

是不是可以这么说:USE标记的依赖是不能替代软件编译的依赖关系,编译需要的依赖关系是不能通过USE='qt'取代的?


USE大部分时候决定的是“特性”,而不是“依赖”。

比如Transmission有个gtk USE,你要是在package.use里给这个包启用这个USE,就会支持图形化Transmission特性,叫Transmission-gtk;你要是没启用gtk USE(全局和局部都没启用),就不会编译安装这个特性,你只能用命令行交互版的transmission.

你说的qterm依赖qt,那是运行时依赖,是没法通过USE去除的。所以你要是添加了"-qt" 全局USE,这个时候会提示你有些依赖没有开启,而不开启就没法安装。这是一件很自然的事情。

如果你有一定的“洁癖”,比如不想要qt库,可以尽量选择不依赖qt的程序作为代替。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-24 20:02:31 | 显示全部楼层
Post by gentlog;2131872
USE大部分时候决定的是“特性”,而不是“依赖”。

比如Transmission有个gtk USE,你要是在package.use里给这个包启用这个USE,就会支持图形化Transmission特性,叫Transmission-gtk;你要是没启用gtk USE(全局和局部都没启用),就不会编译安装这个特性,你只能用命令行交互版的transmission.

你说的qterm依赖qt,那是运行时依赖,是没法通过USE去除的。所以你要是添加了"-qt" 全局USE,这个时候会提示你有些依赖没有开启,而不开启就没法安装。这是一件很自然的事情。

如果你有一定的“洁癖”,比如不想要qt库,可以尽量选择不依赖qt的程序作为代替。


正如你说的,基本上我已经搞明白了USE的作用了。至于软件编译的依赖,那是另外一回事,与其他发行版是一致的。

我想问个题外的问题:qt是不是对应着KDE,gtk对应着gnome?这真是个很弱的问题。
回复 支持 反对

使用道具 举报

发表于 2011-3-24 20:15:15 | 显示全部楼层
Post by easior lars;2131880
正如你说的,基本上我已经搞明白了USE的作用了。至于软件编译的依赖,那是另外一回事,与其他发行版是一致的。

我想问个题外的问题:qt是不是对应着KDE,gtk对应着gnome?这真是个很弱的问题。


我对应不好,只知道要装gnome必须要gtk,要装KDE必须要qt.

我自己的情况是,qt是可以一点不沾的,gtk+不行。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-3-24 20:22:12 | 显示全部楼层
Post by gentlog;2131882
我对应不好,只知道要装gnome必须要gtk,要装KDE必须要qt.

我自己的情况是,qt是可以一点不沾的,gtk+不行。


qterm用什么替代?有gtk的term吗?
回复 支持 反对

使用道具 举报

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

本版积分规则

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