Я установил сервер 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
чтобы исчерпать память во время установки, и решение состоит в том, чтобы настроить пространство подкачки.