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