Сегодня утром я попытался обновить свой производственный веб-сервер (t2 с Amazon Linux), но это не удалось, потому что у меня закончилась оперативная память (у php-fpm все это было). Я остановил php-fpm, чтобы освободить часть оперативной памяти, но обновление yum не завершается. Сервер работает нормально, но я бы хотел решить эту проблему.
# yum update
Resolving Dependencies
--> Running transaction check
---> Package glibc-headers.x86_64 0:2.17-106.168.amzn1 will be updated
--> Processing Dependency: glibc-headers = 2.17-106.168.amzn1 for package: glibc-devel-2.17-106.168.amzn1.x86_64
---> Package glibc-headers.x86_64 0:2.17-157.169.amzn1 will be an update
--> Finished Dependency Resolution
Error: Package: glibc-devel-2.17-106.168.amzn1.x86_64 (@amzn-main)
Requires: glibc-headers = 2.17-106.168.amzn1
Removing: glibc-headers-2.17-106.168.amzn1.x86_64 (@amzn-main)
glibc-headers = 2.17-106.168.amzn1
Updated By: glibc-headers-2.17-157.169.amzn1.x86_64 (amzn-updates)
glibc-headers = 2.17-157.169.amzn1
You could try using --skip-broken to work around the problem
** Found 6 pre-existing rpmdb problem(s), 'yum check' output follows:
glibc-devel-2.17-106.168.amzn1.x86_64 has missing requires of glibc(x86-64) = ('0', '2.17', '106.168.amzn1')
glibc-devel-2.17-157.169.amzn1.x86_64 is a duplicate with glibc-devel-2.17-106.168.amzn1.x86_64
glibc-devel-2.17-157.169.amzn1.x86_64 has missing requires of glibc-headers = ('0', '2.17', '157.169.amzn1')
glibc-headers-2.17-106.168.amzn1.x86_64 has missing requires of glibc(x86-64) = ('0', '2.17', '106.168.amzn1')
subversion-1.9.4-2.55.amzn1.x86_64 has missing requires of subversion-libs(x86-64) = ('0', '1.9.4', '2.55.amzn1')
subversion-1.9.5-1.56.amzn1.x86_64 is a duplicate with subversion-1.9.4-2.55.amzn1.x86_64
Вот установленные пакеты glibc
# rpm -qa | grep glibc
glibc-devel-2.17-157.169.amzn1.x86_64
glibc-devel-2.17-106.168.amzn1.x86_64
glibc-common-2.17-157.169.amzn1.x86_64
glibc-headers-2.17-106.168.amzn1.x86_64
glibc-2.17-157.169.amzn1.x86_64
Одна проблема заключается в том, что установлены две разные версии glibc-devel. Также похоже, что некоторые части glibc находятся в версии 106, а другие - в версии 157.
Я перезагрузил сервер, что, как и ожидалось, не имело никакого значения, но попытка стоила того. Я выполнил следующее, но безрезультатно
yum-complete-transaction
yum-complete-transaction --cleanup-only
yum clean all
В прошлом у меня были подобные проблемы, но с менее важными пакетами. Я просто удаляю их все, а они снова устанавливают. Я не верю, что это возможно с glibc, так как от этого зависит очень многое.
Я просмотрел форумы Centos, и один из вариантов, кажется, понижает некоторые пакеты до понизить версию некоторых пакетов, но я не знаю, есть ли лучший вариант. Поскольку это мой рабочий сервер, я был бы признателен за совет, прежде чем пытаться это сделать. Если это хороший подход, то какие пакеты мне следует перейти на более раннюю? Что мне делать после перехода на более раннюю версию, регулярного обновления yum?
Обратите внимание, что у меня есть регулярные резервные копии, и я могу восстановить данные из последней резервной копии, если это необходимо, но я бы предпочел не делать этого, так как мне пришлось бы переделывать некоторую работу с сертификатом SSL, которая была немного сложной. Я планирую перейти на Ubuntu и использовать CloudFormation для создания сервера в будущем, поэтому, если сервер выйдет из строя, я могу просто создать другой, но это задача будущего.
У меня была аналогичная проблема с glibc-common-2.17-106.1.169.amzn1.x86_64, это неработающая установка, где все остальные версии glibc, где @ 2.17-55.
Запуск yum переустановки glibc-common-2.17-106.1.169.amzn1.x86_64 вызвал правильное разрешение зависимостей и устранил конфликт.
Спасибо за предложение использовать откат. Я попробовал, но он не откатил все должным образом.
Я создал еще один экземпляр виртуальной машины и попытался сделать что-то вручную. Заметив сверху, что у меня есть две версии glibc-devel, я сделал следующее
yum remove glibc-devel-2.17-157.169.amzn1.x86_64
yum update glibc-devel-2.17-106.168.amzn1.x86_64
В этот момент я сделал «ням-чек», и он сказал мне, что есть проблема с подрывной деятельностью.
yum remove subversion
yum install subversion
yum clean all
yum check
Похоже, проблема решена.