有没有办法查找有关已安装软件包的信息?例如它是如何安装的,例如通过 DNF 等包管理器、快照或由用户编译?
有时我不记得我是如何安装特定软件包的,但我总是需要在错误报告等中包含此类信息。是否有工具可以提供此类信息?如果没有任何帮助编写脚本来完成这项工作,将不胜感激。
有没有办法查找有关已安装软件包的信息?例如它是如何安装的,例如通过 DNF 等包管理器、快照或由用户编译?
有时我不记得我是如何安装特定软件包的,但我总是需要在错误报告等中包含此类信息。是否有工具可以提供此类信息?如果没有任何帮助编写脚本来完成这项工作,将不胜感激。
您需要询问可以使用的包管理器 - 只有包管理器存储有关已安装哪些包以及包中包含哪些文件的元信息。没有办法从裸文件中获取此类信息。
你没有说你使用什么风格的发行版,但我建议总是使用一个包管理器(适合我),并将用户编译的东西放在其他地方(对我来说
/usr/local
,用 管理stow
,我保留一个包列表)。这样很容易找出特定文件属于哪个包。如果您使用十几个包管理器(为什么?),您可以编写一个脚本依次查询它们中的每一个。
编辑
我通过为我编译的每个包创建一个文件来跟踪我从源代码编译的内容
/usr/local/packages/<packagename>
。无论如何我都需要这个,因为它包含有关我如何编译它的信息(通常您需要进行调整,修复一些无法使用较新的 gcc 编译的东西等),以防我在升级时需要再次编译它。由于我有这个文件,我还添加了关于我下载源代码的位置、它是什么版本、它做什么、源 tarball 的名称是什么等信息。我通过将所有内容安装到/usr/local/stow/<packagename>-<version>
(有时也需要对 Makefile 或./configure --prefix
等进行调整),然后用于stow
在/usr/local
. 我在这里详细描述了这一点。你也可以用你自己编译的东西制作真正的 deb 或 rpm 包,但这比用
stow
.