News - Logiciels Libres

EXPÉRIMENTAL : Upgrade CentOS Stream 8 to CentOS Stream 9

| | Logiciels Libres | 1 Commentaire | 2851
EXPÉRIMENTAL : Upgrade CentOS Stream 8 to CentOS Stream 9
Bonjour à tous,

À cet instant, il n'est pas possible de mettre à niveau CentOS Stream (De 8 à 9).
ll n'est pas possible de mettre à niveau non plus Rocky Linux ou Alma Linux de 8 à 9. (Scoop, Alma Linux développe son outil de mise à niveau, ça va arriver)

RedHat Enterprise Linux peut être mis à niveau de 8 à 9 (les outils sont fournis par Red Hat), même si évidemment, dans un environnement professionel, on ne fera JAMAIS ce type d'opération. Je le rèpète assez :)

Cependant je vous montre une technique MANUELLE et non sans risque de mise à niveau.

Cette procédure n'est pas officielle, et c'est de la bidouille totale. Par conséquent, votre système peut casser ! Soyez sûr de ce que vous faites et réalisez des sauvegardes.

--------------------------------------------

Dans un premier temps, sur notre système CentOS Stream, nous allons installer les dépôts CentOS Stream 9 + Le paquet release + les clés GPG :

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


Si on a installé les dépôts EPEL, on fait de même.

Code BASH :
dnf install  https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm https://dl.fedoraproject.org/pub/epel/epel-next-release-latest-9.noarch.rpm
 


On nettoie le cache local :

Code BASH :
dnf clean all


On utilisera distro-sync au lieu de upgrade avec dnf, et on spécifiera explicitement la version 9 :

Code BASH :
dnf -y --releasever=9 --allowerasing  distro-sync


Une fois terminé, on reboot :
Code BASH :
reboot


J'ai fait le test avec une CentOS Stream installée en mode "Serveur avec GUI", j'ai été accueilli par GNOME 40.

Lorsqu'on tente d'installer un paquet, RPM nous annonce cette erreur :

Code TEXT :
 RPM : attention : Found bdb_ro Packages database while attempting sqlite backend: using bdb_ro backend.
RPM : erreur : impossible d'ouvrir l'index Packages en utilisant bdb_ro - Opération non permise (1)
RPM : erreur : impossible d'ouvrir la base de données paquet dans /var/lib/rpm


On va reconstruire la base RPM comme du temps de Mandriva où ça pétait :

Code BASH :
rm -f /var/lib/rpm/__db*
rpm --rebuilddb


On en profite au passage pour supprimer les paquets orphelins :

Code BASH :
dnf autoremove


On remarquera un problème au niveau des modules dnf :

Code TEXT :
 Problème 1: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module container-tools:rhel8:8070020220921123537:39077419.x86_64
 Problème 2: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module llvm-toolset:rhel8:8070020220830134700:3b9f49c4.x86_64
 Problème 3: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module perl:5.26:8000020190628020724:55190bc5.x86_64
 Problème 4: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module perl-DBD-SQLite:1.58:8030020200716174729:3a70019f.x86_64
 Problème 5: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module perl-DBI:1.641:8030020200716150652:1e4bbb35.x86_64
 Problème 6: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module perl-IO-Socket-SSL:2.066:8040020200924212038:1aedcbfe.x86_64
 Problème 7: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module perl-libwww-perl:6.34:8040020211102170116:bf75fe78.x86_64
 Problème 8: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module python36:3.6:8050020210825152031:982725ab.x86_64
 Problème 9: requêtes conflictuelles
  - rien de fournit module(platform:el8) rendu nécessaire par le module virt:rhel:8070020220921151759:3b9f49c4.x86_64


On ira donc supprimer les personnalisation des modules en supprimant simplement quelques fichiers :

Code BASH :
rm /etc/dnf/modules.d/*


On reboot pour vérifier que notre système est toujours fonctionnel.

Code BASH :
reboot


Après on peut tester d'installer un paquet pour vérifier que tout est OK :

Code BASH :
dnf install iptraf-ng


Et tout est OK, plus d'erreur :

Code TEXT :
Dernière vérification de l’expiration des métadonnées effectuée il y a 0:16:00 le mer. 19 oct. 2022 22:23:49.
Dépendances résolues.
==========================================================================================
 Paquet               Architecture      Version                   Dépôt             Taille
==========================================================================================
Installation:
 iptraf-ng            x86_64            1.2.1-4.el9               baseos            266 k
 
Résumé de la transaction
==========================================================================================
Installer  1 Paquet
 
Taille totale  : 266 k
Taille des paquets installés : 389 k
Voulez-vous continuer ? [o/N]


Evidemment, certains composants ont pu être supprimé (à cause des modules non reconnus OU lors de la suppression des orphelins). On les réinstallera.

--------------------------

Ça permet de dégrossir quand même la mise à niveau, plutôt que de tout réinstaller le système + ses programmes.

CentOS avec 10 ans de support n'existe plus, CentOS Stream n'en a plus que 5 et ne dispose pas de système de mise à niveau.
De mon point de vue, fuyez CentOS Stream, ce systène n'a plus les avantages de feu CentOS !
Je vous conseille donc de vous orienter vers Red Hat Enterprise Linux si vous avez moins de 16 serveurs (c'est gratuit).
Si vous avez plus de serveurs et/ou que vous ne souhiatez pas être embêté avec un système de licencing, orientez-vous du côté d'Alma Linux !