#1 楼
一种快速的解决方案是在终端中输入以下命令:aptitude why $package
,或者,如果您仅对最终原因感兴趣:
aptitude why $package --show-summary
将$ package替换为软件包的名称,然后可能需要先安装
aptitude
软件包。 /> Packages requiring aspell:
inkscape
有关更多详细信息,请运行
aptitude why aspell --show-summary
。您可以阅读以下示例输出:“您手动安装了aptitude why aspell
,它需要inkscape
,这需要libgtkspell
,需要libenchantic2a
”。 (aspell
标记指示已安装的软件包; i
标记指示已自动安装的软件包。)最后,以下命令i inkscape Depends libgtkspell0 (>= 2.0.10)
i A libgtkspell0 Depends libenchant1c2a (>= 1.6.0)
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en Depends aspell (>= 0.60.3-2)
列出了计算机上安装的其他直接依赖于$ package的软件包。您可以添加
A
选项以列出直接或间接依赖于它的所有软件包。评论
默认情况下不包括可怜的资质:(
– Badp
2010-10-10 14:21
@badp谢谢指出。这是特立独行的不良新做法,只是在livecd iso映像上节省了一些空间。但这是一个无价的工具,我一定会努力。
– Enzotib
2010-10-10 14:31
apt-cache rdepends --recurse $ package可能提供了太多的软件包。我将添加--installed选项以限制安装的软件包。 -i选项限制为与依赖关系相关的软件包。但是可能会安装一个软件包,因为另一个软件包建议这样做。为了包括与建议相关的软件包,我认为这将给出正确的软件包:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-places --no-enhances --installed-递归$ package
– jarno
2013年12月22日18:20
略短于@jarno的咒语,假设您在bash或具有大括号扩展的其他shell上:apt-cache rdepends --no- {建议,冲突,breaks,replaces,enhances} --installed --recurse $ package
–akavel
2015年11月2日,10:59
#2 楼
通过在终端(Applications -> Accessories -> Terminal
)中键入以下命令,可以找到关于为什么要安装某些软件包的快速简短说明:例如,键入aptitude why libgoo-canvas-perl
将输出以下内容:aptitude why <package-name>
这基本上意味着在这种情况下,软件包
shutter
建议安装libgoo-canvas-perl
。通过输入aptitude why shutter
,我可以走到依赖关系链。我经常注意到aptitude发现了可能不是实际情况的最合理的解释,但是尽管如此,它仍可以为您提供进一步了解的线索。默认情况下,不会自动安装软件包。但是,它无法通过shutter
编辑屏幕截图而使我对“体验”的记忆犹新,这导致我手动安装了libgoo-canvas-perl
。通过运行以下命令,从软件包管理系统强制查看(查看您要求安装的其他软件包的依赖关系和建议)。i shutter Suggests libgoo-canvas-perl
这将输出一行下面(输出的第三行):
aptitude show <package-name>
有关更多信息,请运行
shutter
(在终端中)或访问Aptitude Wiki页面要了解何时安装了特定软件包,有2个选项:Synaptic软件包管理器维护所有活动的历史记录日志。若要查看历史记录日志文件,请从“文件”菜单中选择“历史记录”。您可以搜索
ligbgoo-canvas-perl
(注意大小写)以列出有关安装的所有条目。但是,这只会显示使用Synaptic安装的软件包在终端中运行以下命令。这将在dpkg日志中搜索安装历史记录条目。但是,保留这些日志的最大数量是最大限制,因此,如果要查找的软件包是很久以前安装的,则可能找不到。更多详细信息
Automatically installed: no
评论
如果要了解何时安装或升级了软件包,请执行以下命令:zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep“ \安装\ | \升级\”
–克里斯·古德(Chris Good)
2015年7月31日,0:19
@ChrisGood:您可以在没有智能引号的情况下重新输入评论,所以它是可复制/可粘贴的吗?
– Dan Dascalescu
17年1月25日在16:51
感谢您指出了这一点。使用正确的双引号:zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep“ \安装\ | \升级\”
–克里斯·古德(Chris Good)
17年1月25日在23:48
#3 楼
是的,您可以,实际上,这是一个非常明显的命令。假设您已经安装了智能软件,则可以打开“终端窗口”广告类型:aptitude why package
这将给出依赖于特定软件包的软件包列表。如果是手动安装的软件包,则会显示类似“找不到安装软件包的原因”之类的信息。
#4 楼
这是一种不依赖aptitude
的简单方法,默认情况下不会再发行10.10版本。以图形方式
打开Synaptic并尝试将其删除。删除其他程序包,这些程序包是(递归)依赖于此的程序包。依靠它。 (
-s
参数告诉apt-get
并未实际删除软件包。)评论
这是一个冒险的解决方案,因为如果它们单击不正确,它实际上可能会删除软件包和所有依赖项。
–想象中的机器人
2010-10-10 15:41
@ImaginaryRobots,这是很多误点击。 (您必须在第一个对话框中单击“确定”,然后单击“应用”,然后再次在确认对话框中单击“确定”。)对于终端版本,如果键入-s,还会有一个额外的y / N确认请求。我添加了一个警告。
– Badp
2010-10-10 15:44
-1,因为在查看软件包属性时,此信息在Synaptic的“依赖关系”选项卡下可用。
–alexanderpas
2010-10-29 22:46
@alex错误-该对话框不会告诉您该软件包是手动安装还是自动安装。 PS:收件箱计数器重置,请更加努力。
– Badp
2010-10-29 22:52
@badp否,但是该信息可以在主屏幕上的“已安装(手动)”状态过滤器中找到,并且在选择软件包时可以在软件包菜单中看到。
–alexanderpas
2010-10-29 23:42
评论
这与此问题有关(一部分),有关详细信息,请参见此答案。2017年更好的答案在这里:askubuntu.com/questions/128524/…
如何列出依赖包(反向依赖)的可能重复项?