|
|
发表于 2008-12-30 00:40:01
|
显示全部楼层
我用 python 写过一个
分析 emerge -pvq --depclean 的輸出
得到所有已安装包的依赖
然后重新排列出依赖树中最顶端的包
这样确实能让 world 里的项少很多
而且能保证满足依赖,也就是不需要重新 revdep-rebuild
不过有些小细节比较麻烦
比如,软件包名字的分析中,版本号的去除,想用正则,但没找到个规律,不是表面上 -x.y.z 这么简单的
(update: 忽然想到一个可能可以解决这个问题的方法,没时间,不會去试了)
比如,我是通过过滤掉所有依赖里不是仅仅有 world 的包来得出最终的 world 文件,这样会可能得到做过头的结果,例如最后只剩下,XX-plugin 包,而 XX 软件就没了,因为 XX-plugin 依赖这个 XX,当然,改動一下可以更灵活,我觉得没太大必要
再比如,上面提到的过滤方式有个致命的弱点,就是一些完全循环的依赖,会最终被过滤掉,一个明显的例子是用了 restrict-javascript 这个 USE 的 mozilla-firefox,x11-plugins/noscript 会依赖 www-client/mozilla-firefox,反之亦然,最终产生的 world 文件有可能还需要手工修改,加上解决循环依赖的代码对于这个小东西又不值
随作罢 |
|