Debian软件包:区分“请求的安装”和“已安装以满足依赖性”

时间:2009-11-06 09:13:06

标签: debian

如何确定安装了哪些软件包,因为我请求了安装以及哪些软件包自动安装以便满足依赖性

在aptitude中,此信息显示为“A”:

i A fam         ...
i   grub        ...
i A grub-common ...

这表明我请求了包grub,并且因此安装了grub-common。但是,aptitude是一个交互式程序,我无法自动提取此信息以使用脚本处理它。

使用debian软件包管理工具'dpkg -l'或'dpkg --get-selections',我可以获得已安装软件包的列表以及其他信息。 E.g。

> dpkg -l
...
ii  grub                                 0.97-47lenny2              GRand Unified Bootloader (Legacy version)
ii  grub-common                          1.96+20080724-16           GRand Unified Bootloader, version 2 (common files)
ii  gs-common                            8.62.dfsg.1-3.2lenny1      Dummy package depending on ghostscript
...

此列表可以使用脚本轻松处理,但它只显示已安装的软件包 - 无论是通过请求还是依赖项。

3 个答案:

答案 0 :(得分:2)

确实可以用所谓的搜索模式调用aptitude搜索;请参阅http://algebraicthunk.net/~dburrows/projects/aptitude/doc/en/ch02s03s05.html#tableSearchTermQuickGuide处的参考资料 search~i产生已安装的包。使用grep丢弃带有A的软件包可以不自动安装软件包,因此几乎可以回答原始问题。

但它包含属于原始发行版的包,因此它没有完全整理出来。在我的情况下,它仍然是1500个包,我可以处理的一套。

它可能通过搜索组合来实现,我没有挖掘,这是我的命令:

aptitude search ~i|grep -v '^i A'|

grep -v丢弃依赖包

答案 1 :(得分:1)

Aptitude也是一个仅限命令行,无gui程序。尝试:

aptitude search grub

信息将在那里。

答案 2 :(得分:0)

Apt支持'auto'标志,它正好描述了这一点。

如果需要,请查看http://man.he.net/man8/apt-mark并深入挖掘。