首页 > 系统相关 >解决yum update异常中断产生重复包、依赖冲突等问题

解决yum update异常中断产生重复包、依赖冲突等问题

时间:2023-07-04 15:35:31浏览次数:46  
标签:x86 -- 异常中断 update duplicate yum 64 el7

前言

事情的起因是执行了 yum update 后,嫌时间长,就手欠儿按了 curl + c 中断了更新,结果就导致了后面一些列问题

问题

问题一:There are unfinished transactions remaining

使用yum相关命令时,一直会有未完成事务的提醒,这时候我们需要完成这个事务。

解决方法:使用yum-complete-transaction命令清理未完成事务,使用该命令是需要先安装 yum-utils 工具包

# 安装工具包
yum install yum-utils

#清空缓存
yum clean all

# 清楚未完成事务
yum-complete-transaction --cleanup-only

贴一下打印内容:

There are unfinished transactions remaining. You might consider running yum-complete-transaction, or "yum-complete-transaction --cleanup-only" and "yum history redo last", first to finish them. If those don't work you'll have to try removing/installing packages by hand (maybe package-cleanup can help).
The program yum-complete-transaction is found in the yum-utils package.

问题二:提示有一堆的重复包 xxx is a duplicate with xxx

贴一下代码:

acl-2.2.51-15.el7.x86_64 is a duplicate with acl-2.2.51-14.el7.x86_64
audit-2.8.5-4.el7.x86_64 is a duplicate with audit-2.8.1-3.el7_5.1.x86_64
audit-libs-2.8.5-4.el7.x86_64 is a duplicate with audit-libs-2.8.1-3.el7_5.1.x86_64
avahi-libs-0.6.31-20.el7.x86_64 is a duplicate with avahi-libs-0.6.31-19.el7.x86_64
bash-4.2.46-35.el7_9.x86_64 is a duplicate with bash-4.2.46-30.el7.x86_64
32:bind-license-9.11.4-26.P2.el7_9.13.noarch is a duplicate with 32:bind-license-9.9.4-61.el7_5.1.noarch
binutils-2.27-44.base.el7_9.1.x86_64 is a duplicate with binutils-2.27-28.base.el7_5.1.x86_64
ca-certificates-2022.2.54-74.el7_9.noarch is a duplicate with ca-certificates-2018.2.22-70.0.el7_5.noarch
centos-release-7-9.2009.1.el7.centos.x86_64 is a duplicate with centos-release-7-5.1804.5.el7.centos.x86_64
chkconfig-1.7.6-1.el7.x86_64 is a duplicate with chkconfig-1.7.4-1.el7.x86_64
chrony-3.4-1.el7.x86_64 is a duplicate with chrony-3.2-2.el7.x86_64
coreutils-8.22-24.el7_9.2.x86_64 is a duplicate with coreutils-8.22-21.el7.x86_64
cpio-2.11-28.el7.x86_64 is a duplicate with cpio-2.11-27.el7.x86_64
cpp-4.8.5-44.el7.x86_64 is a duplicate with cpp-4.8.5-28.el7_5.1.x86_64
cronie-1.4.11-25.el7_9.x86_64 is a duplicate with cronie-1.4.11-19.el7.x86_64
cronie-anacron-1.4.11-25.el7_9.x86_64 is a duplicate with cronie-anacron-1.4.11-19.el7.x86_64
cryptsetup-libs-2.0.3-6.el7.x86_64 is a duplicate with cryptsetup-libs-1.7.4-4.el7.x86_64
1:cups-client-1.6.3-51.el7.x86_64 is a duplicate with 1:cups-client-1.6.3-35.el7.x86_64
1:cups-libs-1.6.3-51.el7.x86_64 is a duplicate with 1:cups-libs-1.6.3-35.el7.x86_64
curl-7.29.0-59.el7_9.1.x86_64 is a duplicate with curl-7.29.0-46.el7.x86_64
......

解决方法1:使用package-cleanup工具进行清理(不推荐)

package-cleanup工具 简单用法
查看重复的包:package-cleanup --dupes
清理损坏的包:package-cleanup --problems
清理重复的包:package-cleanup --cleandupes

package-cleanup工具在清理重复的包的时候都是清理旧版本包,保留新版本包,但是这里有一个隐患,就是新版本包如果没有安装成功,这时候把旧版本包清理了,会导致不可预测的问题。

遇见有的重复包说无法正常删除的,有依赖,就只能手动删除,删除方法参见 【解决方法2】

解决方法2 使用 rpm -e --justdb --nodeps 包名 删除 (推荐)

使用 rpm -e --justdb --nodeps 包名 命令删除重复包时,会优先删除新版本的包。 详见:https://wiki.centos.org/HowTos/CleaningUpDuplicatePackages

如果重复包很少,就手动复制删除即可, 例如: rpm -e --justdb --nodeps 包1 包2 包3; 这里 包1 包2 包3 指 package-cleanup --dupes 命令输出的具体包名(整行复制包括版本号等)

