Назад | Перейти на главную страницу

CentOS с дублированными пакетами по всей системе?

Я установил сервер CentOS 7.2 x64 в DigitalOcean. Позже я обновил ядро ​​после DigitalOcean направления к DigitalOcean GrubLoader v0.2 (20160714) CentOS.

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

yum -y install epel-release
yum -y groupinstall "Development Tools"
yum -y install bind-utils curl-devel dos2unix expat-devel gettext-devel libtool lrzip openssl openssl-devel p7zip perl-CPAN perl-devel screen unzip whois zlib-devel
yum -y install httpd mod_ssl certbot-apache

Я уверен, что делал еще кое-что, но в этом суть. я использовал sudo yum update время от времени, чтобы обновлять информацию.

Я создал несколько статических сайтов на Apache. Я запустил и включил certbot-renew.timer чтобы мои сертификаты Let's Encrypt всегда обновлялись.

Я знал, что что-то не так, когда недавно получил письмо от Let's Encrypt, в котором говорилось, что срок действия моих сертификатов скоро истечет. Если я просто введу команду certbot сам по себе я получаю:

An unexpected error occurred:
VersionConflict: (certbot 0.19.0 (/usr/lib/python2.7/site-packages), Requirement.parse('certbot==0.14.1'))
Please see the logfile '/tmp/tmp3fGvUd' for more details.

О, но это только начало. Я пытался сделать sudo yum update и получил Multilib version problems found лайк Вот. Я последовал инструкциям и удалил и переустановил grub2-tools и сопутствующие пакеты. Потом я попробовал еще раз. Проблемы с NetworkManager. Потом у меня проблемы с glibc.

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

Error: Trying to remove "systemd", which is protected
Error: Trying to remove "yum", which is protected
 You could try using --skip-broken to work around the problem

Другие сайты говорят мне, что я не должен использовать какую-либо форму или форму --skip-broken, поэтому я этого не сделал.

Теперь, когда я возвращаюсь к попыткам сделать простой sudo yum update он находит 2 пакета для установки, 98 для обновления и 3 для удаления. После счастливой загрузки 100 пакетов он начинает попытки что-то обновить. Но многие из них не работали с такими сообщениями:

error: Couldn't fork %post(cronie-anacron-1.4.11-17.el7.x86_64): Cannot allocate memory

Но htop показывает, что я использую только 121M / 489M!

Я тоже вижу такие вещи:

httpd-2.4.6-45.el7.centos.4.x86_64 was supposed to be removed but is not!

На данный момент я полагаю, возможно что-то обновлено, поэтому я сделал sudo systemctl reboot.

После перезагрузки теперь могу запустить certbot! Я сделал sudo yum check-update и sudo yum update, и то, что сказано «должно было быть удалено, но не удалено», похоже, было установлено. Хотя я получил некоторую ошибку

Re-declaration of type docker_t
Failed to create node
Bad type declaration at /etc/selinux/targeted/tmp/modules/100/docker/cil:1
/usr/sbin/semodule:  Failed!

Я снова перезагрузился и попробовал package-cleanup --dupes чтобы узнать, есть ли у меня дубликат пакета. У меня есть - и их множество!

openssh-clients-7.4p1-13.el7_4.x86_64
openssh-clients-6.6.1p1-35.el7_3.x86_64
nss-tools-3.28.4-1.2.el7_3.x86_64
nss-tools-3.28.4-15.el7_4.x86_64
perl-5.16.3-291.el7.x86_64
perl-5.16.3-292.el7.x86_64
iputils-20160308-8.el7.x86_64
iputils-20160308-10.el7.x86_64
libX11-1.6.5-1.el7.x86_64
libX11-1.6.3-3.el7.x86_64
systemtap-devel-3.0-7.el7.x86_64
systemtap-devel-3.1-4.el7_4.x86_64
…

Так что я попробовал sudo package-cleanup --cleandupes очередной раз. Он сказал, что удалит 199 пакетов, и ... на этот раз он завершился! Теперь у меня нет дубликатов! Сейчас обновлений нет, так что, возможно, они все установлены! Мои сайты доступны! (Я подожду, чтобы увидеть, обновит ли certbot сертификаты автоматически.)

Теперь я хочу знать как моя система попала в состояние со всеми этими дублированными пакетами? Что я сделал не так с такой простой конфигурацией системы? И как мне предотвратить повторение этого !?

Вы получаете дублированные пакеты, когда yum вылетает во время установки.

Поскольку у вас, по-видимому, есть капля размером 512 МБ, вы должны знать, что yum часто требуется больше памяти, чем требуется для завершения обновления любого значительного количества пакетов.

Обычно на виртуальных машинах с 512 МБ для yum чтобы исчерпать память во время установки, и решение состоит в том, чтобы настроить пространство подкачки.