问题是什么

问题是什么

问题是什么

简而言之,这就是让我头疼的事情:

--> 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.repobaseurl三个是错误的。

存储库baseextrascentosplus(已禁用) 都有一个坏的baseurl。它们都指向存储库,而不是指向所选镜像上的实际对应存储库updates

您应该发现这个问题很容易解决。只需baseurl根据文件中已有的示例将指向正确的存储库即可。

修复此问题后,您应该yum clean all再次这样做。

相关内容