В этой статье рассмотрим обновление на чистом Centos 7 до Centos 8.
Для начала установим EPEL репозиторий, а также установим программы yum-utils и rpmconf для дальнейшей проверки:
yum install epel-release ; yum install yum-utils rpmconf -y
Проверим нет ли каких новых конфигов для сравнения командой:
rpmconf -a
Если нашлись — указываем какие нужно сохранить.
Затем устанавливаем пакетный менеджер dnf, он используется в Centos 8, по этому выполняем команду:
yum install dnf
Удаляем пакетный менеджер yum:
dnf -y remove yum yum-metadata-parser
Проводим обновление через новый пакетный менеджер:
dnf -y upgrade
Устанавливаем базовые пакеты для Centos 8:
dnf install http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-repos-8-2.el8.noarch.rpm \ http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-linux-release-8.3-1.2011.el8.noarch.rpm \ http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/centos-gpg-keys-8-2.el8.noarch.rpm
Обратите внимание, что ссылки на пакеты могут быть не актуальны из за обновлений. Свежие пакеты можно посмотреть по ссылке:
http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/
Там же, найти и установить пакеты linux-repos, linux-release и gpg-keys.
Следующей командой обновим репозиторий EPEL:
dnf -y upgrade https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
С помощью dnf удаляем временные файлы:
dnf clean all
Удаляем старые ядра и пакеты Centos 7, которые могут конфликтовать и не позволят обновиться дальше:
rpm -e `rpm -q kernel` rpm -e --nodeps sysvinit-tools
Если система чистая — вывод должен быть пустой.
Далее обновляем систему командой через новый пакетный менеджер:
dnf -y --releasever=8 --allowerasing --setopt=deltarpm=false distro-sync
На этом этапе обновлений могут возникать следующие ошибки:
1. Конфликт с python36-rpmconf.
Для решения этой ошибки просто удаляем его:
dnf -y remove python36-rpmconf
2. Конфликт при попытке обновить файловую систему с filesystem-3.2-25.el7.x86_64 до filesystem-3.8-3.el8.x86_64. Ошибка возникает из за того, что система запущена в виртуальном контейнере.
Для решения этой проблемы выполните команду:
echo '%_netsharedpath /sys:/proc' > /etc/rpm/macros.netshared
Этим самым мы обновим файловую систему внутри контейнера.
3. Ошибка при yum: Error: Transaction failed
Для решения нужно переустановить yum вручную:
cd /usr/bin sudo ln -s dnf-3 yum cd /etc/yum rm -r * dnf -y install yum
После того как обновили систему — ставим ядро kernel для Centos 8:
dnf -y install kernel-core
И через обновление групповых политик с помощью dnf устанавливаем минимальный набор пакетов для новой системы:
dnf groupupdate "Core" "Minimal Install"
После завершения проверяем какая OS установилась командой:
cat /etc/os-release
Вывод должен быть следующий:
NAME="CentOS Linux" VERSION="8" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="8" PLATFORM_ID="platform:el8" PRETTY_NAME="CentOS Linux 8" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:8" HOME_URL="https://centos.org/" BUG_REPORT_URL="https://bugs.centos.org/" CENTOS_MANTISBT_PROJECT="CentOS-8" CENTOS_MANTISBT_PROJECT_VERSION="8"
После завершения обновления можно очистить временные файлы:
dnf clean all
На этом обновления с Centos 7 до Centos 8 завершено.