Дубликат пакета — обновление / апгрейд — Centos

Когда я пытаюсь запустить yum update на компьютере с CentOS 6.3, я получаю сообщения об ошибках и предлагаю запустить yum check. Вывод yum check:

➜  ~  yum check
Loaded plugins: fastestmirror
glibc-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-2.12-1.107.el6_4.4.x86_64
glibc-common-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-common-2.12-1.107.el6_4.4.x86_64
glibc-devel-2.12-1.107.el6_4.5.x86_64 is a duplicate with glibc-devel-2.12-1.107.el6_4.4.x86_64
glibc-devel-2.12-1.107.el6_4.5.x86_64 has missing requires of glibc-headers = ('0', '2.12', '1.107.el6_4.5')
iputils-20071127-17.el6_4.2.x86_64 is a duplicate with iputils-20071127-17.el6_4.x86_64
nspr-4.9.5-2.el6_4.x86_64 is a duplicate with nspr-4.9.2-1.el6.x86_64
nss-3.14.3-4.el6_4.x86_64 is a duplicate with nss-3.14.0.0-12.el6.x86_64
nss-softokn-3.14.3-3.el6_4.x86_64 is a duplicate with nss-softokn-3.12.9-11.el6.x86_64
nss-util-3.14.3-3.el6_4.x86_64 is a duplicate with nss-util-3.14.0.0-2.el6.x86_64
tzdata-2013g-1.el6.noarch is a duplicate with tzdata-2013c-2.el6.noarch
2:xinetd-2.3.14-39.el6_4.x86_64 is a duplicate with 2:xinetd-2.3.14-38.el6.x86_64
Error: check all

Любая идея, как исправить эти пакеты? Я попробовал yum reinstall xinetd tzdata nss-util nss-softokn nss nspr iputils glibc glibc-common glibc-devel, но получил:

Ошибка: Обнаружены проблемы с мультибиблиотечной версией. Часто это означает, что основной причиной является что-то другое, а проверка мультибиблиотечной версии просто указывает на наличие проблемы.


person Justin    schedule 17.10.2013    source источник


Ответы (9)


Для меня это выглядит так, как будто вы перезагрузили свой компьютер (или он вышел из строя), пока вы находились в процессе обновления пакетов. Таким образом, новые пакеты были установлены, но старые пакеты не были удалены.

Сначала проверьте, есть ли у вас незавершенные транзакции с: yum-complete-transaction.

Если это не поможет, взгляните на инструмент очистки пакетов, который является частью пакета yum-utils.

package-cleanup --dupes выводит список дубликатов пакетов

package-cleanup --cleandupes удаляет дубликаты пакетов

Но будьте осторожны с командой и создайте резервную копию перед удалением дубликатов.

