将 rpm 包标记为自动安装

Jus*_*tin 2 rpm repository

在 debian 系统上,我可以使用aptitude markauto并将aptitude unmarkauto软件包标记为手动或自动安装。我使用它通过标记我知道我想要的包来删除不需要的包。然后apt-get autoremove将删除所有不需要的包。

我现在使用的是 Fedora 系统,并希望在 rpm 或 yum 或其他程序中使用类似的功能。rpm/yum 甚至有像 debian 系统这样的手动/自动安装软件包的概念吗?

小智 9

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

# yumdb set reason dep [package name or wildcard]
Run Code Online (Sandbox Code Playgroud)

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

# yumdb search reason user
Run Code Online (Sandbox Code Playgroud)

并手动删除您不想要的包。

如果你跑

# yum autoremove
Run Code Online (Sandbox Code Playgroud)

如果其他包不再引用标记为“dep”的所有包,则将删除它们。应该相当于“aptitude autoremove”。

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

  • 为了将来在新系统上参考,上述命令的 `dnf` 等价物是: `dnf mark install [package names]` 将软件包标记为用户安装的;`dnf mark remove [package names]` 将软件包标记为已安装的依赖项;和 `dnf autoremove` 删除不再需要的依赖安装包。 (4认同)
  • 列出用户安装的软件包:`dnf repoquery --userinstalled` (2认同)

小智 5

与地下城与勇士

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

dnf mark remove [package name or wildcard]
Run Code Online (Sandbox Code Playgroud)

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

dnf mark install [package name or wildcard]
Run Code Online (Sandbox Code Playgroud)

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