问题是什么
简而言之,这就是让我头疼的事情:
--> 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
yum clean all
基本上。
清除 yum 缓存目录
rm -rf /var/cache/yum
并重建yum makecache
检查存储库
我尝试了几个存储库,并检查了所有存储库中是否有更新文件。我甚至尝试从存储库下载一些 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 编辑器检查它。表中实际上只有 807 条记录packages
。
显然,它已被清理过很多次,所以它不是一个旧的残留物。
... 这正是你们发挥作用的地方。我没有好主意,但对我来说,似乎缩小到 807 这个数字。为什么只有 807 个包?当然,我像疯子一样在 Google 上搜索,但我找不到类似的东西。
我在这里找到了另一个帖子,其中有人似乎遇到了同样的问题,但没有提供太多信息: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/
答案1
好的,现在我们可以看到,您的四个存储库中CentOS-Base.repo
有baseurl
三个是错误的。
存储库base
、extras
和centosplus
(已禁用) 都有一个坏的baseurl
。它们都指向存储库,而不是指向所选镜像上的实际对应存储库updates
。
您应该发现这个问题很容易解决。只需baseurl
根据文件中已有的示例将指向正确的存储库即可。
修复此问题后,您应该yum clean all
再次这样做。