如何查找已安装软件包的信息

如何查找已安装软件包的信息

有没有一种方法可以查找有关已安装软件包的信息?例如如何它是通过 DNF、snap 等包管理器安装的还是由用户编译的?

有时我不记得如何安装特定的软件包,但我总是需要在错误报告等中包含此类信息。是否有可以提供此类信息的工具?如果没有任何帮助编写脚本来完成这项工作,我们将不胜感激。

答案1

您需要询问可能使用的任何包管理器 - 只有包管理器存储有关已安装哪些包以及包中包含哪些文件的元信息。无法从裸文件中获取此类信息。

您没有说您使用什么风格的发行版,但我建议始终使用单个包管理器(适合我),并将用户编译的内容放在其他地方(对我来说,/usr/local使用 进行管理stow,并且我保留一个包列表)。这样就可以很容易地找出特定文件属于哪个包。

如果您使用十几个包管理器左右(为什么?),您可以编写一个脚本来依次查询每个包管理器。

编辑

我通过为我编译的每个包创建一个文件来跟踪从源代码编译的内容/usr/local/packages/<packagename>。无论如何,我需要这个,因为它包含有关我如何编译它的信息(通常您需要进行调整,修复一些无法使用较新的 gcc 编译的东西等),以防我在升级时需要再次编译它。由于我有这个文件,我还添加了有关我在哪里下载源代码、它是什么版本、它的用途、源代码 tarball 的名称等的信息。我通过将所有内容安装到/usr/local/stow/<packagename>-<version>(有时也需要调整 Makefiles 或./configure --prefix等),然后使用stow在 中建立指向它的链接/usr/local。我已经详细描述过这一点这里

您还可以用自己编译的东西制作真正的 deb 或 rpm 包,但这比使用stow.

相关内容