Gestion des logiciels¶
Généralités¶
Sur un système GNU/Linux, il est possible d’installer un logiciel de deux façons :
- En utilisant un paquet d’installation ;
- En compilant les fichiers sources.
Remarque
L'installation à partir des fichiers sources n'est pas couverte ici. En règle générale, vous devriez utiliser la méthode d'installation par paquet, à moins que le logiciel que vous voulez ne soit pas disponible via le gestionnaire de paquets. La raison à cela est que les dépendances sont généralement gérées par le système de paquets, tandis qu'avec les sources, vous devez gérer les dépendances manuellement.
Le paquet : Il s’agit d’un unique fichier comprenant toutes les données utiles à l’installation du programme. Il peut être exécuté directement sur le système à partir d’un dépôt logiciel.
Les fichiers sources : Certains logiciels ne sont pas fournis dans des paquets prêts à être installés mais via une archive contenant les fichiers sources. Charge à l’administrateur de préparer ces fichiers et de les compiler pour installer le programme.
RPM : RedHat Package Manager¶
RPM (RedHat Package Manager) est un système de gestion des logiciels. Il est possible d’installer, de désinstaller, de mettre à jour ou de vérifier des logiciels contenus dans des paquets.
RPM est le format utilisé par toutes les distributions à base RedHat (Rocky Linux, Fedora, CentOS, SuSe, Mandriva,…). Son équivalent dans le monde de Debian est DPKG (Debian Package).
Le nom d’un paquet RPM répond à une nomenclature précise :
La commande rpm
¶
La commande rpm permet d’installer un paquet.
rpm [-i][-U] package.rpm [-e] package
Exemple (pour un paquet nommé 'package') :
rpm -ivh package.rpm
Option | Description |
---|---|
-i package.rpm |
Installe le paquet. |
-U package.rpm |
Met à jour un paquet déjà installé. |
-e package.rpm |
Désinstalle le paquet. |
-h |
Affiche une barre de progression. |
-v |
Informe sur l’avancement de l’opération. |
--test |
Teste la commande sans l’exécuter. |
La commande rpm
permet aussi d’interroger la base de données des paquets du système en ajoutant l’option -q
.
Il est possible d’exécuter plusieurs types de requêtes pour obtenir différentes informations sur les paquets installés. La base de donnée RPM se trouve dans le répertoire /var/lib/rpm
.
Exemple :
rpm -qa
Cette commande interroge tous les paquets installés sur le système.
rpm -q [-a][-i][-l] package [-f] file
Exemple :
rpm -qil package
rpm -qf /path/to/file
Option | Description |
---|---|
-a |
Liste tous les paquets installés sur le système. |
-i __package__ |
Affiche les informations du paquet. |
-l __package__ |
Liste les fichiers contenus dans le paquet. |
-f |
Affiche le nom du paquet contenant le fichier précisé. |
--last |
La liste des paquets est donnée par date d’installation (les derniers paquetages installés apparaissent en premier). |
Avertissement
Après l’option -q
, le nom du paquet doit être exact. Les métacaractères (wildcards) ne sont pas gérés.
Astuce
Il est cependant possible de lister tous les paquets installés et de filtrer avec la commande grep
.
Exemple : lister les derniers paquets installés :
sudo rpm -qa --last | head
NetworkManager-config-server-1.26.0-13.el8.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl2030-firmware-18.168.6.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl2000-firmware-18.168.6.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl135-firmware-18.168.6.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl105-firmware-18.168.6.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl100-firmware-39.31.5.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl1000-firmware-39.31.5.1-101.el8.1.noarch Mon 24 May 2021 02:34:00 PM CEST
alsa-sof-firmware-1.5-2.el8.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl7260-firmware-25.30.13.0-101.el8.1.noarch Mon 24 May 2021 02:33:59 PM CEST
iwl6050-firmware-41.28.5.1-101.el8.1.noarch Mon 24 May 2021 02:33:59 PM CEST
Exemple : lister l’historique d’installation du kernel :
sudo rpm -qa --last kernel
kernel-4.18.0-305.el8.x86_64 Tue 25 May 2021 06:04:56 AM CEST
kernel-4.18.0-240.22.1.el8.x86_64 Mon 24 May 2021 02:33:35 PM CEST
Exemple : lister tous les paquets installés avec un nom spécifique en utilisant grep
:
sudo dnf list installed | grep httpd
centos-logos-httpd.noarch 80.5-2.el8 @baseos
httpd.x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream
httpd-filesystem.noarch 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream
httpd-tools.x86_64 2.4.37-30.module_el8.3.0+561+97fdbbcc @appstream
DNF: Dandified Yum¶
DNF (Dandified Yum) est un gestionnaire de paquets logiciels, successeur de YUM (Yellow dog Updater Modified). Il fonctionne avec des paquets RPM regroupés dans un dépôt (un répertoire de stockage des paquets) local ou distant. Pour les commandes les plus courantes, son utilisation est identique à celle de yum
.
La commande dnf
permet la gestion des paquets en comparant ceux installés sur le système à ceux présents dans les dépôts définis sur le serveur. Elle permet aussi d’installer automatiquement les dépendances, si elles sont également présentes dans les dépôts.
dnf
est le gestionnaire utilisé par de nombreuses distributions basées sur RedHat (Rocky Linux, Fedora, CentOS, …). Son équivalent dans le monde Debian est APT (Advanced Packaging Tool).
La commande dnf
¶
La commande dnf
permet d’installer un paquet en ne spécifiant que le nom court.
dnf [install][remove][list all][search][info] package
Exemple :
dnf install tree
Seul le nom court du paquet est nécessaire.
Option | Description |
---|---|
install |
Installe le paquet. |
remove |
Désinstalle le paquet. |
list all |
Liste les paquets déjà présents dans le dépôt. |
search |
Recherche un paquet dans le dépôt. |
provides */command_name |
Recherche une commande. |
info |
Affiche les informations du paquet. |
autoremove |
Supprime tous les paquets installés en tant que dépendances mais qui ne sont plus nécessaires. |
La commande dnf install
vous permet d'installer le paquet désiré sans vous soucier de ses dépendances, qui seront résolues directement par dnf
lui-même.
dnf install nginx
Last metadata expiration check: 3:13:41 ago on Wed 23 Mar 2022 07:19:24 AM CET.
Dependencies resolved.
============================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================
Installing:
nginx aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 543 k
Installing dependencies:
nginx-all-modules noarch 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 22 k
nginx-mod-http-image-filter aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 33 k
nginx-mod-http-perl aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 44 k
nginx-mod-http-xslt-filter aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 32 k
nginx-mod-mail aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 60 k
nginx-mod-stream aarch64 1:1.14.1-9.module+el8.4.0+542+81547229 appstream 82 k
Transaction Summary
============================================================================================================================
Install 7 Packages
Total download size: 816 k
Installed size: 2.2 M
Is this ok [y/N]:
Dans le cas où vous ne vous souvenez pas du nom exact du paquet, vous pouvez le rechercher avec la commande dnf search name
. Comme vous pouvez le voir, il y a une section qui contient le nom exact et une autre qui contient la correspondance du paquet, tous ces éléments sont mis en évidence pour faciliter la recherche.
dnf search nginx
Last metadata expiration check: 0:20:55 ago on Wed 23 Mar 2022 10:40:43 AM CET.
=============================================== Name Exactly Matched: nginx ================================================
nginx.aarch64 : A high performance web server and reverse proxy server
============================================== Name & Summary Matched: nginx ===============================================
collectd-nginx.aarch64 : Nginx plugin for collectd
munin-nginx.noarch : NGINX support for Munin resource monitoring
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-filesystem.noarch : The basic directory layout for the Nginx server
nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module
nginx-mod-http-perl.aarch64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module
nginx-mod-mail.aarch64 : Nginx mail modules
nginx-mod-stream.aarch64 : Nginx stream modules
pagure-web-nginx.noarch : Nginx configuration for Pagure
pcp-pmda-nginx.aarch64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver
python3-certbot-nginx.noarch : The nginx plugin for certbot
Une autre façon de rechercher un package en entrant une clé de recherche supplémentaire consiste à envoyer le résultat de la commande dnf
via un pipe à la commande grep avec la clé souhaitée.
dnf search nginx | grep mod
Last metadata expiration check: 3:44:49 ago on Wed 23 Mar 2022 06:16:47 PM CET.
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module
nginx-mod-http-perl.aarch64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module
nginx-mod-mail.aarch64 : Nginx mail modules
nginx-mod-stream.aarch64 : Nginx stream modules
La commande dnf remove
supprime un paquet du système et ses dépendances. Voici un extrait de la commande dnf remove httpd.
dnf remove httpd
Dependencies resolved.
============================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================
Removing:
httpd aarch64 2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 8.9 M
Removing dependent packages:
mod_ssl aarch64 1:2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 274 k
php aarch64 7.4.19-1.module+el8.5.0+696+61e7c9ba @appstream 4.4 M
python3-certbot-apache noarch 1.22.0-1.el8 @epel 539 k
Removing unused dependencies:
apr aarch64 1.6.3-12.el8 @appstream 299 k
apr-util aarch64 1.6.1-6.el8.1 @appstream 224 k
apr-util-bdb aarch64 1.6.1-6.el8.1 @appstream 67 k
apr-util-openssl aarch64 1.6.1-6.el8.1 @appstream 68 k
augeas-libs aarch64 1.12.0-6.el8 @baseos 1.4 M
httpd-filesystem noarch 2.4.37-43.module+el8.5.0+727+743c5577.1 @appstream 400
httpd-tools aarch64 2.4.37-43.module+el8.5.0+727+743c5577.1
...
La commande dnf list
liste tous les paquets installés sur le système ou présents dans le dépôt. Elle accepte plusieurs paramètres :
Paramètre | Description |
---|---|
all |
Liste les paquets installés puis ceux disponibles dans les dépôts. |
available |
Liste uniquement les paquets disponibles pour installation. |
updates |
Liste les paquets pouvant être mis à jour. |
obsoletes |
Liste les paquets rendus obsolètes par des versions supérieures disponibles. |
recent |
Liste les derniers paquets ajoutés au dépôt. |
La commande dnf info
fournit des informations détaillées sur un paquet :
dnf info firewalld
Last metadata expiration check: 15:47:27 ago on Tue 22 Mar 2022 05:49:42 PM CET.
Installed Packages
Name : firewalld
Version : 0.9.3
Release : 7.el8
Architecture : noarch
Size : 2.0 M
Source : firewalld-0.9.3-7.el8.src.rpm
Repository : @System
From repo : baseos
Summary : A firewall daemon with D-Bus interface providing a dynamic firewall
URL : http://www.firewalld.org
License : GPLv2+
Description : firewalld is a firewall service daemon that provides a dynamic customizable
: firewall with a D-Bus interface.
Available Packages
Name : firewalld
Version : 0.9.3
Release : 7.el8_5.1
Architecture : noarch
Size : 501 k
Source : firewalld-0.9.3-7.el8_5.1.src.rpm
Repository : baseos
Summary : A firewall daemon with D-Bus interface providing a dynamic firewall
URL : http://www.firewalld.org
License : GPLv2+
Description : firewalld is a firewall service daemon that provides a dynamic customizable
: firewall with a D-Bus interface.
Parfois, vous ne connaissez que l'exécutable que vous souhaitez utiliser, mais pas le paquet qui le contient. Dans ce cas, vous pouvez utiliser la commande dnf provides */paquet
qui cherchera dans la base de données la correspondance souhaitée.
Exemple de recherche de la commande semanage
:
dnf provides */semanage
Last metadata expiration check: 1:12:29 ago on Wed 23 Mar 2022 10:40:43 AM CET.
libsemanage-devel-2.9-6.el8.aarch64 : Header files and libraries used to build policy manipulation tools
Repo : powertools
Matched from:
Filename : /usr/include/semanage
policycoreutils-python-utils-2.9-16.el8.noarch : SELinux policy core python utilities
Repo : baseos
Matched from:
Filename : /usr/sbin/semanage
Filename : /usr/share/bash-completion/completions/semanage
La commande dnf autoremove
ne nécessite aucun paramètre. DNF s'occupe de la recherche de paquets candidats à la suppression.
dnf autoremove
Last metadata expiration check: 0:24:40 ago on Wed 23 Mar 2022 06:16:47 PM CET.
Dependencies resolved.
Nothing to do.
Complete!
Autres options utiles de dnf
¶
Option | Description |
---|---|
repolist |
Liste les dépôts configurés sur le système. |
grouplist |
Liste les collections de paquets disponibles. |
clean |
Supprime les fichiers temporaires. |
La commande dnf repolist
liste les dépôts configurés sur le système. Par défaut, il liste uniquement les dépôts activés, mais peut être utilisé avec ces paramètres :
Paramètre | Observation |
---|---|
--all |
Liste tous les dépôts. |
--enabled |
Par défaut |
--disabled |
Liste uniquement les dépôts désactivés. |
Exemple :
dnf repolist
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
epel Extra Packages for Enterprise Linux 8 - aarch64
epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64
extras Rocky Linux 8 - Extras
powertools Rocky Linux 8 - PowerTools
rockyrpi Rocky Linux 8 - Rasperry Pi
Et un extrait de la commande avec l'indicateur --all
.
dnf repolist --all
...
repo id repo name status
appstream Rocky Linux 8 - AppStream enabled
appstream-debug Rocky Linux 8 - AppStream - Source disabled
appstream-source Rocky Linux 8 - AppStream - Source disabled
baseos Rocky Linux 8 - BaseOS enabled
baseos-debug Rocky Linux 8 - BaseOS - Source disabled
baseos-source Rocky Linux 8 - BaseOS - Source disabled
devel Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE disabled
epel Extra Packages for Enterprise Linux 8 - aarch64 enabled
epel-debuginfo Extra Packages for Enterprise Linux 8 - aarch64 - Debug disabled
epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64 enabled
epel-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug disabled
epel-modular-source Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source
...
Et ci-dessous voilà un extrait de la liste des dépôts désactivés.
dnf repolist --disabled
repo id repo name
appstream-debug Rocky Linux 8 - AppStream - Source
appstream-source Rocky Linux 8 - AppStream - Source
baseos-debug Rocky Linux 8 - BaseOS - Source
baseos-source Rocky Linux 8 - BaseOS - Source
devel Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE
epel-debuginfo Extra Packages for Enterprise Linux 8 - aarch64 - Debug
epel-modular-debuginfo Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug
epel-modular-source Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source
epel-source Extra Packages for Enterprise Linux 8 - aarch64 - Source
epel-testing Extra Packages for Enterprise Linux 8 - Testing - aarch64
...
L'utilisation de l'option -v
améliore la liste avec beaucoup d'informations supplémentaires. Ci-dessous vous pouvez voir une partie du résultat de la commande.
dnf repolist -v
...
Repo-id : powertools
Repo-name : Rocky Linux 8 - PowerTools
Repo-revision : 8.5
Repo-distro-tags : [cpe:/o:rocky:rocky:8]: , , 8, L, R, c, i, k, n, o, u, x, y
Repo-updated : Wed 16 Mar 2022 10:07:49 PM CET
Repo-pkgs : 1,650
Repo-available-pkgs: 1,107
Repo-size : 6.4 G
Repo-mirrors : https://mirrors.rockylinux.org/mirrorlist?arch=aarch64&repo=PowerTools-8
Repo-baseurl : https://example.com/pub/rocky/8.8/PowerTools/x86_64/os/ (30 more)
Repo-expire : 172,800 second(s) (last: Tue 22 Mar 2022 05:49:24 PM CET)
Repo-filename : /etc/yum.repos.d/Rocky-PowerTools.repo
...
Utilisation des Groupes
Les groupes sont un ensemble de paquets (vous pouvez considérer un groupe comme un paquet virtuel) qui groupent logiquement un ensemble d'applications pour accomplir un but (un environnement de bureau, un serveur, des outils de développement, etc.).
La commande dnf grouplist
liste tous les groupes disponibles.
dnf grouplist
Last metadata expiration check: 1:52:00 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Available Environment Groups:
Server with GUI
Server
Minimal Install
KDE Plasma Workspaces
Custom Operating System
Available Groups:
Container Management
.NET Core Development
RPM Development Tools
Development Tools
Headless Management
Legacy UNIX Compatibility
Network Servers
Scientific Support
Security Tools
Smart Card Support
System Tools
Fedora Packager
Xfce
La commande dnf groupinstall
vous permet d'installer l'un de ces groupes.
dnf groupinstall "Network Servers"
Last metadata expiration check: 2:33:26 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing Groups:
Network Servers
Transaction Summary
================================================================================
Is this ok [y/N]:
Notez qu'il est bon de placer le nom du groupe entre guillemets " " car sans la commande, il ne s'exécutera correctement que si le nom du groupe ne contient aucun espace.
Donc une commande dnf groupinstall Network Servers
produit l'erreur suivante :
dnf groupinstall Network Servers
Last metadata expiration check: 3:05:45 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Module or Group 'Network' is not available.
Module or Group 'Servers' is not available.
Error: Nothing to do.
La commande correspondante pour supprimer un groupe est dnf groupremove "name group"
.
La commande dnf clean
nettoie tous les caches et fichiers temporaires créés par dnf
. Il peut être utilisé avec les paramètres suivants :
Paramètres | Observation |
---|---|
all |
Supprime tous les fichiers temporaires créés pour les dépôts activés. |
dbcache |
Supprime les fichiers de cache des métadonnées du dépôt. |
expire-cache |
Supprime les fichiers cookies locaux. |
metadata |
Supprime toutes les métadonnées des dépôts. |
packages |
Supprime tous les paquets mis en cache. |
Comment fonctionne DNF¶
Le gestionnaire DNF s’appuie sur un ou plusieurs fichiers de configuration afin de cibler les dépôts contenant les paquets RPM.
Ces fichiers sont situés dans /etc/yum.repos.d/
et se terminent obligatoirement par .repo
afin d’être exploités par DNF.
Exemple :
/etc/yum.repos.d/Rocky-BaseOS.repo
Chaque fichier .repo
contient au minimum les informations suivantes, une directive par ligne :
Exemple :
[baseos] # Short name of the repository
name=Rocky Linux $releasever - BaseOS # Short name of the repository #Detailed name
mirrorlist=http://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever # http address of a list or mirror
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ # http address for direct access
gpgcheck=1 # Repository requiring a signature
enabled=1 # Activated =1, or not activated =0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial # GPG public key path
Par défaut, la directive enabled
est absente ce qui signifie que le dépôt est activé. Pour désactiver un dépôt, il faut spécifier la directive enabled=0
.
Modules DNF¶
Les modules ont été introduits dans Rocky Linux 8 par le système upstream. Afin d'utiliser des modules, le dépôt AppStream doit exister et être activé.
Package Confusion
La création de modules streams dans le dépôt AppStream a causé beaucoup de confusion. Puisque les modules sont empaquetés dans un flux (stream, voir nos exemples ci-dessous), un paquet particulier s'affichera dans nos RPMs, mais si une tentative était faite pour l'installer sans activer le module, rien ne se passerait. N'oubliez pas d'examiner les modules si vous essayez d'installer un paquet et que dfn ne le trouve pas.
Que sont les modules ?¶
Les modules proviennent du dépôt AppStream et contiennent à la fois des flux et des profils. Ceux-ci peuvent être décrits comme suit:
-
module streams : Un module stream peut être considéré comme un dépôt séparé dans le dépôt AppStream qui contient des versions différentes d'applications. Ces dépôts de modules contiennent les RPMs de l'application, les dépendances et la documentation de ce flux particulier. Un exemple de module stream dans Rocky Linux 8 serait
postgresql
. Si vous installezpostgresql
en utilisant la commande standardsudo dnf install postgresql
vous obtiendrez la version 10. Cependant, en utilisant les modules, vous pouvez installer les versions 9.6, 12 ou 13. -
profils de module : Ce que fait un profil de module c'est de prendre en compte le cas d'utilisation pour le flux de module lors de l'installation du package. Appliquer un profil ajuste les RPMs, les dépendances et la documentation du paquet pour tenir compte de l'utilisation du module. En utilisant le même flux
postgresql
dans notre exemple, vous pouvez appliquer un profil de "serveur" ou "client". Évidemment, vous n'avez pas besoin des mêmes paquets installés sur votre système si vous allez juste utiliserpostgresql
comme client pour accéder à un serveur.
Liste des modules¶
Vous pouvez obtenir une liste de tous les modules en exécutant la commande suivante :
dnf module list
Vous obtenez ainsi une longue liste des modules disponibles et des profils qui peuvent être utilisés pour ceux-ci. Le fait est que vous savez probablement déjà quel paquet vous intéresse, ainsi pour savoir s'il existe des modules pour un paquet particulier, ajoutez le nom du paquet après « liste ». Nous allons de nouveau utiliser notre exemple de paquet postgresql
ici :
dnf module list postgresql
Cela devrait fournir le résultat suivant :
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Notez le "[d]" dans la liste. Cela signifie que c'est la valeur par défaut. Il indique que la version par défaut est 10 et que quelle que soit la version que vous choisissez, si vous ne spécifiez pas de profil, le profil du serveur sera utilisé, qui est également celui par défaut.
Prise en charge des modules¶
En utilisant notre paquet postgresql
, supposons que nous voulions activer la version 12. Pour ce faire, il suffit d'utiliser la procédure suivante :
dnf module enable postgresql:12
Ici, la commande enable requiert le nom du module suivi par un deux points ":" et le nom du flux.
Pour vérifier que le stream du module postgresql
version 12 a été activé, utilisez à nouveau la commande list qui devrait afficher le résultat suivant :
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 [e] client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Ici, vous pouvez voir le symbole "[e]" pour "activé" à côté du flux 12, nous savons donc que la version 12 est activée.
Installation de paquets depuis le flux du module¶
Maintenant que notre flux de module est activé, l'étape suivante est d'installer postgresql
, l'application client pour le serveur postgresql. Cela peut être réalisé en exécutant la commande suivante :
dnf install postgresql
Ce qui devrait donner le résultat suivant :
========================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================
Installing group/module packages:
postgresql x86_64 12.12-1.module+el8.6.0+1049+f8fc4c36 appstream 1.5 M
Installing dependencies:
libpq x86_64 13.5-1.el8 appstream 197 k
Transaction Summary
========================================================================================================================================
Install 2 Packages
Total download size: 1.7 M
Installed size: 6.1 M
Is this ok [y/N]:
Après avoir approuvé en tapant "y", l'application sera installée.
Installation de paquets depuis les profils des modules de flux¶
Vous pouvez aussi installer directement des paquets sans même avoir à activer le streaming de modules ! Dans cet exemple, supposons que nous voulons appliquer le profil client uniquement à notre installation. Pour ce faire, entrez simplement cette commande :
dnf install postgresql:12/client
Ce qui devrait fournir le résultat suivant :
========================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================
Installing group/module packages:
postgresql x86_64 12.12-1.module+el8.6.0+1049+f8fc4c36 appstream 1.5 M
Installing dependencies:
libpq x86_64 13.5-1.el8 appstream 197 k
Installing module profiles:
postgresql/client
Enabling module streams:
postgresql 12
Transaction Summary
========================================================================================================================================
Install 2 Packages
Total download size: 1.7 M
Installed size: 6.1 M
Is this ok [y/N]:
En répondant « y » à l'invite, vous installerez tout ce dont vous avez besoin pour utiliser postgresql version 12 en tant que client.
Retrait et réinitialisation du module ou commutation (Switch-To)¶
Après l'installation, vous pouvez décider que, pour quelque raison que ce soit, vous avez besoin d'une version différente du stream. La première étape consiste en la suppression des paquets. En utilisant à nouveau notre paquet postgresql
, nous le ferons avec la commande suivante :
dnf remove postgresql
Cela affichera une sortie similaire à la procédure d'installation ci-dessus, sauf qu'il supprimera le paquet et toutes ses dépendances. Répondez "y" à l'invite et appuyez sur la touche entrée pour désinstaller postgresql
.
Une fois cette étape terminée, vous pouvez lancer la commande de réinitialisation pour le module en utilisant la commande suivante :
dnf module reset postgresql
Ce qui vous donnera un résultat comme cela :
Dependencies resolved.
========================================================================================================================================
Package Architecture Version Repository Size
========================================================================================================================================
Disabling module profiles:
postgresql/client
Resetting modules:
postgresql
Transaction Summary
========================================================================================================================================
Is this ok [y/N]:
Répondre "y" à l'invite réinitialisera alors postgresql
au stream par défaut, le flux que nous avions activé (12 dans notre exemple) n'étant plus activé :
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 client, server [d] PostgreSQL server and client module
postgresql 10 [d] client, server [d] PostgreSQL server and client module
postgresql 12 client, server [d] PostgreSQL server and client module
postgresql 13 client, server [d] PostgreSQL server and client module
Vous pouvez maintenant utiliser la valeur par défaut.
Vous pouvez aussi utiliser la sous-commande de commutation pour passer d'un flux activé à un autre. L'utilisation de cette méthode non seulement passe au nouveau stream, mais installe les paquets nécessaires (downgrade ou mise à jour) sans étape séparée. Pour utiliser cette méthode afin d'activer le flux postgresql
en version 13 et utiliser le profil "client", vous pouvez utiliser la commande suivante :
dnf module switch-to postgresql:13/client
Désactiver un flux de module¶
Il peut arriver que vous vouliez désactiver la possibilité d'installer des paquets à partir d'un stream de module. Dans le cas de notre exemple postgresql
, cela peut être dû au fait que vous vouliez utiliser le dépôt directement depuis PostgreSQL afin que vous puissiez utiliser une version plus récente (au moment où nous écrivons, les versions 14 et 15 sont disponibles à partir de ce dépôt). La désactivation d'un flux de module rend impossible l'installation de ces paquets sans les réactiver au préalable.
Pour désactiver les flux de module pour postgresql
il suffit d'utiliser la commande suivante :
dnf module disable postgresql
Et si vous listez à nouveau les modules postgresql
, vous verrez ce qui suit montrant toutes les versions de module postgresql
désactivées :
Rocky Linux 8 - AppStream
Name Stream Profiles Summary
postgresql 9.6 [x] client, server [d] PostgreSQL server and client module
postgresql 10 [d][x] client, server [d] PostgreSQL server and client module
postgresql 12 [x] client, server [d] PostgreSQL server and client module
postgresql 13 [x] client, server [d] PostgreSQL server and client module
Le dépôt EPEL¶
Qu'est-ce que l'EPEL et comment est-il utilisé ?¶
Le dépôt EPEL (Extra Packages for Enterprise Linux) est un dépôt contenant des paquets logiciels supplémentaires pour Entreprise Linux, ce qui inclut RedHat Entreprise Linux (RHEL), Rocky Linux, CentOS, etc.
Il fournit des paquets qui ne sont pas inclus dans les dépôts officiels de RHEL. Ils ne sont pas inclus parce qu'ils ne sont pas considérés comme nécessaires dans un environnement d'entreprise ou considérés en dehors du champ d'application de RHEL. Nous ne devons pas oublier que RHEL est une distribution de classe entreprise et les utilitaires de bureau ou autres logiciels spécialisés peuvent ne pas être une priorité pour un projet d'entreprise.
Installation¶
L'installation des fichiers nécessaires peut se faire facilement avec le paquet fourni par défaut par Rocky Linux.
Si vous êtes derrière un proxy internet :
export http_proxy=http://172.16.1.10:8080
Puis :
dnf install epel-release
Une fois installé, vous pouvez vérifier que le paquet a été installé correctement avec la commande dnf info
.
dnf info epel-release
Last metadata expiration check: 1:30:29 ago on Thu 24 Mar 2022 09:36:42 AM CET.
Installed Packages
Name : epel-release
Version : 8
Release : 14.el8
Architecture : noarch
Size : 32 k
Source : epel-release-8-14.el8.src.rpm
Repository : @System
From repo : epel
Summary : Extra Packages for Enterprise Linux repository configuration
URL : http://download.fedoraproject.org/pub/epel
License : GPLv2
Description : This package contains the Extra Packages for Enterprise Linux
: (EPEL) repository GPG key as well as configuration for yum.
Le paquet, comme vous pouvez le voir dans la description du paquet ci-dessus, ne contient pas d'exécutables, de bibliothèques, etc., mais seulement les fichiers de configuration et les clés GPG pour configurer le dépôt.
Une autre façon de vérifier que l'installation est correcte est d'interroger la base de données rpm.
rpm -qa | grep epel
epel-release-8-14.el8.noarch
Maintenant vous devez exécuter une mise à jour pour permettre à dnf
de reconnaître le dépôt. Il vous sera demandé d'accepter les clés GPG des dépôts. Il est clair que vous devez répondre YES pour pouvoir les utiliser.
dnf update
Une fois la mise à jour terminée, vous pouvez vérifier que le dépôt a été configuré correctement avec la commande dnf repolist
qui devrait maintenant lister les nouveaux dépôts.
dnf repolist
repo id repo name
...
epel Extra Packages for Enterprise Linux 8 - aarch64
epel-modular Extra Packages for Enterprise Linux Modular 8 - aarch64
...
Les fichiers de configuration du dépôt se trouvent dans /etc/yum.repos.d/
.
ll /etc/yum.repos.d/ | grep epel
-rw-r--r--. 1 root root 1485 Jan 31 17:19 epel-modular.repo
-rw-r--r--. 1 root root 1422 Jan 31 17:19 epel.repo
-rw-r--r--. 1 root root 1584 Jan 31 17:19 epel-testing-modular.repo
-rw-r--r--. 1 root root 1521 Jan 31 17:19 epel-testing.repo
Et ci-dessous, nous pouvons voir le contenu du fichier epel.repo
.
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place it's address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1
Utilisation d'EPEL¶
À ce stade, une fois configuré, nous sommes prêts à installer des paquets depuis l'EPEL. Pour commencer, nous pouvons lister les paquets disponibles dans le référentiel avec la commande suivante :
dnf --disablerepo="*" --enablerepo="epel" list available
Et un extrait de la commande
dnf --disablerepo="*" --enablerepo="epel" list available | less
Last metadata expiration check: 1:58:22 ago on Fri 25 Mar 2022 09:23:29 AM CET.
Available Packages
3proxy.aarch64 0.8.13-1.el8 epel
AMF-devel.noarch 1.4.23-2.el8 epel
AMF-samples.noarch 1.4.23-2.el8 epel
AusweisApp2.aarch64 1.22.3-1.el8 epel
AusweisApp2-data.noarch 1.22.3-1.el8 epel
AusweisApp2-doc.noarch 1.22.3-1.el8 epel
BackupPC.aarch64 4.4.0-1.el8 epel
BackupPC-XS.aarch64 0.62-1.el8 epel
BibTool.aarch64 2.68-1.el8 epel
CCfits.aarch64 2.5-14.el8 epel
CCfits-devel.aarch64 2.5-14.el8 epel
...
À partir de la commande nous pouvons voir que pour installer à partir de l'EPEL, nous devons forcer dnf à interroger le dépôt demandé avec les options --disablerepo
et --enablerepo
. C'est parce que sinon une correspondance trouvée dans d'autres dépôts optionnels (RPM Fusion, REMI, ELRepo, etc.), pourrait être plus récente et donc avoir la priorité. Ces options ne sont pas nécessaires si vous avez installé uniquement EPEL comme référentiel optionnel car les paquets du référentiel ne seront jamais disponibles dans les paquets officiels. Au moins dans la même version !
Considérations relatives au support
Un aspect à considérer en ce qui concerne le support (mises à jour, corrections de bogues, patchs de sécurité) est que les paquets EPEL n'ont pas de support officiel de RHEL et techniquement leur vie pourrait durer seulement l'espace d'un développement de Fedora (six mois) puis disparaître. Il s’agit d’une possibilité lointaine, mais elle devrait être envisagée.
Ainsi, pour installer un paquet à partir des dépôts EPEL que vous pouvez utiliser la commande suivante :
dnf --disablerepo="*" --enablerepo="epel" install nmon
Last metadata expiration check: 2:01:36 ago on Fri 25 Mar 2022 04:28:04 PM CET.
Dependencies resolved.
==============================================================================================================================================================
Package Architecture Version Repository Size
==============================================================================================================================================================
Installing:
nmon aarch64 16m-1.el8 epel 71 k
Transaction Summary
==============================================================================================================================================================
Install 1 Package
Total download size: 71 k
Installed size: 214 k
Is this ok [y/N]:
Conclusion¶
EPEL n'est pas un référentiel officiel pour RHEL, mais il peut être très utile pour les administrateurs et les développeurs qui travaillent avec RHEL ou un de ses dérivés, et qui ont besoin de quelques utilitaires préparés pour RHEL à partir d'une source dont ils peuvent avoir confiance.
Plugiciels DNF¶
Le paquet dnf-plugins-core
ajoute des plugiciels à dnf
qui seront utiles pour gérer vos dépôts.
Remarque
Des informations plus détaillées sont disponibles ici : https://dnf-plugins-core.readthedocs.io/en/latest/index.html
Installer le paquet sur votre système :
dnf install dnf-plugins-core
Tous les plugins ne seront pas présentés ici, mais vous pouvez vous référer à la documentation du paquet pour une liste complète des plugins et des informations détaillées.
Plugiciel config-manager
¶
Gestion des options DNF, ajouter des dépôts ou les désactiver.
Exemples :
- Télécharger un fichier
.repo
et l'utiliser :
dnf config-manager --add-repo https://packages.centreon.com/ui/native/rpm-standard/23.04/el8/centreon-23.04.repo
- Vous pouvez également définir une url comme une url de base pour un repo :
dnf config-manager --add-repo https://repo.rocky.lan/repo
- Activer ou désactiver une ou plusieurs repos :
dnf config-manager --set-enabled epel centreon
dnf config-manager --set-disabled epel centreon
- Ajouter un proxy à votre fichier de configuration :
dnf config-manager --save --setopt=*.proxy=http://proxy.rocky.lan:3128/
Plugin copr
¶
copr
est un forgeage automatique de rpm, fournissant un dépôt avec les paquets construits.
- Activer un dépôt COPR :
copr enable xxxx
Télécharger
le plugiciel¶
Télécharger le paquet rpm au lieu de l'installer :
dnf download ansible
Si vous voulez juste obtenir l'URL de l'emplacement distant du paquet :
dnf download --url ansible
Ou si vous voulez également télécharger les dépendances :
dnf download --resolv --alldeps ansible
Plugiciel needs-restarting
¶
Après avoir exécuté une mise à jour avec dnf update
, les processus en cours d'exécution continueront à s'exécuter, mais avec les anciens binaires. Afin de prendre en compte les changements de code et en particulier les mises à jour de sécurité, ils doivent être redémarrés.
Le plugiciel needs-restarting
vous permettra de détecter les processus qui sont dans ce cas.
dnf needs-restarting [-u] [-r] [-s]
Options | Observation |
---|---|
-u |
considérer uniquement les processus appartenant à l'utilisateur actuel. |
-r |
pour vérifier si un redémarrage peut être nécessaire. |
-s |
pour vérifier si les services ont besoin d'être redémarrés. |
-s -r |
pour faire les deux en une seule étape. |
Plugiciel versionlock
¶
Parfois, il est utile de protéger des paquets de toutes les mises à jour ou d'exclure certaines versions d'un paquet (à cause de problèmes connus par exemple). Pour cela, le plugin versionlock sera d'une grande utilité.
Il vous faut installer un paquet supplémentaire :
dnf install python3-dnf-plugin-versionlock
Exemples :
- Verrouiller la version d'ansible :
dnf versionlock add ansible
Adding versionlock on: ansible-0:6.3.0-2.el9.*
- Liste des paquets verrouillés :
dnf versionlock list
ansible-0:6.3.0-2.el9.*
Author: Antoine Le Morvan
Contributors: Franco Colussi, Steven Spencer, Ganna Zhyrnova