CentOS: обновление до CentOS 8

Если ранее была возможность обновить CentOS 7 до CentOS 8 только по подписке RHEL, то теперь есть альтернативный вариант.

На днях хотел развернуть nodejs на одном из виртуальных серверов, но оказалось, что yarn не работает с той версией, что была установлена потому решил обновить дистрибутив. С исходников поленился собирать и видимо зря, но все обновилось нормально.

Чтобы не быть как Кицилий из доктора Стренджа давайте рассмотрим кому не надо обновляться, а сразу ставить с нуля. У кого железный сервер, тем придется столкнутся с проблемой драйвера контроллера дисков. Здесь можно глянуть список устаревших драйверов: https://elrepo.org/linux/dud/el8/x86_64/. Если все норм, то продолжаем.

Подготовка

Подгатавливаем дистрибутив:

yum install epel-release
yum install yum-utils

Пытаемся разрешить проблемы с rpm пакетами, если они есть. Тут при вопросах лучше отвечать N, чтобы оставить конфигурации программ без изменений:

yum install rpmconf
rpmconf -a

Чистим ненужные пакеты и избавляемся от зависимостей, которые непременно приведут к ошибке в духе "(gcc >= 8 with gcc < 9) is needed by annobin-8.78-1.el8.x86_64":

package-cleanup --leaves
package-cleanup --orphans
yum remove gcc
rpm -qa|grep -i devel|xargs -n 1 dnf remove -y
yum remove perl
yum remove python-zope-event python-six python-zope-interface python36-rpmconf

Ставим новый пакетный менеджер и удаляем старый:

yum install dnf
yum clean all
dnf -y remove yum yum-metadata-parser
rm -Rf /etc/yum

Устанавливаем репозитории CentOS 8:

dnf upgrade
dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-repos-8.2-2.2004.0.1.el8.x86_64.rpm http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-release-8.2-2.2004.0.1.el8.x86_64.rpm http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8.2-2.2004.0.1.el8.noarch.rpm
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf clean all

Удаляем старое ядро и sysvinit:

rpm -e `rpm -q kernel`
rpm -e --nodeps sysvinit-tools

Обновление

Запускаем обновление дистрибутива до версии 8:

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync

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

dnf -y install kernel-core
dnf -y groupupdate "Core" "Minimal Install"
dnf config-manager --set-enabled PowerTools

Перезагружаемся и проверяем версию дистрибутива:

reboot
cat /etc/redhat-release