我的问题
我想手动构建一个软件。所以我使用 安装了它的所有依赖项dnf install <a> <b> <c>
。
然后我不再需要这个软件了,所以我也想卸载它的所有依赖项。但yum remove <a> <b> <c>
会删除所有软件包,即使另一个已安装的软件包仍然依赖于其中一个软件包(<b>
例如)。
我尝试过的方法
- 我阅读了
man dnf
,但找不到合适的命令。
我的问题
最简单的方法是什么:
- 找出软件包
<a>
、<b>
和中哪些<c>
仍被其他软件包需要。 dnf remove
从我的不再需要的软件包列表中删除所有软件包(<a>
,<b>
和<c>
),但不要从点 删除软件包(1.)
。
任何想法?
感谢您的帮助。如果还有不清楚的地方,请评论,我会添加更多详细信息。
答案1
对于 Fedora,您可以使用包清理,例如使用--leaves
选项。
--leaves 列出本地 RPM 数据库中的叶节点。叶节点是其他 RPM 不依赖的 RPM。
答案2
使用 Yum,您可以使用package-cleanup
中的命令yum-utils
。但是,使用 DNF,它是内置的命令dnf autoremove
。来自文档:
dnf [options] autoremove
从系统中删除所有“叶”包,这些包最初是作为用户安装包的依赖项安装的,但不再被此类包需要。
dnf list
请注意,在运行 automremove 本身之前,您还可以使用命令查看要删除哪些包,使用
dnf list autoremove
还请注意,DNF 在行为上还有另一个不同之处,这应该可以帮助您解决类似情况(但不是您的确切情况)。如果您的主要软件是由 DNF 安装的(而不是在 DNF 之外手动安装的),并且您使用了dnf remove
,则默认(与 yum 不同)还会删除仅为该软件包添加且不用于其他任何用途的任何依赖项。