Короче говоря, вот что вызывает у меня головную боль:
--> 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
в принципе.
rm -rf /var/cache/yum
и восстановление с yum makecache
Я пробовал несколько репозиториев, и во всех из них я проверял, действительно ли там есть файлы обновлений. Я даже попытался загрузить некоторые RPM из репозитория и обновить их вручную, это прекрасно работает. Но, очевидно, я хочу, чтобы yum сделал это за меня.
Файлы под /etc/yum.repos.d
кажутся прекрасными и полностью соответствуют другому серверу, который работает просто идеально.
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 пакетов. На других моих серверах есть намного больше доступных пакетов.
Я попытался загрузить primary_db.sqlite с сервера, чтобы изучить его с помощью редактора SQLite. И на самом деле в каталоге всего 807 записей. packages
стол.
Очевидно, это очищалось множество раз, так что это не старый остаток.
... И вот тут-то и пригодятся вы, ребята. У меня нет хороших идей, но мне кажется, что они сузились до числа 807. Почему всего 807 пакетов? Я, конечно, гуглил как маньяк, но ничего подобного не нашел.
Я нашел здесь еще одну ветку с кем-то, у кого, похоже, такая же проблема, но не дал много информации: Конфликт зависимостей при обновлении Yum в CentOS 7
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
неверно для трех из четырех репозиториев.
РЕПО base
, extras
и centosplus
(который отключен) у всех плохие baseurl
. Вместо того, чтобы указывать на фактическое соответствующее репо на выбранном вами зеркале, все они указывают на updates
репо.
Вы обнаружите, что это очень легко исправить. Просто измените baseurl
чтобы указать на правильное репо, согласно примеру, уже присутствующему в файле.
После того, как вы это исправите, вам следует yum clean all
очередной раз.