LinuxSir.cn,穿越时空的Linuxsir!

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

如何级联卸载?

[复制链接]
发表于 2009-10-10 21:28:01 | 显示全部楼层 |阅读模式
假定:
A 依赖于 B
B 依赖于 C
C 依赖于 D

如果我 emerge A ,那么 B C D 会被自动安装,这没问题。

那么如果我想在卸载 D 的同时将 A B C 一起卸载,也就是顺着依赖关系树将整个分枝砍掉,该用什么命令呢?
发表于 2009-10-10 21:30:32 | 显示全部楼层
emerge --depclean
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-10 21:50:01 | 显示全部楼层
我在发帖前已经试过
emerge --depclean D
命令了,不行的。
不信你先
emerge apache
然后
emerge --depclean apr
并不能同时卸掉apache
回复 支持 反对

使用道具 举报

发表于 2009-10-10 22:06:38 | 显示全部楼层
按我所知道和实验应该是 depclean D以后 在一次 depclean 就直接把整个关系切断了
回复 支持 反对

使用道具 举报

发表于 2009-10-10 22:16:21 | 显示全部楼层
Post by csfrank;2035128
我在发帖前已经试过
emerge --depclean D
命令了,不行的。
不信你先
emerge apache
然后
emerge --depclean apr
并不能同时卸掉apache

應該先emerge -C apacheemerge --depclean
回复 支持 反对

使用道具 举报

发表于 2009-10-10 22:20:41 | 显示全部楼层
Post by csfrank;2035116
假定:
A 依赖于 B
B 依赖于 C
C 依赖于 D

如果我 emerge A ,那么 B C D 会被自动安装,这没问题。

那么如果我想在卸载 D 的同时将 A B C 一起卸载,也就是顺着依赖关系树将整个分枝砍掉,该用什么命令呢?


按照卸载D同时卸载ABC估计会死得很难看,ABC有时候不一定只有D依赖的把?
回复 支持 反对

使用道具 举报

发表于 2009-10-10 22:27:02 | 显示全部楼层
據我所知,emerge A 后,
先emerge -C A,然後--depclean,則會把BCD也卸掉(姑且假設沒有其它已安裝包也依賴BCD)。
但先emerge -C D,再--depclean,則會報錯有依賴沒解決(比如在這裡是提示ABC需要D)。
換言之,如果想把ABCD都卸載,應該先卸載A,再--depclean

如果LZ一定要“卸載D及依賴D的所有包”,可以考慮根據依賴報錯的提示,手動卸載那些缺少依賴的包。
回复 支持 反对

使用道具 举报

发表于 2009-10-13 17:38:53 | 显示全部楼层
正常步骤是:
emerge -C A
emerge --depclean
如果BCD不被已安装的除A以外的包依赖,那么BCD就在--depclean中被干掉了
如果BCD还要被其他包依赖,那么为什么要干掉BCD呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-13 23:03:48 | 显示全部楼层
Post by jsun;2036117
正常步骤是:
emerge -C A
emerge --depclean
如果BCD不被已安装的除A以外的包依赖,那么BCD就在--depclean中被干掉了
如果BCD还要被其他包依赖,那么为什么要干掉BCD呢?
谢谢先。
但是我确实想要连根拔掉D为根基的分枝时该怎么做呢?
也就是想要达到类似
apt-get remove  D
的效果
回复 支持 反对

使用道具 举报

发表于 2009-10-14 06:31:29 | 显示全部楼层
Post by csfrank;2036272
谢谢先。
但是我确实想要连根拔掉D为根基的分枝时该怎么做呢?
也就是想要达到类似
apt-get remove  D
的效果

  1. equery d D
复制代码

列出再 emerge -C。

不過、從上往砍才是正路。
回复 支持 反对

使用道具 举报

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

本版积分规则

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