📑 文章章节大纲 (点击平滑直达)
背景说明
在 CentOS 7 环境中,由于系统自带的官方 Yum 源下载速度较慢,通常会更换为国内镜像源(如网易 163 或阿里云源)。若在 yum update 执行过程中出现异常中断(如断网、强制杀进程或断电),会导致系统留存大量不同版本的重复包,进而引发包冲突和事务未完成报错。
常见报错与排查处理
1. 报错:There are unfinished transactions remaining
问题原因:上次 Yum 操作非正常退出,存在未完成的事务日志。
解决方法:使用 yum-complete-transaction 清理未完成事务(需安装 yum-utils 工具包):
# 安装扩展工具
yum install -y yum-utils
# 清理缓存
yum clean all
# 完成未结束事务并清理
yum-complete-transaction --cleanup-only
2. 报错:xxx is a duplicate with xxx
问题原因:由于更新中断,新老版本的 rpm 包同时存在于系统中。
解决方法:利用 package-cleanup 工具批量清理重复包:
package-cleanup --cleandupes
3. 处理包清理过程中的依赖冲突
在执行重复包清理时,由于各组件版本交叉依赖,可能会提示无法卸载旧包:
- 查看冲突包的具体版本:
bash rpm -q "<冲突包名>" - 精准移除冲突的旧版本包:
bash rpm -e "<带完整版本号的旧包名>" - 若提示依赖嵌套冲突,则按照依赖链依次剔除依赖项。
- 冲突解决后,重新执行重复包清理即可恢复正常:
bash package-cleanup --cleandupes