获取有关已安装的 Ubuntu 软件包的信息

获取有关已安装的 Ubuntu 软件包的信息

对于任何给定的包,最好的工具是什么,如果可能的话,可以获得以下信息:

  • 该包有何用途?
  • 什么时候安装的?
  • 这个包是手动安装的还是另一个包需要它?
  • 当前安装的软件包中是否有任何依赖于该软件包的软件包,即如果删除该软件包是否会导致某些问题?

答案1

这个问题问得好。你可能会认为会有一个好用又好用的工具来告诉你这些事情,但我不知道。我会逐一介绍,并给出我最好的建议。

  1. 该包有何用途?
  2. 什么时候安装的?
  3. 这个包是手动安装的还是另一个包需要它?
  4. 当前安装的软件包中是否有任何依赖于该软件包的软件包,即如果删除该软件包是否会导致某些问题?
  1. 在命令行上,aptitude show packageapt-cache show package 将提供软件包的描述,以及许多其他信息。Synaptic 允许您以各种方式搜索项目,并提供软件包的描述。(您从所有这些方法获得的描述是相同的。我相信它们都从 .deb 中的同一位置获取信息。)

  2. 这么简单的事情,但除了翻阅日志,我想不出如何做到这一点。Synaptic 似乎没有将这些信息保存为元数据。(这会成为一个很棒的愿望清单错误。)以下是实现此目的的一种方法:

    zgrep package /var/log/dpkg*
    

    这有点笨拙,它会产生大量输出,但它也应该能让你得到你想要的日期。(你需要这个,zgrep因为较旧的日志将被压缩成压缩包。)顺便说一句,你甚至需要 root 权限才能搜索dpkg的日志。

  3. 如果您aptitude show package 在已安装的软件包上运行,请选中“自动安装”字段。如果显示“是”,则表示它是作为其他软件包的依赖项引入的。(顺便说一下,您可以手动更改此设置。也就是说,您可以将软件包标记为手动安装,即使它实际上是作为依赖项安装的。但在大多数情况下,此处的结果应该是有效的。)您还可以过滤 Synaptic 搜索以查找作为依赖项安装的内容。

  4. 一种强力检查的方法:

    aptitude -s remove package
    

    -s标志模拟命令。您可以以普通用户身份运行此类命令,并且不会真正损害您的系统。它允许您轻松查看建议的操作将执行的操作。需要记住的一件事是,这种检查将向您显示总的 损坏,但不会显示更广泛的错误。我的意思是,您可能能够删除 Foo 包而不会真正破坏您的系统,但这可能会严重限制 Bar 包的实用性。通常,通过建议将包链接在一起以防止这种情况发生,但值得记住。您还可以使用 搜索依赖项和反向依赖项apt-cache,但我发现模拟运行是查看将发生的情况的最生动的方式。

另一个关于 Aptitude 的常规搜索技巧。在命令行上,您可以使用这些搜索快速查看您选择安装的内容以及作为其他依赖项自动安装的内容:

aptitude search '~i !~M' # Find things not installed as something else's dependency
aptitude search '~i ~M'  # Find things installed as something else's dependency

答案2

Debian 用户手册有一个关于易于它描述了搜索/查询和询问当前安装和存储库包的命令。

例如,下面的命令将显示有关特定已安装应用程序的详细信息。

apt-cache showpkg 软件包

相关内容