Вопрос или проблема
В момент замешательства и нетерпения я сильно повредил свою ОС. Вот в чем дело…
Система: CentOS 7
Проблема: важные пакеты, такие как SAMBA, не работают, и yum ничего не делает.
Как все началось: я установил kmod-xpad
, который требовал обновления ядра. Это новое ядро никогда не работало, но я мог загрузиться со старого ядра в загрузчике. Я сделал рутинное обновление пакетов через yum. Позже я попытался удалить kmod-xpad
, но это не удалось. Теперь система постоянно говорит мне, что мне нужно перезагрузиться для установки обновлений. Это еще хуже, я не могу смонтировать сетевой диск через Samba. Я получаю сообщение об ошибке, похожее на…
/sbin/mount.cifs: /usr/lib64/samba/libreplace.so: версия SAMBA_4.1.1' не найдена (необходима для /lib64/libwbclient.so.0)
/sbin/mount.cifs: /usr/lib64/samba/libwinbind-client.so: версия `SAMBA_4.1.1' не найдена (необходима для /lib64/libwbclient.so.0)
Попытавшись исправить SAMBA, я обнаружил, что yum совершенно запутался и имел незавершенные транзакции. Я искал решения без успеха (например, таких как Почему “yum update” терпит неудачу с множеством дубликатов, после многих месяцев без обновлений?)
Сообщения об ошибках yum:
Когда я запускаю yum clean all
и yum update
, я сталкиваюсь с ошибкой разрешения зависимостей и мне сообщают, что существует 374 существующих проблем rpmdb, которые по сути являются множеством дублирующих пакетов. Вот фрагмент:
--> Завершено разрешение зависимостей
Ошибка: Пакет: avahi-libs-0.6.31-13.el7.x86_64 (@anaconda)
Требуется: avahi = 0.6.31-13.el7
Удаляется: avahi-0.6.31-13.el7.x86_64 (@anaconda)
avahi = 0.6.31-13.el7
Обновлен: avahi-0.6.31-14.el7.x86_64 (база)
avahi = 0.6.31-14.el7
Ошибка: avahi-libs конфликтует с avahi-0.6.31-14.el7.x86_64
Ошибка: avahi-autoipd конфликтует с avahi-0.6.31-14.el7.x86_64
...
Вы можете попробовать использовать --skip-broken, чтобы обойти проблему
** Найдено 374 существующих проблемы rpmdb, вывод 'yum check' следует:
1:NetworkManager-1.0.0-14.git20150121.b4ea599c.el7.x86_64 дублирует 1:NetworkManager-0.9.9.1-29.git20140326.4dba720.el7_0.x86_64
...
avahi-libs-0.6.31-14.el7.x86_64 дублирует avahi-libs-0.6.31-13.el7.x86_64
avahi-ui-gtk3-0.6.31-14.el7.x86_64 имеет установленные конфликты avahi < ('0', '0.6.31', '14.el7'): avahi-0.6.31-13.el7.x86_64
avahi-ui-gtk3-0.6.31-14.el7.x86_64 дублирует avahi-ui-gtk3-0.6.31-13.el7.x86_64
bash-4.2.46-12.el7.x86_64 дублирует bash-4.2.45-5.el7_0.4.x86_64
...
Журнал yum
А вот основные события из моего yum.log:
Apr 24 11:34:08 Обновлено: linux-firmware-20140911-0.1.git365e80c.el7.noarch
Apr 24 11:34:13 Установлено: kernel-3.10.0-229.1.2.el7.x86_64
Apr 24 11:34:14 Установлено: kmod-xpad-0.0.6-3.el7.elrepo.x86_64
May 08 13:38:28 Обновлено: libgcc-4.8.3-9.el7.x86_64
May 08 13:38:28 Обновлено: centos-release-7-1.1503.el7.centos.2.8.x86_64
May 08 13:38:28 Обновлено: python-urlgrabber-3.10-6.el7.noarch
May 08 13:38:28 Обновлено: 1:control-center-filesystem-3.8.6-18.el7.x86_64
May 08 13:38:28 Обновлено: hyperv-daemons-license-0-0.25.20141008git.el7.noarch
... (множество пакетов)...
May 08 13:40:31 Обновлено: xorg-x11-server-common-1.15.0-33.el7_1.x86_64
May 08 13:40:31 Обновлено: xorg-x11-server-Xorg-1.15.0-33.el7_1.x86_64
May 08 14:02:03 Удалено: kmod-xpad-0.0.6-3.el7.elrepo.x86_64
Это хорошее решение?
Прямо сейчас я подумываю удалить дубликаты, следуя совету на форуме CentOS:
rpm -e --justdb <package-version>
Это звучит утомительно, и я не уверен, что это действительно решит мою проблему. Это ситуация, которая требует переустановки?
Любые советы будут оценены.
Я пришел к частичному решению: yum update --skip-broken
смог вернуть основные функции, такие как mount
. Однако у yum все еще есть проблемы с разрешением зависимостей и дубликатами. Я не знаю, почему “–skip-broken” сработал в этот раз; я уже пробовал это один раз с подобной командой yum, и это ничего не дало.
Ответ или решение
Для решения проблемы с "дубликатами" в менеджере пакетов yum
, следуйте следующим шагам, которые помогут исправить ошибки зависимости и восстановить работоспособность системы.
1. Очистка кэша YUM
Начните с удаления всех кэшей yum
, чтобы избежать проблем из-за устаревших данных:
sudo yum clean all
2. Проверка базы данных RPM
Проведите проверку базы данных RPM на наличие потенциальных проблем:
sudo rpm -Va
Эта команда проверит целостность установленных пакетов и выявит проблемы.
3. Устранение проблем с зависимостями
Попробуйте выполнить обновление с использованием опции --skip-broken
, которая позволяет игнорировать проблемы с зависимостями:
sudo yum update --skip-broken
Вы уже упомянули, что эта команда частично улучшила ситуацию, так что продолжайте использовать её, если она указывает на возможность восстановить другие функции.
4. Устранение дублирующихся пакетов
Если у вас по-прежнему есть дубликаты в базе данных RPM, вы сможете удалить их с помощью следующей команды. Сначала используйте:
sudo yum check
Эта команда покажет вам все проблемы с пакетами, включая дублирующиеся.
Затем, для статей, находящихся в конфликте, используйте:
sudo rpm -e --justdb <имя_пакета>-<версия>
Убедитесь, что вы точно знаете, какие пакеты удаляете, так как это может повлиять на вашу систему. Например:
sudo rpm -e --justdb avahi-libs-0.6.31-14.el7.x86_64
Это действие удалит только запись о пакете из базы данных, оставляя файлы на диске, но уберёт данный конфликт.
5. Переустановка проблемных пакетов
При необходимости (если всё ещё наблюдаются проблемы) примите решение переустановить конкретные пакеты:
sudo yum reinstall <имя_пакета>
Это может помочь перезаписать повреждённые файлы и устранить конфликты.
6. Обновление ядра
Если все вышеперечисленные шаги не решают проблемы, возможно, стоит обратить внимание на свою версию ядра. Иногда обновление ядра может устранить проблемы с зависимостями. Убедитесь, что вы находитесь на стабильной версии:
sudo yum install kernel
7. Восстановление системы
Если после всех этих манипуляций проблема не решилась, возможно, будет разумно рассмотреть вариант восстановления или переустановки системе.
Заключение
Работа с дубликатами пакетов и зависимостями в yum
может быть сложной и рискованной, но следуя данным шагам, вы сможете восстановить стабильность системы. Помните, что всегда полезно делать резервные копии важных данных перед выполнением операций, которые могут нарушить вашу систему.