如何删除所有其他包不依赖的带有 DNF 的包

Fra*_*mer 13 linux fedora package-management yum dependencies

我的问题

我想手工构建一个软件。所以我使用dnf install <a> <b> <c>.

然后我不再需要那个软件了,所以我也想卸载它的所有依赖项。但是yum remove <a> <b> <c>会删除所有包,即使另一个已安装的包仍然依赖于这些包之一(<b>例如)。

我试过的

  • 我阅读了man dnf,但找不到合适的命令。

我的问题

什么是最简单的方法:

  1. 找出哪些包<a><b>以及<c>其他包仍然需要的包。
  2. dnf remove我不再需要的包列表中的所有包(<a>,<b><c>),但不要从 point 中删除包(1.)

任何的想法?

谢谢你的帮助。如果有什么不清楚的,请发表评论,我会添加更多细节。

mat*_*tdm 17

使用 Yum,您将使用package-cleanup来自yum-utils. 但是,对于 DNF,它是作为dnf autoremove命令内置的。从文档

dnf [options] autoremove

从系统中删除所有“叶”包,这些包最初是作为用户安装包的依赖项安装的,但任何此类包不再需要这些包。

请注意dnf list,在运行 automremove 本身之前,您还可以使用该命令查看将删除哪些包,使用

dnf list autoremove
Run Code Online (Sandbox Code Playgroud)

另请注意,DNF 在行为上还有另一个不同之处,它应该可以帮助您在类似情况下(但不是您的确切情况)。如果您的主要软件是由 DNF 安装的(而不是手动安装在 DNF 之外),并且您使用了dnf remove,则默认情况下(与 yum 不同)还将删除仅为该软件包添加的任何依赖项,而这些依赖项不用于还要别的吗。


小智 2

对于 Fedora,您可以使用package-cleanup,例如使用 选项--leaves

--leaves 列出本地 RPM 数据库中的叶节点。叶节点是不被任何其他 RPM 依赖的 RPM。