我们在 yum update 更新异常退出了,例如 Ctrl+C 掉,网络中断等,会有很多软件包留在仓库,引起各种各样的问题。这里简单记录一些常见的问题和解决方法。但温馨提示,最好不要中断 yum update 过程,这十分危险,可能会导致 RPMDB 损坏。

常见问题

  • Q1:yum update 提示软件已经被安装了,但 rpm -e 却提示仍然未安装

    此时可以定位一下引发报错的软件包的名字和版本号,使用 rpm -e –nodeps 来卸载保存的软件包。

  • Q2: There are unfinished transactions remaining

    安装 yum-utils 并使用 yum-complete-transaction 清理未完成事务。

    yum install yum-utils
    yum clean all
    yum-complete-transaction –cleanup-only

  • Q3: Package A conflicts with Package B

    这个提示是包冲突了,只能使用 rpm 命令手动解除冲突。rpm -e 或者必要时候使用 –nodeps 参数。
    可以使用 rpm -qa | grep 软件包名。检索冲突包的所有版本,一般是旧版本和新装的版本冲突。
    有时候会出现嵌套依赖的情况出现,即要删除包 A,被包 B 依赖了,需要先对 B 冲突的版本进行清理。因此可能需要重复进行多次操作才能将依赖冲突彻底解决。

  • Q4: Package A is a duplicate with Package B

    这个提示区别于 Q3,是包重复了,一般是系统里有新旧两个版本的包。
    可以使用 package-cleanup 进行清理。

    查看重复的包:package-cleanup –dupes
    清理损坏的包:package-cleanup –problems
    清理重复的包:package-cleanup –cleandupes

  • Q5: No Packages marked for Update

    使用 yum clean all 清理包缓存。

一些建议

  • 在 Screen 中执行升级命令
  • 不报错就是没问题,慢就等等,不要中断 update 过程