这是我在 Debian Stretch 上观察到的:
$ deborphan
cgroup-bin
根据手册页,这意味着没有其他包依赖于cgroup-bin
. 让我们检查一下:
$ apt-cache rdepends cgroup-bin
cgroup-bin
Reverse Depends:
cgroup-tools
mininet
cgroup-tools
依赖关系通过以下cgroup-tools
方式确认:
$ apt remove cgroup-bin
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following package was automatically installed and is no longer required:
cgroup-tools
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
cgroup-bin
- 为什么两个
apt
命令(似乎)相互矛盾deborphan
?我是否误解了上面的某些内容deborphan
或apt
命令?
如果我进一步调查:
$ apt-cache rdepends cgroup-tools
cgroup-tools
Reverse Depends:
cgroup-bin
$ apt-cache rdepends cgroup-bin
cgroup-bin
Reverse Depends:
cgroup-tools
mininet
cgroup-tools
cgroup-bin
并且cgroup-tools
相互依赖。
这种循环引用是否正常(或者我们说“出于某种原因这样做”)?我想这就是为什么试图
apt remove cgroup-bin
实际删除两者?为什么无论如何要
deborphan
列出cgroup-bin
?如果我真的卸载它,我会删除整个cgroups
实用程序。
两个包之间的关系如下:
cgroup-bin
取决于cgroup-tools
;cgroup-tools
中断并替换旧版本的cgroup-bin
.后者不是依赖项,但
apt-cache rdepends
默认情况下会考虑它们;只看到严格的依赖关系,你需要运行仅显示
mininet
.您的
apt remove
命令说删除;cgroup-tools
后不需要这样做cgroup-bin
这是有道理的,因为cgroup-bin
取决于cgroup-tools
. 如果cgroup-tools
依赖cgroup-bin
,apt remove cgroup-bin
也会强制删除cgroup-tools
(并询问您);它不会表示cgroup-tools
不再需要,它会说删除cgroup-bin
需要删除cgroup-tools
,并且两个包都会出现在The following packages will be REMOVED:
.所以你所有的命令都会产生预期的结果,并且没有矛盾:没有什么依赖于
cgroup-bin
,所以它可以被删除。deborphan
被列为cgroup-bin
候选删除的原因是它cgroup-bin
现在是一个过渡包:它不包含任何东西,它只确保cgroup-tools
被拉入;cgroup-tools
是有趣的包。(您需要使用 标记cgroup-tools
为手动安装apt-mark manual
。)