以下是我在 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
实用程序。
答案1
两个包之间的关系如下:
cgroup-bin
依赖于取决于cgroup-tools
;cgroup-tools
破坏并替换旧版本的cgroup-bin
.
后者不是依赖项,但apt-cache rdepends
默认情况下会考虑它们;要仅查看严格的依赖关系,您需要运行
apt-cache rdepends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances cgroup-bin
这仅显示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
。)