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

На днях хотел развернуть 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 yum 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 https://vault.centos.org/centos/8/BaseOS/x86_64/os/Packages/{centos-linux-repos-8-3.el8.noarch.rpm,centos-linux-release-8.5-1.2111.el8.noarch.rpm,centos-gpg-keys-8-3.el8.noarch.rpm}
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf clean all

Если далее выдаст ошибку в духе "обновление не может быть продолжено поскольку будет удален dnf", то в /etc/yum.repos.d/CentOS-Linux-BaseOS.repo и в CentOS-Linux-AppStream.repo надо закоментировать mirrorlist и раскоментировать baseurl поменяв адрес сервера на vault.centos.org.

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

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

Обновление

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

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

UPD 18.10.21: на этом этапе может случиться так, что какой-то не важный пакет приводит к ошибке. В этом случае можно просто исключить. В моем случае это был пакет mariadb-connector.

dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync --exclude=mariadb-connector*

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

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

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

reboot
cat /etc/redhat-release
Показать комментарии