为什么“deborphan”列出“cgroup-bin”?

为什么“deborphan”列出“cgroup-bin”?

以下是我在 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
  1. 为什么这两个apt命令(似乎)矛盾deborphan?我是否误解了上面的命令deborphanapt命令?

如果我进一步调查:

$ 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相互依存。

  1. 这种循环引用正常吗(或者说“这样做是有原因的”)?我想这就是为什么尝试apt remove cgroup-bin实际删除两者?

  2. 为什么还是要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-binapt 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。)

相关内容