LinuxSir.cn,穿越时空的Linuxsir!

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

关于pacman删除包的疑问

[复制链接]
发表于 2009-12-10 09:16:22 | 显示全部楼层 |阅读模式
To remove a package's dependencies which are not required by any other installed package:

# pacman -Rs package_name

以上是archlinux网站wiki文档的一部分,说如果采用-Rs选项,
将删除(请选择,我不确定):
1. 该包依赖的其他包
2. 依赖于该包的其他包

换种表述,就是,如果PkgA ----> PkgB  ----> PkgC, PkgC依赖于PkgB,而PkgB依赖于PkgA,那么,我使用pacman -Rs PkgB,将删除什么?

从语义来看,应该是PkgA被删除,但是如果PkgA是我常用的程序或库怎么办?(虽然不被其他包所依赖);另外一方面,PkgC不就broken了吗,怎么才能修复?
发表于 2009-12-10 12:41:32 | 显示全部楼层
这是钻牛角尖了阿,研究理论还不如做看看阿。
既然A是B、C底层依赖,然后是独立而不被其它包做为依赖,那它一般不会是你常用的程序或库。
如果你是装C然后pacman直接帮你把AB装进去,那么删B,ABC一并删了。
如果你是装B,pacman帮你一并装了A,然后你再装C,那么你删B,显然ABC一并删了。
如果是你手动装A,然后装B,然后装C,删B,那么BC删了,手动装的A不会删掉。
回复 支持 反对

使用道具 举报

发表于 2009-12-10 13:44:02 | 显示全部楼层
pacman -Qi <某软件包>
有的软件包的安装原因是Explicitly installed,有的是Installed as a dependency for another package
前者是显式安装,后者是作为依赖安装。
一般来讲,如果你用"pacman -S A"安装一个软件包A,A依赖B,而先前B未被安装,那么A会被标记为显式安装,B被标记为作为依赖安装。如果你用"pacman -Rs A"命令卸载A,因为B是作为依赖被安装的,如果除了A再没有别的包需要B,那么B也会被卸载。
安装软件包的时候可以用"--asdeps"或"--asexplicit"强行指定安装原因。
回复 支持 反对

使用道具 举报

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

本版积分规则

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