Utiliser Fedora, Red Hat et dérivées

Utilisation de DNF : Les modules

Table des matières

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é



Cette page a été vue 13412 fois