+ -
当前位置:首页 → 问答吧 → 如何级联卸载?

如何级联卸载?

时间:2009-10-11

来源:互联网

假定:
A 依赖于 B
B 依赖于 C
C 依赖于 D

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

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

作者: csfrank   发布时间: 2009-10-11

emerge --depclean

作者: ltwan2001   发布时间: 2009-10-11

我在发帖前已经试过
emerge --depclean D
命令了,不行的。
不信你先
emerge apache
然后
emerge --depclean apr
并不能同时卸掉apache

作者: csfrank   发布时间: 2009-10-11

按我所知道和实验应该是 depclean D以后 在一次 depclean 就直接把整个关系切断了

作者: shikihyx   发布时间: 2009-10-11

引用:
作者: csfrank
我在发帖前已经试过
emerge --depclean D
命令了,不行的。
不信你先
emerge apache
然后
emerge --depclean apr
并不能同时卸掉apache
應該先emerge -C apache再emerge --depclean。

作者: coderoar   发布时间: 2009-10-11

引用:
作者: csfrank
假定:
A 依赖于 B
B 依赖于 C
C 依赖于 D

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

那么如果我想在卸载 D 的同时将 A B C 一起卸载,也就是顺着依赖关系树将整个分枝砍掉,该用什么命令呢?
按照卸载D同时卸载ABC估计会死得很难看,ABC有时候不一定只有D依赖的把?

作者: zrael   发布时间: 2009-10-11

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

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

作者: xcxxb   发布时间: 2009-10-11

正常步骤是:
emerge -C A
emerge --depclean
如果BCD不被已安装的除A以外的包依赖,那么BCD就在--depclean中被干掉了
如果BCD还要被其他包依赖,那么为什么要干掉BCD呢?

作者: jsun   发布时间: 2009-10-13

引用:
作者: jsun
正常步骤是:
emerge -C A
emerge --depclean
如果BCD不被已安装的除A以外的包依赖,那么BCD就在--depclean中被干掉了
如果BCD还要被其他包依赖,那么为什么要干掉BCD呢?
谢谢先。
但是我确实想要连根拔掉D为根基的分枝时该怎么做呢?
也就是想要达到类似
apt-get remove D
的效果

作者: csfrank   发布时间: 2009-10-14

引用:
作者: csfrank
谢谢先。
但是我确实想要连根拔掉D为根基的分枝时该怎么做呢?
也就是想要达到类似
apt-get remove D
的效果
代码:
equery d D
列出再 emerge -C。

不過、從上往砍才是正路。

作者: mathfeel   发布时间: 2009-10-14

不是不是,depclean是可以的。至於apr,樓主注意一下,apr可不是只有apache才用。

向上砍太費精力了……而且不安全。

而且depclean好像不加參數的。

作者: 亞利艾爾   发布时间: 2009-10-14