列出用户使用 dnf 显式安装的软件包

Tom*_*son 17 fedora package-management dnf

我有一个 Fedora 28 系统(编辑:从 Fedora 27 升级,而不是全新安装)。我可以运行dnf list --installed来列出我的系统上安装的 2165 个软件包。我可以运行dnf leaves(使用 leaves 插件)来列出所有 368 个软件包,这些软件包是独立安装的,而不是作为其他东西的依赖项。

叶子列表包括诸如 之类的东西sudo-1.8.22-0.2.b1.fc28.x86_64,它是系统的一个非常重要的部分,以及诸如 之类的东西steam-1.0.0.54-17.fc28.i686,它不是系统的重要部分,并且存在,因为我自己安装了它。

Fedora / RPM / dnf 是否有“属于基本系统一部分的软件包”而不是“用户要求的软件包”的概念?如果是这样,有什么办法列出所有后面的包吗?如果没有,是否有其他方法可以生成该列表,甚至是近似的?

我的最终目标是通过删除我安装但不再需要的旧软件包来清理我的系统。问题是我不知道我安装了什么。

ino*_*rik 22

dnf区分 [1] 之间

  1. 手动安装的包
  2. 仅作为手动安装的软件包的依赖项安装的软件包
  3. 作为组的一部分安装的软件包

要获取“用户请求的软件包”列表,您可以使用 列出上面的类别 (1) sudo dnf repoquery --userinstalled

[1] https://dnf.readthedocs.io/en/latest/command_ref.html#mark-command-label


xx4*_*x4h 3

你可以尝试

dnf history
Run Code Online (Sandbox Code Playgroud)

这应该或多或少地为您提供您通过dnf. 我真的不知道这段历史可以追溯到多远(时间)。

获取有关包修改信息的另一个地方是查看/var/log/yum.log. 但日志默认会轮换,这只会给您一个很小的时间窗口来重建修改。