简单说下相关概念:
world和system:这两个东东是软件包set,分别包含一个列表
system中包含的包列表由gentoo的profile指定(profile的packages文件,按照“继承”路径增加删减)
world中的列表保存着曾经主动使用emerge安装,并没有包含--oneshot参数(此参数表示安装但不加入world列表中)的所有数据包,也即,unmerge的(会被从world中去除)和由于依赖安装的包,不在此列表中。world可使用任何编辑器修改,位置在/var/lib/portage/world
emerge -c(推荐emerge -ca,个人喜欢操作都加个a,确认下再继续)的操作是:
0、emerge -c等价于emerge -c
@world1、将world和system中的包加入一个列表,然后以此将列表中的软件的依赖加入列表(重复的不增加),如此循环,直到列表条目不再增加
2、系统中已安装的软件(信息在/var/db/pkg下记录)但不在此列表中的包,作为被删除对象
参数c表示作依赖搜索动作(上述过程1,产生一个“相关包”的列表),因此emerge -c带着包名为参数时,会针对此包作依赖关系搜索并深度删除动作。与之对比的是-C,这个参数不检查依赖关系,且只删除指定的包