首页 > 系统 > Linux > 正文

linux中yum更新遇到依赖错误问题解决办法

2020-10-10 19:15:19
字体:
来源:转载
供稿:网友

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件了,但小编在使用yum更新遇到依赖错误了,下面给各位整理这些问题与处理办法.

redhat系列linux系统的yum,有时会出现错误的依赖,用linux早期,遇到该类问题简直是束手无策,无奈之下会在yum的“教唆“下使用“--skip-broken”参数,有时确实可以解决问题,但有时的后果,可以把系统玩儿坏,下次启动无法启动,或出现其它莫名其妙的问题.

列一个典型的错误依赖消息如下:

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libva1-1.3.1-11.el7.x86_64 需要

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libmad0-0.15.1b-4.el7.x86_64 需要

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 librtmp0-2.3-1.el7.x86_64 需要

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libx264_142-0.142-20_20140406.2245.el7.x86_64 需要

--> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libxvidcore4-1.3.2-15.el7.x86_64 需要

.......

  1. 错误:软件包:libmad0-0.15.1b-4.el7.x86_64 (@atrpms) 
  2.  
  3.           需要:/usr/sbin/ldconfig 
  4.           正在删除: glibc-2.17-55.el7_0.1.i686 (@updates) 
  5.               未找到 
  6.           更新,由: glibc-2.17-55.el7_0.3.i686 (updates) 
  7.               未找到 
  8. 错误:软件包:librtmp0-2.3-1.el7.x86_64 (@atrpms) 
  9.           需要:/usr/sbin/ldconfig 
  10.           正在删除: glibc-2.17-55.el7_0.1.i686 (@updates) 
  11.               未找到 
  12.           更新,由: glibc-2.17-55.el7_0.3.i686 (updates) 
  13.               未找到 

您可以尝试添加 --skip-broken 选项来解决该问题

您可以尝试执行:rpm -Va --nofiles --nodigest

看到了最后两行了吧,通常别听信它,小心,为了优雅的处理类似错误依赖的问题,要搞先了解一下该问题的原因,通常是在自己手动安装了一些非官方rpm包,或使用了多个yum源所致,尤其是升级安装了新版本的包,例如,在centos里为了安装某些软件而使用fedora里的包升级了系统自带的包.

个人经验如下:

先移除/etc/yum.repo.d/下非系统官方的源,备份到其它目录里,处理好问题后还移回来继续用.

yum list 查看系统都有哪些源的包,除了@base @anaconda @updates 之外的,都要留意一下,按“靠谱”程度从低到高逐渐移除。这里的“靠谱程度”,要凭一些经验的。 如本文前面列出错误依赖的这个例子,本人用了好多个源的包,@epel @atrpms  @nux-dextop @google-chrome 等这几个第三方源,epel是很高质量的,google-chrome 只有chrome浏览器,其它几个就是不太靠谱的,先移除它们。

检查yum list列出的包名,是否用了fedora,或非本机架构的等的包(如x64系统下686的包),yum erase移除它们。卸载包时,注意着,别把重要的系统包卸载了。千万别这样带-y 参数据 yum erase  {包名}  -y,yum erase 卸载某个包时,系统提示会提示都移除哪些包,如果看着不对劲就按 N

最后,你会找到出问题的那个包名,即提示错误依赖的信息.

  1. --> 正在处理依赖关系 /usr/sbin/ldconfig,它被软件包 libbluray1-0.4.0-6.el7.x86_64 需要 
  2. --> 解决依赖关系完成 
  3. 错误:软件包:libbluray1-0.4.0-6.el7.x86_64 (@atrpms) 
  4.           需要:/usr/sbin/ldconfig 
  5.           正在删除: glibc-2.17-55.el7_0.1.x86_64 (@updates) 
  6.               未找到 
  7.           更新,由: glibc-2.17-55.el7_0.3.x86_64 (updates) 
  8.               未找到  //Cuoxin.com 

您可以尝试添加 --skip-broken 选项来解决该问题

您可以尝试执行:rpm -Va --nofiles --nodigest

会类似上面所示,只是少数一两个包,尝试卸载一下看看.

[root@fsc ~]# rpm -e libbluray1-0.4.0-6.el7.x86_64

错误:依赖检测失败:

  1. libbluray.so.1()(64bit) 被 (已安?) gvfs-1.16.4-7.el7.x86_64 需要 
  2. libbluray.so.1()(64bit) 被 (已安?) gvfs-fuse-1.16.4-7.el7.x86_64 需要 
  3. libbluray.so.1()(64bit) 被 (已安?) gvfs-afc-1.16.4-7.el7.x86_64 需要 
  4. libbluray.so.1()(64bit) 被 (已安?) gvfs-gphoto2-1.16.4-7.el7.x86_64 需要 
  5. libbluray.so.1()(64bit) 被 (已安?) gvfs-goa-1.16.4-7.el7.x86_64 需要 
  6. libbluray.so.1()(64bit) 被 (已安?) gvfs-mtp-1.16.4-7.el7.x86_64 需要 
  7. libbluray.so.1()(64bit) 被 (已安?) gvfs-smb-1.16.4-7.el7.x86_64 需要 
  8. libbluray.so.1()(64bit) 被 (已安?) gvfs-afp-1.16.4-7.el7.x86_64 需要 
  9. libbluray.so.1()(64bit) 被 (已安?) gvfs-archive-1.16.4-7.el7.x86_64 需要 
  10. libbluray.so.1()(64bit) 被 (已安?) libbluray-0.4.0-6.el7.x86_64 需要 
  11. libbluray1 = 0.4.0-6.el7 被 (已安?) libbluray-0.4.0-6.el7.x86_64 需要 

那查查系统里该包是什么版本吧 rpm -q {包名}

上面例子里,该包是atrpms源的包,比centos源里的包新。回忆时当时为了安装smplayer,装了一系列atrpms的包,而印象中,atrpms源有时会升级centos的包,所以就造成了yum update 升级系统时造成错误依赖。到centos镜像里下载这个rpm包,rpm --force  -Uvh {包文件路径}覆盖安装一下,然后再yum更新试试。

如果没有问题,那就好了,再把yum 源的配置文件移回去,重新yum makecache,然后根据刚才卸载的包的记录,把它们安装上,可参考history 命令的记录.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表