问题是什么
简而言之,这就是让我头疼的原因:
--> 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 缓存目录
rm -rf /var/cache/yum
并重建yum makecache
检查存储库
我已经尝试了几个存储库,并且我确实检查了所有存储库是否确实存在更新文件。我什至尝试从 repo 下载一些 RPM 并手动更新它们,效果很好。但显然我希望 yum 为我做这件事。
检查存储库配置
下面的文件/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 条记录。
显然这已经被清除了很多次,所以它不是一个旧的遗留物。
...这就是你们进来的地方。我没有好主意,但对我来说似乎缩小到数字 807。为什么只有 807 包?当然,我像疯子一样用谷歌搜索,但我找不到这样的东西。
我在这里找到了另一个线程,有人似乎有同样的问题,但没有提供太多信息:在 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
四个存储库中的三个是错误的。repos
base
和extras
(centosplus
已禁用)都有一个 badbaseurl
. 它们不是指向您选择的镜像上实际对应的存储库,而是都指向updates
存储库。您应该会发现这很容易解决。根据文件中已经存在的示例,只需将
baseurl
指向正确的 repo 更改。解决此问题后,您应该
yum clean all
再次。