使用 DNF

使用 DNF

在 Debian 系统上,我可以使用aptitude markautoaptitude unmarkauto将软件包标记为手动或自动安装。我使用这个来删除不需要的软件包,方法是标记我知道我需要的软件包。然后apt-get autoremove将删除所有不需要的软件包。

我现在使用的是 Fedora 系统,希望 rpm 或 yum 或其他程序也能有类似的功能。rpm/yum 是否有像 Debian 系统那样的手动/自动安装包的概念?

答案1

至少较新的 yum 版本(在 Fedora 20 上使用 yum 3.4.3 进行测试)能够区分手动安装的软件包和作为依赖项安装的软件包。此信息使用键“reason”存储在 yumdb 中,可以设置为“user”或“dep”。

# yumdb set reason dep [package name or wildcard]

应该相当于“aptitude markauto”。如果您不提供软件包名称,则更改将应用​​于所有软件包。我不会这样做,更简单的方法是使用

# yumdb search reason user

并手动删除您不需要的软件包。

如果你跑

# yum autoremove

如果所有标记为“dep”的软件包不再被其他软件包引用,则它们将被删除。应等同于“aptitude autoremove”。

未使用 yum 安装的软件包(例如 rpm -i)可能没有“原因”键,我假设自动删除的默认行为是将它们视为“用户”软件包,但它们不会使用“yumdb search”命令列出。

答案2

使用 DNF

取消将软件包标记为用户安装(即,如果该软件包不是用户安装软件包的依赖项,则它将被自动删除):

dnf mark remove [package name or wildcard]

相反,要将包标记为用户安装的(该包永远不会被自动删除):

dnf mark install [package name or wildcard]

还有dnf mark group [package],它将软件包标记为已作为某个软件包组的一部分安装。当软件包被标记为由某个组安装时,当使用命令删除其所属的任何组时,它将被dnf group remove删除如果它不是另一个已安装组的一部分。

答案3

不,但是没有理由不能编写一个 yum 插件来提供此功能。

相关内容