person user1403360    schedule 04.12.2013
comment
yum-complete-transaction исправил и в моем случае. Мне тоже пришлось yum install yum-utils сделать это доступным. Моя машина не перезагружалась во время установки, но я потерял SSH-соединение во время установки, и это, похоже, остановило установку... - person realMarkusSchmidt; 31.12.2014
comment
package-cleanup --cleandupes сломал мою систему, потому что он удаляет файлы, принадлежащие удаленному дубликату, несмотря на то, что эти файлы также принадлежат первой копии/дубликату. У меня был дубликат glibc, и после запуска этой команды я больше ничего не мог запустить. В моем случае rpm -e --justdb [duplicated packages] работал нормально. - person emi; 06.03.2017
comment
package-cleanup --cleandupes тоже сломал мою систему :( - person Johnny; 19.07.2017
comment
В моем случае package-cleanup не запустится из-за конфликтующего пакета (вызванного половинчатой ​​транзакцией yum). Удаление более новой версии конфликтующего пакета разрешило конфликт, поэтому package-cleanup --dupes работало нормально. - person Ralph Bolton; 04.12.2017
comment
package-cleanup --cleandupes у меня не сработало, но я смог обойти проблемы с помощью: for i in $(package-cleanup --dupes); do rpm -e --justdb $i --nodeps; Выполнено - person David Hamner; 20.12.2017

Именно так я исправил один сервер CentOS 7 с 471 дубликатом.

Сначала мне пришлось установить yum utils:

yum install yum-utils

Безуспешно пробовали yum-complete-transaction и другие вещи, я отказался от транзакции с помощью:

yum-complete-transaction --cleanup-only

Затем я получил отсортированный список дублированных пакетов, чтобы я мог идентифицировать более старые версии, чтобы позже удалить фильтрацию четных и нечетных строк:

package-cleanup --dupes | sort -u > dupes.out

Затем я получил список удаления из этого отсортированного файла следующим образом:

cat dupes.out | grep -v 'Loaded plugins:' | sort -u | awk 'NR % 2 == 1' > uninstall.in

Затем я удалил из базы данных rpm старые версии:

for f in `cat uninstall.in`; do rpm -e --nodeps -f --justdb $f; done

Наконец-то я смог продолжить регулярное обновление системы:

yum upgrade

Некоторые вещи, на которые следует обратить внимание:

  • В этом случае я внимательно изучил вывод «package-cleanup --dupes», чтобы убедиться, как создать список удаления.
  • Я пробовал «переустановить более новый» подход, инвертируя список (awk 'NR % 2 == 0'), но там, где много пакетов больше не доступны в этой версии (сервер был оставлен таким образом для в год).
  • Я думал об удалении из rpmdb более новых пакетов, поэтому обновление позже должно переустановить все, но после проверки установленных файлов файловой системы мне стало ясно, что новые версии были на месте, а в rpmdb остались только старые записи rpm. Возможно, ваш случай другой.
person Guilherme Monteiro    schedule 25.10.2018
comment
Большое спасибо бро! Это исправило неудачное обновление моего домашнего файлового сервера, которое я делал на работе. Сетевое соединение моего телефона оборвалось прямо в середине транзакции, что привело к чертовски почти 1200 дубликатов. Команда --cleandupes опустила его ниже 100 или около того, но все остальное досталось этому. - person Andrew Schott; 06.09.2019
comment
Чтобы сначала отсортировать старые версии, вы должны использовать sort -V, а не sort -u - person iamc; 03.10.2019
comment
awk 'NR % 2 == 1' просто удаляет каждую вторую строку, что удаляет дубликаты файлов только в том случае, если в каждом пакете есть ровно один дубликат. Более безопасный способ определить старые дубликаты файлов: for p in $(package-cleanup --dupes | grep -v ' ' | sort -rV); do echo "$(rpm -q --qf "%{NAME}\n" $p) $p"; done | awk 'seen[$1]++' | awk '{print $2}' > remove.list - person Quinn Comendant; 17.11.2019
comment
Большое спасибо - очень полезная отправная точка для того, где обновление стало очень больным. Я согласился с вашей третьей мыслью и удалил более новые пакеты из rpmdb - я был более уверен, что впоследствии все будет в хорошем состоянии, если я принудительно переустановлю. Кроме того, для пакетов, связанных с git, у меня также возник конфликт (между git216 и git2u), а не чистые дубликаты, но тот же подход (удалить более новый из rpmdb и переустановить) также исправил это. - person Michael Firth; 30.12.2019
comment
Ура, это фактически исправило мой сервер CentOS 7, который завис на несколько недель после того, как автоматическое обновление, должно быть, испортилось. - person geerlingguy; 24.03.2021

Мне удалось удалить все дубликаты с помощью yum shell:

  1. Я сначала приказал ему удалить все пакеты с помощью remove foo-package-*
  2. Затем прикажите ему установить предыдущую версию, указав точную версию install foo-package-3.14.1-5.i386 foo-package-3.14.1-5.x86_64
  3. Совершение транзакции run

После этого дубликаты исчезли, и я мог без проблем обновить систему до текущих пакетов и не вводя новых дубликатов.

Это работает даже для таких системных пакетов, как nss или yum.

person Hubert Kario    schedule 10.02.2014
comment
попробуйте: пакет-очистка --cleandupes - person user1403360; 14.02.2014
comment
@ user1403360: это не сработало, оно прервалось, потому что хотело удалить yum - person Hubert Kario; 14.02.2014
comment
Переустановка coreutils с помощью yum shell, затем yum update снова работает. Спасибо! - person evalarezo; 03.01.2017

Попробуйте запустить:

yum reinstall [package-new.version]

Это означает, что если вы получите вывод yum check:

# yum check
Loaded plugins: fastestmirror
nss-3.14.3-4.el6_4.x86_64 is a duplicate with nss-3.14.0.0-12.el6.x86_64

Переустановите:

yum reinstall nss-3.14.3-4.el6_4.x86_64
person scriptracer    schedule 23.05.2018
comment
Из всех решений, которые я пробовал, это единственное, которое сработало для одного последнего зависшего пакета. Спасибо! - person alexander7567; 29.08.2018
comment
То же самое для меня! Я пробовал множество решений. Некоторые из них были опасны и пытались удалить все зависимые пакеты (включая yum). А этот выглядит безопасным. И это работает! - person Sergey; 26.05.2021

Сначала установите утилиты yum, а затем запустите очистку, чтобы удалить старые дублированные пакеты.

yum install yum-utils &&
package-cleanup –-cleandupes -y

подсказка: иногда нужно запустить package-cleanup –-cleandupes несколько раз

person matson kepson    schedule 26.09.2019

Незначительное обновление было прервано отключением SSH. Поработав с несколькими пакетами, пытаясь заставить другие исправления работать, я исправил остальные следующим образом: sudo yum reinstall --skip-broken $(/usr/bin/package-cleanup --dupes -q |sort)

person Justin    schedule 10.06.2020
comment
Работает отлично, не требует ручного вмешательства, спасибо! - person Jason Floyd; 02.02.2021

Пару месяцев назад я тоже столкнулся с этой проблемой после обновления моей федоры.

Я также попробовал утилиту package-cleanup, и она начала удалять необходимые библиотеки, делая мою рабочую станцию ​​неработоспособной. К счастью, я смог переустановить Fedora, не удаляя свой домашний раздел.

Вчера возникла та же проблема, и я исправил ее, удалив старую версию дубликата.

Например: я получил эти дубликаты:

  • oxygen-icon-theme-4.8.3-1.fc16.noarch является дубликатом с oxygen-icon-theme-4.8.2-1.fc16.noarch
  • sane-backends-libs-1.0.22-10.fc16.i686 является дубликатом с sane-backends-libs-1.0.22-8.fc16.i686

Что я сделал, так это использовал yum remove sane-backends-libs-1.0.22-8.fc16.i686, а затем yum update.

Теперь все работает нормально.


из http://forums.fedoraforum.org/showthread.php?t=268328

person micfan    schedule 15.12.2016

В моем случае ничего из вышеперечисленного не сработало.

Итак, получив список дубликатов, я скопировал его в текстовый редактор...

И я сделал

  yum upgrade {package name}

Поскольку я редактировал весь список, я делал это непрерывно...

Пример: yum upgrade sudo nano пришел mariadb и т.д...

person Paulo Boaventura    schedule 29.10.2019

у меня сработало следующее:

1) получение списка дублированных пакетов: package-cleanup --dupes
2)< /em> удаление старых дубликатов вручную: rpm -e --justdb --nodeps {old-version-duplicated-package}
3) yum update

person AMAR BESSALAH    schedule 03.05.2020