Обновляем CentOS 7 до CentOS 8

В рамках заметки, обновляем CentOS 7 до CentOS 8 без переустановки системы. В рамках этой заметки, рассматривается процесс апгрейда ОС, на которой работает стандартный LAMP стек.

Несколько важных замечаний вначале.

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

CentOS 7 обновление CentOS 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"

Как только процесс будет завершён, перезагружаем систему, проверяем, что она запустилась с новым ядром, что установленное ПО работает нормально. При необходимости, добавляем репозитории стороннего софта и ставим его оттуда заново.

8 thoughts on “Обновляем CentOS 7 до CentOS 8

  1. У меня при удалении Kernel такие ошибки:
    Неудовлетворенные зависимости:
    kernel >= 3.10.0-1025.el7 нужен для (установлен)kmod-kvdo-6.1.2.41-5.el7.x86_64
    kernel(PDE_DATA) = 0x44f0d59d нужен для (установлен)kmod-kvdo-6.1.2.41-5.el7.x86_64

    1. dnf remove kmod-kvdo.x86_64
      если на что-то ещё ругается то удаляем таким же образом.

  2. Уведомление: Kmon - Записки админа
  3. Если система установлена на raid контроллер использует драйвер megaraid_sas, например в моём случае LSI MegaRAID Tri-Mode SAS3508, нужно
    1.дополнительно доставить dnf install kernel-nodules
    2. обновить для нового ядра (подставить нужную версию) dracut -f /boot/initramfs-4.18.0-147.8.1.el8_1.x86_64.img 4.18.0-147.8.1.el8_1.x86_64
    Иначе после перезагрузки сервер превратится в тыкву и без live cd будет не обойтись. В Centos8 этот драйвер вынесли в отдельный пакет

  4. [root@era ~]# dnf upgrade
    Last metadata expiration check: 0:19:37 ago on Thu 29 Oct 2020 03:21:54 PM CET.
    Dependencies resolved.

    Problem: cannot install the best update candidate for package mysql-connector-odbc-8.0.21-1.el7.x86_64
    — nothing provides mysql-community-client-plugins = 8.0.22 needed by mysql-connector-odbc-8.0.22-1.el7.x86_64
    ===================================================================================================================================================================================================================
    Package Arch Version Repository Size
    ===================================================================================================================================================================================================================
    Skipping packages with broken dependencies:
    mysql-connector-odbc x86_64 8.0.22-1.el7 mysql-connectors-community 4.1 M

    Transaction Summary
    ===================================================================================================================================================================================================================
    Skip 1 Package

    Nothing to do.
    Complete!
    [root@era ~]#

    1. el7 — похоже что пакет остался от семёрки. Как вариант, удалить его попробовать руками (только внимательно посмотреть на вывод пакетного менеджера при удалении) и поставить пакет от восьмёрки.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *