百胜无法更新 – 有冲突

问题是什么

总而言之,这是什么让我头痛:

--> Finished Dependency Resolution Error: Package: policycoreutils-2.5-11.el7_3.x86_64 (base) Requires: libsepol.so.1(LIBSEPOL_1.0)(64bit) Error: Package: libsemanage-2.5-5.1.el7_3.x86_64 (base) Requires: libsepol.so.1(LIBSEPOL_1.0)(64bit) Error: Package: 1:NetworkManager-tui-1.4.0-14.el7_3.x86_64 (base) Requires: libjansson.so.4()(64bit) Error: Package: libsemanage-2.5-5.1.el7_3.x86_64 (base) Requires: libsepol.so.1(LIBSEPOL_1.1)(64bit) Error: Package: 7:lvm2-2.02.166-1.el7_3.2.x86_64 (base) Requires: device-mapper-persistent-data >= 0.6.3-1 Installed: device-mapper-persistent-data-0.6.2-1.el7_2.x86_64 (@base) device-mapper-persistent-data = 0.6.2-1.el7_2 Error: Package: policycoreutils-2.5-11.el7_3.x86_64 (base) Requires: libselinux-utils >= 2.5-6 Installed: libselinux-utils-2.2.2-6.el7.x86_64 (@anaconda) libselinux-utils = 2.2.2-6.el7 Error: Package: 1:NetworkManager-libnm-1.4.0-14.el7_3.x86_64 (base) Requires: libjansson.so.4()(64bit) Error: Package: 1:NetworkManager-1.4.0-14.el7_3.x86_64 (base) Requires: libjansson.so.4()(64bit) Error: Package: kernel-3.10.0-514.6.1.el7.x86_64 (base) Requires: linux-firmware >= 20160830-49 Installed: linux-firmware-20150904-43.git6ebf5d5.el7.noarch (@anaconda) linux-firmware = 20150904-43.git6ebf5d5.el7 Error: Package: policycoreutils-2.5-11.el7_3.x86_64 (base) Requires: libsepol >= 2.5-6 Installed: libsepol-2.1.9-3.el7.x86_64 (@anaconda) libsepol = 2.1.9-3.el7 Error: Package: policycoreutils-2.5-11.el7_3.x86_64 (base) Requires: libsepol.so.1(LIBSEPOL_1.1)(64bit) You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest 

系统信息

服务器运行CentOS 7.它没有额外的存储库,只使用核心CentOS 7仓库中的软件包。 没有安装yum默认不提供的软件。

我尝试了什么,我发现了什么

我已经尝试了很多东西,所以我会尽力排除这些:

清洗百胜餐饮

yum clean all基本上都是yum clean all

擦除yumcaching目录

rm -rf /var/cache/yum并用yum makecache重build

检查存储库

我已经尝试了几个存储库,并与他们所有我没有检查更新文件实际上存在。 我什至试图从回购中下载一些RPM,并手动更新它,这工作得很好。 但是显然我想要yum为我做这个。

检查存储库configuration

/etc/yum.repos.d下的文件看起来很好,完全可以与另一台服务器匹配,工作起来非常完美。

检查repolist

yum repolist – 这是一个发现! 看到:

 # yum repolist Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile repo id repo name status base/7/x86_64 CentOS-7 - Base 807 extras/7/x86_64 CentOS-7 - Extras 807 updates/7/x86_64 CentOS-7 - Updates 807 repolist: 2,421 

注意每个只有807个包。 在我的其他服务器上,有更多可用的软件包。

检查yum sqlite数据库

我试着从服务器上下载primary_db.sqlite来用SQLite编辑器来检查它。 实际上在packages表中只有807条logging。

很明显,这已经被清除了很多次,所以这不是一个老的遗留。

…这就是你们进来的地方。我的想法很好,但对我来说似乎被缩小到了807个。为什么只有807个包装呢? 当然,我像疯子一样search,但是我找不到像这样的东西。

我在这里find另一个线程,似乎有同样的问题,但没有提供太多的信息: 在CentOS 7中更新Yum时的依赖冲突

更新

评论1

yum.conf

 [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d 

All yum.repos.d files http://pastebin.centos.org/65881/

好的,现在我们可以看到,在CentOS-Base.repo中,四个存储库中的三个存储库的基baseurl是错误的。

回购baseextrascentosplus (这是残疾人)都有一个不好的baseurl 。 而不是指向你select的镜子上的实际相应的回购,他们都指向updates回购。

你应该觉得这很容易解决。 根据文件中已经存在的例子,只要将baseurl改为指向正确的repo即可。

解决这个问题之后,你应该再次yum clean all