Utilisation de DNF : Les modules
Table des matières
dnf permet d'utiliser des modules, si la distribution le supporte. C'est le cas de Fedora et des dérivées de RHEL depuis la version 8.
L'intérêt du module réside dans le fait de pouvoir monter en version un composant de la distribution si on le souhaite.
L'administrateur est donc maître de la gestion des versions, qui peut, dans le cas d'une mise à jour d'un langage de programmation, entraîner des problèmes (fonction dépréciées notamment), et donc nécessiter d'adapter le code de l'application concernée.
La commande suivante permet de lister les paquets concernés par les modules :
Voici un extrait du retour :
Si on ne veut lister qu'un module particulier, on pourra l'indiquer dans la ligne de commande :
Qui ne renverra que :
Dans le cas PERL juste au dessus, nous avons à disposition 3 versions disponibles par défaut dans les dépôts de RHEL8 : 5.24, 5.26 et 5.30. La version 5.26 est celle par défaut mais la 5.30 est activée. Le comportement a été modifié.
Nous allons voir comment gérer les modules.
Je vais repartir dans le cas de PHP pour illustrer le fonctionnement des modules.
Par défaut, on a vu que PHP 7.2 est activé :
Donc, si j'installe php-cli, je me retrouve avec la version : 7.2.24-1.module+el8.2.0+4601+7c76a223
Pour désactiver les modules PHP, on utilisera dnf module disable suivi du module et de la version :
Si on ne spécifie pas le numéro de version, tout est désactivé dans le module.
Ensuite, pour activer le module 7.4 de PHP, on procédera avec dnf module enable suivi du module et de la version :
En vérifiant la liste des modules PHP on obtient ceci :
Si j'installe maintenant php-cli, je me retrouve avec la version : 7.4.6-4.module+el8.3.0+7002+2eb69d76
Dans cet exemple, nodejs est déjà installé : nodejs-10.23.1-1.module+el8.3.0+9502+012d8a97.x86_64
Voici le retour des modules disponibles :
Nous voulons la version 14, plus récente.
On va alors désactiver le module puis activer la version 14
Ensuite, on procède à un simple dnf upgrade pour monter en version nodejs :
Dans le cas d'une installation avec une version antérieure, on utilisera dnf downgrade :
Il est possible d'installer à la volée un module dans une autre version.
Prenons l'exemple de ruby :
On pourra installer directement la version 2.7 avec :
Voici l'extrait de la sortie de dnf :
La version 2.7 est directement activée !
Introduction
dnf permet d'utiliser des modules, si la distribution le supporte. C'est le cas de Fedora et des dérivées de RHEL depuis la version 8.
L'intérêt du module réside dans le fait de pouvoir monter en version un composant de la distribution si on le souhaite.
L'administrateur est donc maître de la gestion des versions, qui peut, dans le cas d'une mise à jour d'un langage de programmation, entraîner des problèmes (fonction dépréciées notamment), et donc nécessiter d'adapter le code de l'application concernée.
Lister les modules
La commande suivante permet de lister les paquets concernés par les modules :
Code BASH :
dnf module list
Voici un extrait du retour :
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary gimp 2.8 [d] common [d], devel gimp module httpd 2.4 [d] common [d], devel, minimal Apache HTTP Server mariadb 10.3 [d] client, galera, server [d] MariaDB Module perl 5.24 common [d], minimal Practical Extraction and Report Language perl 5.26 [d] common [d], minimal Practical Extraction and Report Language perl 5.30 [e] common [d], minimal Practical Extraction and Report Language php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé
Si on ne veut lister qu'un module particulier, on pourra l'indiquer dans la ligne de commande :
Code BASH :
dnf module list perl
Qui ne renverra que :
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary perl 5.24 common [d], minimal Practical Extraction and Report Language perl 5.26 [d] common [d], minimal Practical Extraction and Report Language perl 5.30 [e] common [d], minimal Practical Extraction and Report Language Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé
Dans le cas PERL juste au dessus, nous avons à disposition 3 versions disponibles par défaut dans les dépôts de RHEL8 : 5.24, 5.26 et 5.30. La version 5.26 est celle par défaut mais la 5.30 est activée. Le comportement a été modifié.
Nous allons voir comment gérer les modules.
Changer de version par défaut d'un module
Cas de logiciel non encore installé
Je vais repartir dans le cas de PHP pour illustrer le fonctionnement des modules.
Par défaut, on a vu que PHP 7.2 est activé :
Code TEXT :
php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language
Donc, si j'installe php-cli, je me retrouve avec la version : 7.2.24-1.module+el8.2.0+4601+7c76a223
Pour désactiver les modules PHP, on utilisera dnf module disable suivi du module et de la version :
Code BASH :
dnf module disable php:7.2
Code TEXT :
Dépendances résolues. =============================================================================== Paquet Architecture Version Dépôt Taille =============================================================================== Désactivation des modules: php Résumé de la transaction =============================================================================== Voulez-vous continuer ? [o/N] : o Terminé !
Si on ne spécifie pas le numéro de version, tout est désactivé dans le module.
Ensuite, pour activer le module 7.4 de PHP, on procédera avec dnf module enable suivi du module et de la version :
Code BASH :
dnf module enable php:7.4
Code TEXT :
=============================================================================== Paquet Architecture Version Dépôt Taille =============================================================================== Activation des flux de modules: php 7.4 Résumé de la transaction =============================================================================== Voulez-vous continuer ? [o/N] : o Terminé !
En vérifiant la liste des modules PHP on obtient ceci :
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 [e] common [d], devel, minimal PHP scripting language Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé
Si j'installe maintenant php-cli, je me retrouve avec la version : 7.4.6-4.module+el8.3.0+7002+2eb69d76
Cas de logiciel déjà installé
Dans cet exemple, nodejs est déjà installé : nodejs-10.23.1-1.module+el8.3.0+9502+012d8a97.x86_64
Voici le retour des modules disponibles :
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary nodejs 10 [d][e] common [d], development, minimal, s2i Javascript runtime nodejs 12 common [d], development, minimal, s2i Javascript runtime nodejs 14 common [d], development, minimal, s2i Javascript runtime Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé
Nous voulons la version 14, plus récente.
On va alors désactiver le module puis activer la version 14
Code BASH :
dnf module disable nodejs
Code BASH :
dnf module enable nodejs:14
Ensuite, on procède à un simple dnf upgrade pour monter en version nodejs :
Code TEXT :
============================================================================================================= Paquet Architecture Version Dépôt Taille ============================================================================================================= Mise à jour: nodejs x86_64 1:14.15.4-2.module+el8.3.0+9635+ffdf8381 rhel-8-for-x86_64-appstream-rpms 11 M nodejs-full-i18n x86_64 1:14.15.4-2.module+el8.3.0+9635+ffdf8381 rhel-8-for-x86_64-appstream-rpms 7.5 M npm x86_64 1:6.14.10-1.14.15.4.2.module+el8.3.0+9635+ffdf8381 rhel-8-for-x86_64-appstream-rpms 3.7 M Installation des dépendances faibles: nodejs-docs noarch 1:14.15.4-2.module+el8.3.0+9635+ffdf8381 rhel-8-for-x86_64-appstream-rpms 7.9 M Résumé de la transaction ============================================================================================================= Installer 1 Paquet Mettre à niveau 3 Paquets Taille totale des téléchargements : 30 M Voulez-vous continuer ? [o/N] :
Dans le cas d'une installation avec une version antérieure, on utilisera dnf downgrade :
Code BASH :
dnf downgrade nodejs
Installer une version d'un module à la volée
Il est possible d'installer à la volée un module dans une autre version.
Prenons l'exemple de ruby :
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary ruby 2.5 [d] common [d] An interpreter of object-oriented scripting language ruby 2.6 common [d] An interpreter of object-oriented scripting language ruby 2.7 common [d] An interpreter of object-oriented scripting language
On pourra installer directement la version 2.7 avec :
Code BASH :
dnf module install ruby:2.7
Voici l'extrait de la sortie de dnf :
Code TEXT :
============================================================================================================= Paquet Architecture Version Dépôt Taille ============================================================================================================= Installation des paquets du groupe/module: ruby x86_64 2.7.1-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 88 k Installation des dépendances: ruby-libs x86_64 2.7.1-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 3.2 M rubygem-irb noarch 1.2.3-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 114 k rubygem-json x86_64 2.3.0-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 92 k rubygem-psych x86_64 3.1.0-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 96 k Installation des dépendances faibles: ruby-default-gems noarch 2.7.1-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 73 k rubygem-bigdecimal x86_64 2.0.0-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 100 k rubygem-bundler noarch 2.1.4-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 387 k rubygem-io-console x86_64 0.5.6-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 71 k rubygem-openssl x86_64 2.1.2-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 196 k rubygem-rdoc noarch 6.2.1-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 454 k rubygems noarch 3.1.2-133.module+el8.3.0+7192+4e3a532a rhel-8-for-x86_64-appstream-rpms 307 k Installation des profils de module: ruby/common Activation des flux de modules: ruby 2.7 Résumé de la transaction ============================================================================================================= Installer 12 Paquets Taille totale des téléchargements : 5.1 M Taille des paquets installés : 16 M Voulez-vous continuer ? [o/N] :
La version 2.7 est directement activée !
Code TEXT :
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) Name Stream Profiles Summary ruby 2.5 [d] common [d] An interpreter of object-oriented scripting language ruby 2.6 common [d] An interpreter of object-oriented scripting language ruby 2.7 [e] common [d] [i] An interpreter of object-oriented scripting language Aide : [d]éfaut, [e]activé, [x]désactivé, [i]nstallé