LinuxSir.cn,穿越时空的Linuxsir!

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

如果重建port-list?

[复制链接]
发表于 2006-2-14 21:57:39 | 显示全部楼层 |阅读模式
我经常遇到一个很郁闷的问题。。

就是安装的软件包之间的依赖关系被破坏。

用emerge -p depclean列出100多个包。。

明明有很多包需要升级。结果用emerge --update --deep --newuse world,一个包都没有升级。

revdep-rebuild也试过。解决不了这个问题。


哪位朋友遇到过这类问题??如何解决?

我在google上也没有找到太好的方法。可能是我关键字输入的不准确。
发表于 2006-2-14 22:20:44 | 显示全部楼层
emerge -uDNpv world
回复 支持 反对

使用道具 举报

发表于 2006-2-15 02:07:02 | 显示全部楼层
emerge -p depclean
是删除不用的软件包。要特别注意,不要把需要的包也给删除了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-2-15 09:13:53 | 显示全部楼层
呵呵。
我第一个说的不清楚。

我知道depclean的用途。我的意思是我用depclean列出来了100多个包。。
实际上不应该有这么多的需要清除的包。

所以才要重新建立包之间的倚赖关系
回复 支持 反对

使用道具 举报

发表于 2006-2-15 10:25:48 | 显示全部楼层
依赖关系应该是存在于ebuild文件里的
不需要重建

emerge foo之后
foo会被记载入/var/lib/portage/world
记载入/var/lib/portage/world的包不会被--depclean卸载
如果foo还依赖于其他的包,那么那些包不会被记入world文件
所以如果你emerge -C了foo之后,再--depclean,那些依赖关系都会被unmerge掉
你是不是这种情况呢

如果实在不想被删除
可以手工加入world文件
不过这样有个问题
就是如果某个库,即使你的系统里没有任何一个程序依赖于它,它也不会被--depclean删除,除非你手工删。可是手工删太费劲,--depclean的出现就是要使这个过程自动化

所以,自己权衡一下吧

你怎么看出来很多包需要升级
如果需要肯定会升级的
emerge -tauvDN world
回复 支持 反对

使用道具 举报

发表于 2006-2-16 02:32:15 | 显示全部楼层
Post by zysno1
呵呵。
我第一个说的不清楚。

我知道depclean的用途。我的意思是我用depclean列出来了100多个包。。
实际上不应该有这么多的需要清除的包。

所以才要重新建立包之间的倚赖关系

自己检查,把重要的包放到world文件中,然后就可以删除其它的包,然后
revdep-rebuild可以把包的依赖关系建好。以后用depclean就没有问题了。
回复 支持 反对

使用道具 举报

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

本版积分规则

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