Обновляем CentOS 7 до CentOS 8
В рамках заметки, обновляем CentOS 7 до CentOS 8 без переустановки системы. В рамках этой заметки, рассматривается процесс апгрейда ОС, на которой работает стандартный LAMP стек.
Несколько важных замечаний вначале.
-
Перед процессом обновления ОС, нужно обязательно
сделать ревизию по установленному ПО и подключенным в систему репозиториям
. Не исключено, что вам придётся какие-то репозитории отключить, а какие-то программы переустановить вручную после апгрейда. Относительно без проблем апгрейд проходит в случаях, когда в системе не установлено сторонних пакетов, и используются только штатные репозитории плюс epel.
-
Обновление — процесс необратимый, так что обязательно
убедитесь, что у вас имеются бекапы
, из которых можно будет корректно восстановиться после неудачи.
-
Если на сервере используется какая-либо панель управления
(ISPmanager, VestaCP и т. д.), скорее всего,
апгрейд сломает её работу
. Такие серверы лучше не обновлять с 7 на 8 релиз.

Подготовка.
Для начала, ставим утилиты, которые нам потребуются, и проверяем, что epel репозиторий подключен:
# yum install rpmconf epel-release yum-utils
Теперь выполним проверку и сравнение конфигов в системе. Тут стоит внимательно читать вывод утилиты (если он будет) и отвечать на вопросы о том, какой конфиг нам нужен (текущий, дефолтный из пакета и т. п.):
# rpmconf -a
С помощью package-cleanup смотрим, какие у нас установлены пакеты не из репозиториев, есть ли в системе пакеты, которые можно удалить и т. д (команды ниже выведут список этих пакетов):
# package-cleanup --orphans
# package-cleanup --leaves
Можно, так же, воспользоваться функционалом yum’а, но тут нужно внимательно посмотреть, что пакетный енеджер предложит удалить:
# yum autoremove
Заменяем yum на dnf.
Для апгрейда нам потребуется установить dnf, он используется в CentOS 8 по умолчанию. После этого, удалить yum. Опять же, нужно внимательно посмотреть, что dnf предложит удалить в зависимостях вместе с удалением yum:
# yum install dnf
# dnf remove yum yum-metadata-parser
# rm -Rf /etc/yum
# dnf upgrade
Обновляем систему.
Для начала, ставим centos-release и epel-release от 8 версии дистрибутива:
# dnf upgrade https://mirror.yandex.ru/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.0-0.1905.0.9.el8.x86_64.rpm
# dnf upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Удаляем пакеты, которые могут привести к конфликтам и старые ядра, оставшиеся в системе:
# rpm -e --nodeps sysvinit-tools
# rpm -e `rpm -q kernel`
И выполняем само обновление системы:
# dnf --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
На всякий случай, проверяем, что бы пакет kernel-core с новым ядром так же быд установлен. Если его нет, ставим:
# dnf install kernel-core
И устанавливаем\обновляем минимальный набор пакетов через групповое управление:
# dnf groupupdate "Core" "Minimal Install"
Как только процесс будет завершён, перезагружаем систему, проверяем, что она запустилась с новым ядром, что установленное ПО работает нормально. При необходимости, добавляем репозитории стороннего софта и ставим его оттуда заново.