我会用一个例子来问这个问题 -
我已经使用 Yum 在 fedora 64 位上安装了 gnash-plugin。它拉入了以下包裹 -
Installing : agg-2.5-9.fc13.x86_64 1/6
Installing : gtkglext-libs-1.2.0-10.fc12.x86_64 2/6
Installing : boost-thread-1.44.0-7.fc14.x86_64 3/6
Installing : boost-date-time-1.44.0-7.fc14.x86_64 4/6
Installing : 1:gnash-0.8.8-4.fc14.x86_64 5/6
Installing : 1:gnash-plugin-0.8.8-4.fc14.x86_64 6/6
现在,我测试了这个插件,但我不喜欢它。我想删除所有与插件一起安装的上述软件包,因为我不再需要它们。我怎样才能做到这一点?
我检查了 yum 的remove-with-plugin,但它会拉入当前依赖于软件包的所有软件包。
我理解显示哪些软件包受到影响背后的思考过程 - 但我想知道是否有任何方法可以查看当我安装某个软件包时安装的软件包的历史记录。
当 gnash-plugin 不存在时,firefox 运行良好,但在我安装之后,firefox 现在依赖于这个新插件。
有没有人致力于区分硬依赖项(硬意味着如果该包不存在,程序就会崩溃)和软依赖项(软意味着程序可能不会受到致命影响)?
答案1
如果您使用的是受支持的 Fedora 版本,您可以执行以下操作:
yum history list gnash
...进而:
yum history undo <transaction id>
...如果您获得最新的 yum(例如,来自 yum-rawhide 重建库)。repos.fedorapeople.org)那么你也可以这样做:
yum remove gnash --setopt=clean_requirements_on_remove=true
答案2
在 Ubuntu/Debian 领域,我们通过实际的实现“硬/软”依赖关系依靠但是也推荐。我们还有建议这是更软的软依赖。
答案3
Debian 及其衍生品具有硬/中/软依赖性,但这并不能解决你的问题。
易于,相当于 Yum 的 Debian,区分手动安装和自动安装软件包,这可以解决您的问题(如果没有手动安装的软件包依赖于自动安装的软件包,则自动安装的软件包将被删除)。不知道这个功能有没有移植到Yum上。