如何列出依赖包(反向依赖)?

l0b*_*0b0 278 package-management command-line dependencies

为了研究导致安装给定软件包的原因,我想获取依赖于该软件包的软件包列表。我在man dpkg.

Rob*_*ans 353

apt-cache rdepends packagename 应该做你想做的

  • 如果添加`--installed`,输出甚至对许多其他人可以使用的包有用:`apt-cache rdepends --installed packagename` (71认同)
  • 对于输出,为什么有些包前面有一个竖线(管道符号)? (6认同)
  • 至于今天(apt 版本 0.9.9.1),有一个适用于 rdepends 的 --recurse 选项。 (3认同)
  • 有一个稍微不同的语法,它帮助我区分 Recommends、Depends、Suggests 等。语法是`sudo apt rdepends packagename`(注意它没有使用 apt-cache 而只是 apt) (3认同)
  • 优秀!`apt-cache rdepends tofrodos` 证实了 [怀疑](http://superuser.com/questions/52044/convert-crlfs-to-line-feeds-on-linux) 它是由另一个包安装的(过时的` dos2unix`)。 (2认同)

tum*_*eed 76

aptitude 有一个相当不错的处理方式:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)
Run Code Online (Sandbox Code Playgroud)

默认情况下,它只列出“安装最多、最强、最紧密、最短”的原因,但您可以使用aptitude -v why它来输出它找到的所有内容。

  • 似乎它只考虑已安装的软件包,而不是所有可用的软件包。而这正是我所需要的。 (6认同)
  • 为此,您需要在 `ubuntu-dev-tools` 中使用 `reverse-depends` (4认同)

小智 28

apt-cache showpkg <pkgname> 
Run Code Online (Sandbox Code Playgroud)

例子:

apt-cache showpkg lightdm
Run Code Online (Sandbox Code Playgroud)

  • 这实际上仍然是 `apt-cache` 的正确语法。刚刚尝试了 `apt showpkg xorg` 并得到了 `E: Invalid operation showpkg` (3认同)

pap*_*hou 17

有不止一种方法,每种方法都显示不同的输出。

有关完整反向依赖树的详细视图;

aptitude install apt-rdepends
apt-rdepends -r bash
Run Code Online (Sandbox Code Playgroud)

或者;

apt-cache showpkg bash
Run Code Online (Sandbox Code Playgroud)

或简明清单:

apt-cache rdepends bash
Run Code Online (Sandbox Code Playgroud)

  • 大家好,实际上“apt-rdepends”代表“递归依赖”。如果你想要反向递归依赖,你必须输入:`apt-rdepends -r yourPackageNameHere` (2认同)

小智 17

最简单的选择仍然是:

apt rdepends package-name
Run Code Online (Sandbox Code Playgroud)

这不需要您安装任何软件包。

  • 接受的答案与此无关。与 apt-cache 相比,输出*完全*不同,并且对人类消费更有用。答案提到 apt-cache 并非默认安装在任何地方 - 仅此一项就应该是一个很好的提示,为什么这个答案有其目的。最后,这实际上是我一直在寻找的答案,所以任何反对都是相当愚蠢的。 (3认同)
  • 这比接受的版本更好的一个非常重要的原因是它包含依赖项的版本,这与 apt-cache 的输出不同。这正是我现在所需要的(调试 glibc 2.28 不兼容性,所以投票) (2认同)
  • 赞成使用 apt。在最初的答案时,我不确定这个恰当的解决方案是否有效,但如果现在有效,那就太好了。 (2认同)

B. *_*hea 10

除了其他好的答案外,APT/APT-GET 还会进行-s“模拟”移除(或安装)。

sudo apt -s remove <pkgname>

使用-s--simulated删除(或安装)软件包,通常会列出任何受影响的依赖项。它会在删除时显示孤立的包,或者在安装时显示需要的依赖项而不实际执行installremove。仅供参考。