为了研究导致给定软件包安装的原因,我想获取依赖于该软件包的软件包列表。我在man dpkg中找不到任何明显的内容。

评论

相关:askubuntu.com/questions/13296/…

较早的问题的答案全都围绕着能力,这已经多年没有默认安装了。在2017年,Ubuntu上的每个人仍然拥有apt-cache。遵循链接的问题的任何人都会在关于很少有人拥有的程序的讨论中迷路。

#1 楼

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

评论


优秀的! apt-cache rdepends tofrodos确认怀疑它是由另一个软件包(废弃的dos2unix)安装的。

–l0b0
2012年4月30日13:12



对于今天(apt版本0.9.9.1),有--recurse选项可与rdepends一起使用。

– jarno
2013年12月22日下午14:00

如果添加--installed,则输出甚至对于可被其他许多程序使用的软件包很有用:apt-cache rdepends --installed packagename

– Quzgar
2014年5月27日22:08

语法略有不同,可帮助我区分“推荐”,“依赖”,“建议”等。语法为sudo apt rdepends包名(注意,它不是在使用apt-cache而是在使用apt)

– Vahid Pazirandeh
17年11月16日在5:26

对于输出,为什么有些包装在它们前面有竖线(竖线符号)?

– Vahid Pazirandeh
17年11月16日下午5:35

#2 楼

aptitude有一个很好的方法来处理此问题:

$ aptitude why bash
i   foomatic-filters PreDepends bash (>= 2.05)


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

评论


似乎它只考虑已安装的软件包,而不考虑所有可用的软件包。这就是我所需要的。

– Tuukka Mustonen
13年7月25日在10:06

为此,您想要反向依赖ubuntu-dev-tools

–风滚草
13年7月25日在11:38

Debian呢?

– Tuukka Mustonen
13年7月25日在12:08

ubuntu-dev-tools在Debian中

–风滚草
13年7月26日在11:18

这很棒。我了解到,openssh-server在无头服务器上建议(并因此安装了)xauth,一个月拖了数百个x11依赖项和数十个无用的更新。这就是自动化包装管理的问题!

–BaseZen
18年3月2日在3:17

#3 楼

apt-cache showpkg <pkgname> 


示例:

apt-cache showpkg lightdm


评论


当前语法apt showpkg

–l –marc l
19年5月20日在23:11

实际上,这仍然是apt-cache的正确语法。刚尝试apt showpkg xorg并得到E:无效操作showpkg

–永恒
20年6月8日在14:13

#4 楼

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

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

aptitude install apt-rdepends
apt-rdepends -r bash

或者
;或者
简洁列表:

apt-cache showpkg bash


评论


rdepends在那棵树中究竟显示了什么? apt-rdepends php7.0-fpm显示sed。 sed不依赖于PHP,更不用说PHP FPM了。

– Dan Dascalescu
18年1月9日在23:21

它是反向依赖的,这意味着PHP依赖sed。

– Erik Berkun-Drevnig
18年4月25日在3:30

大家好,实际上“ apt-rdepends”代表“递归依赖性”。如果要反向递归依赖性,则必须输入:apt-rdepends -r yourPackageNameHere

–SebMa
18年4月27日在12:56

apt-cache手册页显示“ rdepends显示软件包具有的每个反向依赖关系的列表”。正如@SebMa所说,而apt-rdepends需要-r选项来执行反向依赖。

– NeilG
19-2-5在3:16



#5 楼

最简单的选项仍然是:

apt rdepends package-name


,它不需要安装任何软件包。

评论


这对接受的答案有什么作用?

–l0b0
18年11月26日在23:58

可接受的答案与此无关。输出是完全不同的,并且比apt-cache的输出对人类更有用。答案提到默认情况下并非在所有位置都安装apt-cache-仅此一个很好的提示,说明了此答案的目的。最后,这实际上是我一直在寻找的答案,因此任何不赞成投票的人都相当愚蠢。

–stefanct
18年11月28日在13:21

为什么它比接受的版本更好的一个非常重要的原因是,它包含了依赖的版本,这与apt-caches输出不同。正是我现在所需要的(调试glibc 2.28不兼容,所以赞不绝口)

– Per Lundberg
19年1月2日,9:10

赞成使用apt。在给出原始答案时,我不确定这种适当的解决方案是否有效,但是如果是现在,那就很好。

–RobotHumans
19年4月20日在11:53

#6 楼

除了其他好的答案之外,APT / APT-GET -s还可以进行“模拟”拆卸(或安装)。安装)软件包,通常会列出所有受影响的依赖项。删除时将显示孤立的软件包,或者在安装时实际不执行sudo apt -s remove <pkgname>-s时将显示孤立的软件包。仅供参考。

评论


apt remove -s php7.0-fpm显示将安装以下附加软件包:apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0。如果删除PHP FPM,为什么会安装apache?

– Dan Dascalescu
18年1月9日在23:22

@DanDascalescu嗯。可能对于apt pkg来说是一个错误的安装/删除脚本,或者可能是您有一些其他依赖项将apache2安装为dep(这意味着需要Web服务器-我相信apache2是默认的Web服务器)。可能是几件事。只是不确定。如果您没有找到答案,则在AskUbuntu上有个不错的帖子。

– bshea
18年7月10日在16:26