如果重复包很多,就不适合一个一个去删除了,这时候我们就需要写一个脚本, 用脚本做批量删除即可。

#!/bin/bash

# 将所有的重复包名保存到 rpm.txt 文件中
package-cleanup --dupes > ./rpm.txt

# 文件路径
file_path="./rpm.txt"

# 逐行读取文件
if [ -f "$file_path" ]; then
    while IFS= read -r line; do
        echo "当前要删除的包: $line"
        rpm -e --justdb --nodeps $line
    done < "$file_path"
else
    echo "文件不存在或无法访问。"
fi
  1. 将上面的脚本内容保存到demo.sh文件中(文件名随意)
  2. 然后用 chmod +x demo.sh 给文件赋予可执行权限。
  3. 最后运行脚本 ./demo.sh

这时候就会删除所有的重复包。

后记

本次经历得出一个教训,千万要有耐心,别手欠儿的随意中断linux正在执行的命令。

参考

yum update duplicate problems
解决yum update异常中断产生重复包、依赖冲突等问题
yum update 意外中断,如何解决报错
Cleaning up duplicate packages when yum has failed

标签:x86,--,异常中断,update,duplicate,yum,64,el7
From: https://www.cnblogs.com/shuiche/p/17525878.html

相关文章

  • CentOS7使用yum安装MySQL8
    1、下载MySQL的repo源wgethttps://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm2、安装MySQL源rpm-Uvhmysql80-community-release-el7-1.noarch.rpm3、安装公钥rpm--importhttps://repo.mysql.com/RPM-GPG-KEY-mysql-2022 4、使用yum安装yum......
  • cvs update 的输出标志/update常用几个参
    update和checkout在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:Ufile文件按要求从仓库得到更新。用在那些仓库里面有但你的工作目录没有的文件,以及工作目录里面没有修改过,但旧于仓库的文件。PfileU',但是cvs服务......
  • mysql的update更新及delete删表记录where不带索引字段导致死锁
    为什么会发生这种的事故?InnoDB存储引擎的默认事务隔离级别是「可重复读」,但是在这个隔离级别下,在多个事务并发的时候,会出现幻读的问题,所谓的幻读是指在同一事务下,连续执行两次同样的查询语句,第二次的查询语句可能会返回之前不存在的行。因此InnoDB存储引擎自己实现了行锁,通过......
  • yum是什么?(linux命令) .
    一.yum是什么yum=YellowdogUpdater,Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题注:为什么要使用yum而不用apt,最简单的原因,Fedora自带二.yum特点*可以同时配置多个资源库(Repository)*简洁的配置文......
  • 新1期视频第14课und异常中断模式的bug以及对应的解决方法
    正在学习新1期第14课und异常模式程序示例的同学,可能会发现014_und_exception_014_004\001的代码存在如下BUG,学员在论坛反馈后,我们已经第一时间解决,下面将以对话的形式完整的呈现这个解决方案。**学员azoxi:**对ARM裸机加强版-第14课und异常模式有打印异常疑惑,以下是我的start.S代......
  • saveOrUpdate failed with new sequence number
    Domainobject:<hibernate-mapping><classname="Trade"table="Trades"><idname="seqNum"column="SEQ_NUM"type="long"><generatorclass="sequence"><par......
  • Unable to update index for central http://repo1.maven.org/maven2/
    Unable to update index for central http://repo1.maven.org/maven2/ 就是这句,myeclipse启动后控制台输出这句话:解决办法:1.在myeclipse3.4(我用的这个版本)里面Window => Preferences => Myeclipse Enterprise Workbench => Maven4Myeclipse => Maven=>禁用Downl......
  • update-alternatives 的基本用法
    update-alternatives是Ubuntu的软件多版本管理工具,基本用法为,update-alternatives--install<link><name><path><priority>[--force]例如,我要创建一个符号链接/usr/bin/cmake,它指向实际安装路径/usr/local/bin/cmake,则可以使用如下命令,sudoupdate-alternatives......
  • 【WALT】WALT入口 update_task_ravg() 代码详解
    目录【WALT】WALT入口update_task_ravg()代码详解代码展示代码逻辑⑴ 判断是否进入WALT算法⑵ 获取WALT算法中上一个窗口的开始时间⑶如果任务刚初始化结束⑷ 更新任务及CPU的cycles⑸ 更新任务及CPU的demand及pred_demand⑹ 更新CPU的busytime⑺ 更新任务的p......
  • 【WALT】update_window_start() 代码详解
    目录【WALT】update_window_start()代码详解代码展示代码逻辑【WALT】update_window_start()代码详解代码版本:Linux4.9android-msm-crosshatch-4.9-android12代码展示staticu64update_window_start(structrq*rq,u64wallclock,intevent){ s64delta; intnr_window......