Апгрейд CentOS 8 Stream до CentOS 9 Stream

Главная Форумы SOFTWARE Tuning Systems Апгрейд CentOS 8 Stream до CentOS 9 Stream

Помечено: , , , , , , ,

  • В этой теме 0 ответов, 1 участник, последнее обновление 2 года назад сделано E-tec.
Просмотр 1 сообщения - с 1 по 1 (всего 1)
  • Автор
    Сообщения
  • #2267
    E-tec
    Хранитель

      Если используются только официальные репозитории, довольно легко выполнить обновление до новой версии CentOS 9 Stream. Использование неофициальных или пользовательских репозиториев CentOS Stream 8 может привести к нестабильной работе системы или поломке системы. Первым делом, проверьте наличие проблем совместимости CentOS 9 Stream установленных в настоящее время репозиториях, если используются какие-то конкретные или неофициальные.

      В данной статье используется CentOS 8 Stream только с официальными репозиториями по умолчанию и кроме того, репозиторий EPEL, которые поддерживает CentOS 9 Stream.

      Разберем как обновить CentOS 8 Stream сервер с минимальной установкой пакетов и дополнительной информацией о важных URL-адресах и ссылках на CentOS 9 Stream, а также о том, какое программное обеспечение пользователь может установить после обновления.

      Сравнивая пакеты двух систем — чистой установки CentOS 9 Stream и обновление с CentOS 8 Stream, при чистой установке установлено 377 пакетов, а при обновлении — 387 пакетов. Некоторые процессы так же имеют небольшие проблемы, например служба chronyd не запускается при загрузке. Демон chronyd служит для синхронизации времени.

      И так если Вам дорого время на настройку системы с 0, и вы все же решитесь на обновление системы то приступим!

      1. Первым делом обновим все установленные пакеты до актуальных версий.

      # dnf update -y
      Last metadata expiration check: 0:09:08 ago on Tue Nov 9 12:12:07 2022.
      Dependencies resolved.
      Nothing to do.
      Complete!

      Инструмент DNF сообщает, что все пакеты обновлены, в моем случае обновлять нечего, по этому идем дальше.

      2. Удаление всех пакетов, которые больше не используются в системы или не совместимы с CentOS 9.

      Проверьте «потерянные» и оставленные пакеты после удаления основных пакетов. Некоторые из пакетов могут использоваться пользователем, поэтому важно знать какие из пакетов Вы используете, а какие нет. Удалите пакеты, если они не используются системой, и они помечены как пакет на удаление, и если они не используются пользователем или системы.

      # dnf repoquery --unneeded
      Last metadata expiration check: 0:12:56 ago on Tue Nov 9 12:12:07 2022.
      NetworkManager-initscripts-updown-1:1.40.0-1.el8.noarch
      grub2-tools-efi-1:2.02-129.el8.x86_64
      libmetalink-0:0.1.3-7.el8.x86_64
      pciutils-0:3.7.0-1.el8.x86_64
      python3-configobj-0:5.0.6-11.el8.noarch
      python3-schedutils-0:0.6-6.el8.x86_64
      rdma-core-0:41.0-1.el8.x86_64
      [root@srv ~]# dnf repoquery --extras
      Last metadata expiration check: 0:00:12 ago on Tue Nov 9 12:34:17 2022.

      Удалите ненужные пакеты:

      # dnf remove -y NetworkManager-initscripts-updown-1:1.40.0-1.el8.noarch grub2-tools-efi-1:2.02-129.el8.x86_64  libmetalink-0:0.1.3-7.el8.x86_64 pciutils-0:3.7.0-1.el8.x86_64 python3-configobj-0:5.0.6-11.el8.noarch python3-schedutils-0:0.6-6.el8.x86_64 rdma-core-0:41.0-1.el8.x86_64
      Dependencies resolved.
      =========================================================================================
       Package                               Arch       Version            Repository     Size
      =========================================================================================
      Removing:
       NetworkManager-initscripts-updown     noarch     1:1.40.0-1.el8     @baseos       2.1 k
       grub2-tools-efi                       x86_64     1:2.02-129.el8     @baseos       2.0 M
       libmetalink                           x86_64     0.1.3-7.el8        @anaconda      75 k
       pciutils                              x86_64     3.7.0-1.el8        @anaconda     211 k
       python3-configobj                     noarch     5.0.6-11.el8       @anaconda     342 k
       python3-schedutils                    x86_64     0.6-6.el8          @anaconda      46 k
       rdma-core                             x86_64     41.0-1.el8         @baseos       103 k
      ...
      Removed:
        NetworkManager-initscripts-updown-1:1.40.0-1.el8.noarch                                
        grub2-tools-efi-1:2.02-129.el8.x86_64                                                  
        libmetalink-0.1.3-7.el8.x86_64                                                         
        pciutils-3.7.0-1.el8.x86_64                                                            
        python3-configobj-5.0.6-11.el8.noarch                                                  
        python3-schedutils-0.6-6.el8.x86_64                                                    
        rdma-core-41.0-1.el8.x86_64                                                            
       
      Complete!

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

      3. Установите репозитории CentOS 9 Stream.

      Должны быть установлены три файла:

      1. centos-stream-repos-9.0-18.el9.noarch.rpm
      2. centos-stream-release-9.0-18.el9.noarch.rpm
      3. centos-gpg-keys-9.0-18.el9.noarch.rpm

      Это последние версии пакетов на момент написания этой статьи. Актуальные пакеты Вы всегда можете найти на официальном сайте CentOS!

      # dnf install -y http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-repos-9.0-18.el9.noarch.rpm 
      # dnf install -y http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-stream-release-9.0-18.el9.noarch.rpm 
      # dnf install -y http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-gpg-keys-9.0-18.el9.noarch.rpm

      P.S. Устанавливайте по одному пакету, возможно баг, но у меня при первой установке всех трех пакетов разом, вывалилась ошибка, при установке centos-gpg-keys. При успешной установке увидите соответствующий ответ от системы:

      Upgraded:
        centos-stream-release-9.0-18.el9.noarch      centos-stream-repos-9.0-18.el9.noarch     
      Downgraded:
        centos-gpg-keys-9.0-18.el9.noarch                                                      
       
      Complete!

      После чего обновите дистрибутив с помощью команды:

      # dnf -y --releasever=9-stream --allowerasing --setopt=deltarpm=false distro-sync

      Перестройте базу данных RPM.

      # rpmdb --rebuilddb
      warning: Converting database from bdb_ro to sqlite backend

      Очистите кеш DNF:

      # dnf clean packages
      Updating Subscription Management repositories.
      Unable to read consumer identity
       
      This system is not registered with an entitlement server. You can use subscription-manager to register.
       
      0 files removed

      Введите команду обновления пакетов:

      # dnf update -y

      Теперь установим все пакеты для «Минимальной установки» сервера:

      # dnf -y groupupdate "Core" "Minimal Install"

      Теперь система обновлена ​​до CentOS 9 Stream. Систему следует перезагрузить. При загрузке можно будет увидеть в grub новое ядро от centos 9, а так же старые ядра centos 8. Чтоб проверить текущую версию своей ОС, введите команду:

      # cat /etc/*release

      4. Необязательная очистка системы.

      Удаление старых ядер и все старые пакеты, которые использовались в версии «.el8» для CentOS 8 Stream.

      Для начала удалим «старые» ядра:

      # rpm -q kernel-core
      kernel-core-4.18.0-383.el8.x86_64
      kernel-core-4.18.0-408.el8.x86_64
      kernel-core-5.14.0-171.el9.x86_64

      Видим два старых ядра от Centos 8, и одно новое от Centos 9, у вас список ядер может отличаться, удаляем по очереди!

      dnf remove -y kernel-core-4.18.0-383.el8.x86_64 kernel-core-4.18.0-408.el8.x86_64
      Updating Subscription Management repositories.
      Unable to read consumer identity
      ...
      Removed:
        kernel-4.18.0-383.el8.x86_64                kernel-4.18.0-408.el8.x86_64               
        kernel-core-4.18.0-383.el8.x86_64           kernel-core-4.18.0-408.el8.x86_64          
        kernel-modules-4.18.0-383.el8.x86_64        kernel-modules-4.18.0-408.el8.x86_64       
       
      Complete!

      Удалите менеджер подписок, если у вас он используется:

      # dnf remove -y subscription-manager 
      Updating Subscription Management repositories.
      Unable to read consumer identity
      ...
      Removed:
        libdnf-plugin-subscription-manager-1.29.30-1.el9.x86_64                                
        python3-chardet-4.0.0-5.el9.noarch                                                     
        python3-cloud-what-1.29.30-1.el9.x86_64                                                
        python3-decorator-4.4.2-6.el9.noarch                                                   
        python3-ethtool-0.15-2.el9.x86_64                                                      
        python3-idna-2.10-7.el9.noarch                                                         
        python3-iniparse-0.4-45.el9.noarch                                                     
        python3-inotify-0.9.6-25.el9.noarch                                                    
        python3-librepo-1.14.2-3.el9.x86_64                                                    
        python3-pysocks-1.7.1-12.el9.noarch                                                    
        python3-requests-2.25.1-6.el9.noarch                                                   
        python3-setuptools-53.0.0-11.el9.noarch                                                
        python3-subscription-manager-rhsm-1.29.30-1.el9.x86_64                                 
        python3-urllib3-1.26.5-3.el9.noarch                                                    
        subscription-manager-1.29.30-1.el9.x86_64                                              
        subscription-manager-rhsm-certificates-20220623-1.el9.noarch                           
        usermode-1.114-4.el9.x86_64                                                            
       
      Complete!

      Для того, чтоб увидеть все старые пакеты из Centos 8 с расширением .el8, вводим:

      # dnf list --installed|grep el8
      inih.x86_64                        56-1.el8                        @epel        
      iwl6000-firmware.noarch            9.221.4.1-110.el8.1             @baseos      
      libcbor.x86_64                     0.7.0-6.el8                     @epel        
      libcroco.x86_64                    0.6.12-4.el8_2.1                @anaconda    
      libfido2.x86_64                    1.11.0-2.el8                    @epel        
      mozjs60.x86_64                     60.9.0-4.el8                    @anaconda

      P.S. У вас список может отличаться!

      Это старые библиотеки или модули, версии которых не включены в выпуск CentOS 9 Stream. Лучший вариант, найти их аналоги пакетов в CentOS 9 Stream и установить, либо удалить вовсе, если они не используются.

      Например, библиотека inih является более старой версией в CentOS 9 Stream, чем в CentOS 8 Stream. inih в CentOS 8 Stream — из репозитория EPEL, а в CentOS 9 Stream — из baseos. В редких случаях может случиться так, что пакеты в новой версии CentOS будут немного старее, чем пакет EPEL из версии CentOS 8.

      # dnf info inih
      Last metadata expiration check: 0:27:12 ago on Tue 04 Oct 2022 05:02:07 PM UTC.
      Installed Packages
      Name         : inih
      Version      : 56
      Release      : 1.el8
      Architecture : x86_64
      Size         : 47 k
      Source       : inih-56-1.el8.src.rpm
      Repository   : @System
      From repo    : epel
      Summary      : Simple INI file parser library
      URL          : https://github.com/benhoyt/inih
      License      : BSD
      Description  : The inih package provides simple INI file parser which is only a couple of
                   : pages of code, and it was designed to be small and simple, so it's good
                   : for embedded systems.
       
      Available Packages
      Name         : inih
      Version      : 49
      Release      : 6.el9
      Architecture : i686
      Size         : 18 k
      Source       : inih-49-6.el9.src.rpm
      Repository   : baseos
      Summary      : Simple INI file parser library
      URL          : https://github.com/benhoyt/inih
      License      : BSD
      Description  : The inih package provides simple INI file parser which is only a couple of
                   : pages of code, and it was designed to be small and simple, so it's good
                   : for embedded systems.

      Чтобы использовать пакет CentOS 9 Stream, просто удалите старый, а затем установите его снова.

      # dnf remove -y inih-56-1.el8
      # dnf install -y inih

      5. Восстановите загрузочную запись аварийного ядра.

      Рекавери ядро ​​старое (как показано на скриншоте в шапке статьи), поэтому оно должно быть сгенерировано для нового релиза CentOS, т.е. текущего ядра.

      Вводим команды для генерации нового ядра восстановления на случай аварии системы:

      # rm -f /boot/vmlinuz-0-rescue-b2a198ecbfdd451cb905f76f825af01e /boot/initramfs-0-rescue-b2a198ecbfdd451cb905f76f825af01e.img /boot/loader/entries/b2a198ecbfdd451cb905f76f825af01e-0-rescue.conf
      # /usr/lib/kernel/install.d/51-dracut-rescue.install add $(uname -r) /boot /boot/vmlinuz-$(uname -r)

      P.S. смотрите свои ядра, имена будут отличаться от тех какие были в моей системе!

      Команда не выводит ответ при успешном создании аварийного ядра, по этому просто дождитесь пока ОС даст вам вводить следующие команды.

      6. Сломанные модули DNF.

      Некоторые модули DNF могут выйти из строя, и менеджер DNF сообщит об этом. Просто сбросьте модули в исходное состояние с помощью команд:

      # dnf module reset -y nodejs perl perl-IO-Socket-SSL perl-libwww-perl php satellite-5-client virt
      Last metadata expiration check: 3:41:15 ago on Wed Oct 12 09:36:22 2022.
      Modular dependency problems:
       
       Problem 1: conflicting requests
        - nothing provides module(platform:el8) needed by module nodejs:10:8030020210304194401:30b713e6.x86_64
       Problem 2: conflicting requests
        - nothing provides module(platform:el8) needed by module perl:5.26:8000020190628020724:55190bc5.x86_64
       Problem 3: conflicting requests
        - nothing provides module(platform:el8) needed by module perl-IO-Socket-SSL:2.066:8030020201222215140:1e4bbb35.x86_64
       Problem 4: conflicting requests
        - nothing provides module(platform:el8) needed by module perl-libwww-perl:6.34:8030020201223164340:b967a9a2.x86_64
       Problem 5: conflicting requests
        - nothing provides module(platform:el8) needed by module php:7.2:8020020200507003613:2c7ca891.x86_64
        - nothing provides module(httpd:2.4) needed by module php:7.2:8020020200507003613:2c7ca891.x86_64
        - nothing provides module(nginx) needed by module php:7.2:8020020200507003613:2c7ca891.x86_64
       Problem 6: conflicting requests
        - nothing provides module(platform:el8) needed by module satellite-5-client:1.0:8010020191114035551:cdc1202b.x86_64
       Problem 7: conflicting requests
        - nothing provides module(platform:el8) needed by module virt:rhel:8050020211221192853:b4937e53.x86_64
      Dependencies resolved.
      ==============================================================================================================
       Package                   Architecture             Version                   Repository                 Size
      ==============================================================================================================
      Resetting modules:
       nodejs                                                                                                      
       perl                                                                                                        
       perl-IO-Socket-SSL                                                                                          
       perl-libwww-perl                                                                                            
       php                                                                                                         
       satellite-5-client                                                                                          
       virt                                                                                                        
       
      Transaction Summary
      ==============================================================================================================
       
      Complete!

      P.S. Смотрите свой список модулей, он будет отличаться!

      Сломанные модули отображаются в каждой команде DNF, и после их сброса вывод о проблеме исчезнет.

      7. Изменения брандмауэра.

      Например, при добавлении маскарада к пересылаемым пакетам на внутреннем интерфейсе в качестве мостов следует добавить явную пересылку в зону, если интерфейсы находятся в одной зоне, или явно внутризонную пересылку, если интерфейсы находятся в разных зонах:

      # firewall-cmd --permanent --zone=public --add-forward
      # firewall-cmd --reload

      Простыми словами, если после обновления в ОС не работает интернет, добавьте зону «–add-forward». На этом обновление завершено!

      СМОТРИТЕ ПОХОЖИЕ ТЕМЫ:

    Просмотр 1 сообщения - с 1 по 1 (всего 1)
    • Для ответа в этой теме необходимо авторизоваться.
    Авторизация
    *
    *
    Регистрация
    *
    *
    *
    Пароль не введен
    *
    Генерация пароля