Utiliser Fedora, Red Hat et dérivées

Utilisation de DNF : Commandes de base

Table des matières

Introduction



Qu'est ce que dnf ?

dnf est l'outil de gestion des paquets dans Fedora depuis la version 22, et dans Red Hat Enterprise Linux (et dérivées) depuis la version 8.

dnf est utilisé dans un terminal et sert à installer, désinstaller des logiciels; mais aussi pour mettre à jour la distribution.

dnf gère parfaitement les dépendances, contrairement à rpm.

dnf possède de nombreuses options..

Depuis Fedora Linux 41, DNF5 a été introduit et certaines commandes suivantes ne sont plus exactement les mêmes.

Je le préciserai dans l'article. Si aucune précision n'est apportée, c'est alors que les commandes sont similaires.

Dans tous les cas, un lien symbolique dnf pointe sur la commande dnf-3 ou dnf5 pour ne pas changer les habitudes mais le comportement de la commande peut être différent, ainsi que l'affichage.


-- Utilisation de dnf--

Installer



La principale utilisation de dnf, c'est l'installation des logiciels dans la distribution :
Code BASH :
dnf install paquet


On pourra installer plusieurs paquets :
Code BASH :
dnf install paquet1 paquet2



Désinstaller



Pour désinstaller un paquet, c'est aussi simple :
Code BASH :
dnf remove paquet


dnf5 supprime automatiquement les dépendances qui ne servent à aucun autre programme.

Avec la verion précédente de dnf, il existe une option autoremove pour procéder à la désinstallation de ces dépendances orphelines :
Code BASH :
dnf autoremove paquet



Mettre à jour



Pour mettre à jour un paquet :
Code BASH :
dnf upgrade paquet


Et pour mettre à jour la distribution :
Code BASH :
dnf upgrade


On peut exclure un paquet d'une mise à jour :
Code BASH :
dnf --exclude=paquet update


Les jokers fonctionnent aussi, moyennant un échappement du caractère :
Code BASH :
dnf --exclude=kernel\* update


Si vous ne souhaitez installer que les bugfixes ou les patch de sécurité (ou les 2) :
Code BASH :
dnf update --security --bugfix


Mettre à jour en mode hors ligne



On pourra aussi procéder aux mises à jour en mode hors ligne.
Le téléchargement se fait machine allumée et l'installation au reboot.

Bien que cela présente une indisponibilité plus grande de la machine (reboot plus long), cela présente l'avantage de mettre à jour les composants tout services coupés.

Avec dnf-3 (RHEL et dérivées, version 8 à 10), on téléchargera les mises à jour via :
Code BASH :
dnf offline-upgrade download


Et on lancera le reboot pour appliquer les mises à jour via :
Code BASH :
dnf offline-upgrade reboot


Avec dnf5 (Fedora depuis la version 41), on téléchargera les mises à jour via :
Code BASH :
dnf upgrade --offline


Et on lancera le reboot pour appliquer les mises à jour via :
Code BASH :
dnf offline reboot



Rétrograder la version d'un paquet



Il est aussi possible (s'il est présent dans les dépôts) de rétrograder la version d'un paquet. On aura plusieurs versions souvent dans RHEL et ses clones plus que dans Fedora.
On pourra le faire via :
Code BASH :
dnf downgrade paquet



Réinstaller un paquet



On peut réinstaller un paquet du système via :
Code BASH :
dnf reinstall paquet


Note : ça le réinstalle dans la même version. Si cette version n'existe pas dans les dépôts ou dans le cache, la réinstallation sera impossible.

Cette option est peu utilisée, on peut en avoir besoin si on a supprimé un fichier qui était installé par un paquet. De façon générale, sous Linux, la réinstallation d'un paquet ne résoudra pas un probème relatif à une application.

Recherche de paquets



Pour rechercher un paquet par son nom, on peut utiliser :
Code BASH :
dnf list paquet


Si on ne connait pas le nom du paquet, on peut utiliser le joker (échappement du caractère nécessaire) :
Code BASH :
dnf list \*paqu\*


Lister tous les paquets disponibles dans les dépôts :
Code BASH :
dnf list


Lister tous les paquets installés :
Code BASH :
dnf list --installed


Si on veut étendre la recherche à la description, on utilisera search :
Code BASH :
dnf search mot

Il n'est pas nécessaire d'utiliser des caractères jocker.


Rechercher un paquet contenant un fichier



Si on a besoin d'un fichier précis, on peut grâce à dnf chercher le paquet correspondant via l'option provides :
Code BASH :
dnf provides /usr/bin/fichier


Avoir des infos sur un paquet



Pour avoir des informations détaillées sur un paquet, on peut utiliser l'option info :
Code BASH :
dnf info paquet


Cette commande fonctionne que le paquet soit installé ou non.

Afficher l'historique des transactions



Avec dnf, on peut aussi afficher un historique des transactions réalisées :
Code BASH :
dnf history list



Trouver les paquets qui dépendent d'un autre



Pour savoir quels paquets dépendent d'un autre (par exemple si on veut la liste des paquets qui ont besoin de hwloc-libs), on fera :
Code BASH :
dnf repoquery --whatrequires hwloc-libs


Si on veut lister que ceux installés sur notre système, on utilisera l'option --installed :
Code BASH :
dnf repoquery --whatrequires hwloc-libs --installed



Trouver les paquets explicitement installés



Pour savoir quels paquets ont été explicitement installés (qui n'ont pas été installés par dépendance), on pourra utiliser l'option userinstalled à dnf history :
Code BASH :
dnf repoquery --userinstalled


On pourra ne récupérer que les noms moyennant un formatage :
Code BASH :
dnf repoquery --userinstalled --qf "%{name}"



Installer les dépendances de construction



Quand on fait du packaging, on renseigne dans le fichier SPEC des paquets à installer par dépendances (Requires) mais aussi des dépendances nécessaires pour la compilation (BuildRequires).
Pour installer rapidement tous les BuildRequires :
Code BASH :
dnf builddep monprogramme.spec



Utiliser uniquement le cache



Si pour une raison particulière on ne veut pas que dnf aille rechercher les métadonnées sur Internet, on peut dire à dnf d'utiliser le cache uniquement.

Pour cela, on a l'option --cacheonly ou -C :
Code BASH :
dnf install -C /var/tmp/rpms/*.rpm



Manipulations avec les dépôts



Lister les dépôts



Pour lister les dépôts actifs :
Code BASH :
dnf repolist


Et pour lister tous les dépôts installés :
Code BASH :
dnf repolist --all


Activer ou Désactiver un dépôt



Avec dnf-3 (RHEL et dérivées, version 8 à 10), pour activer un dépôt de manière permanente :
Code BASH :
dnf config-manager --set-enabled nomdepot


Pour désactiver un dépôt de manière permanente :
Code BASH :
dnf config-manager --set-disabled nomdepot


Avec dnf5 (Fedora lepuis la version 41), pour activer un dépôt de manière permanente :
Code BASH :
dnf config-manager setopt nomdepot.enabled=1


Pour désactiver un dépôt de manière permanente :
Code BASH :
dnf config-manager setopt nomdepot.enabled=0



Activer ou désactiver un dépôt pendant la mise à jour



De manière temporaire, on peut activer un dépôt pour une mise à jour :
Code BASH :
dnf --enablerepo=nomdepot update


ou le désactiver :
Code BASH :
dnf --disablerepo=nomdepot update



Modification de la configuration



Limiter la bande passante de dnf



Pour limiter la bande passante de dnf, éditer le fichier /etc/dnf/dnf.conf et utiliser l'option throttle . On ajoutera la valeur max_parallel_downloads pour limiter à 1 (par défaut, 3) :

Code BASH :
throttle=20k
max_parallel_downloads=1


Le paramètre de connexions est à placer à 1 sinon, dnf par défaut parallélise les téléchargements (par 3) et du coup, la limitation de la bande passante ne fonctionne plus !


Ajouter une exclusion permanente



Si vous souhaitez exclure la mise à jour de manière permanente un paquet (pour éviter l'option --exclude à chaque mise à jour), éditer /etc/dnf/dnf.conf . Ajouter la ligne exclude puis tous les noms de paquets concernés séparés par un espace :

Code BASH :
exclude=kernel* firefox libreoffice*



Protéger des paquets de la suppression



Si vous souhaitez ajouter un paquet à protéger (pour ne pas qu'il soit supprimé par inadvertance ou par orphelins) vous devez ajouter le nom du paquet à un fichier .conf dans /etc/dnf/protected.d/

Exemple /etc/dnf/protected.d/adrien.conf

Un nom de paquet par ligne.


Utiliser un proxy avec dnf



De façon temporaire, passer par bash.

Avec un proxy http :
Code BASH :
export http_proxy="http://proxy.linuxtricks.lan:3128"


Ou pour un proxy socks :
Code BASH :
export ALL_PROXY=socks5://127.0.0.1:8080


Et ensuite lancer la commande dnf comme habituellement.


De façon permanente, dans le fichier /etc/dnf/dnf.conf :
Code :
proxy=socks5://127.0.0.1:8080
#proxy=http://proxy.linuxtricks.lan:3128
#proxy_username=dnflinux
#proxy_password=password
#proxy_auth_method=basic



Utiliser le miroir le plus rapide



Par défaut, dnf peut utiliser un miroir super lent. Il existe une astuce pour bénéficier d'un miroir rapide.
Editer le fichier /etc/dnf/dnf.conf, et placer l'instruction fastestmirror :
Code BASH :
fastestmirror=true


Cela ne fonctionne que si le dépôt est configuré avec une liste de miroirs (metalink).


Désactiver les statistiques



Depuis Fedora 32, DNF envoie par défaut tous les 7 jours une requête permettant de comptabiliser des machines actives avec le type de version utilisée.

Si vous êtes opposé à cela, vous pouvez ajouter dans le fichier /etc/dnf/dnf.conf, l'instruction countme :
Code BASH :
countme=False



Conserver un certain nombre de kernels (installonly_limit)



Par défaut, dnf permet de conserver 3 kernels (les 3 plus récents). C'est configuré grâce à la variable installonly_limit du fichier dnf.conf.

Pour par exemple ne conserver que 2 kernels, éditer /etc/dnf/dnf.conf et ajouter la ligne
Code BASH :
installonly_limit=2


La valeur minimale est 2. Si vous mettez 0, cela implique de garder ces types de paquets de manière illimitée.


Afficher toute la config dnf



Si vous voulez consulter les variables et la config de dnf sur votre système :

Avec dnf-3 (RHEL et dérivées, version 8 à 10), pour activer un dépôt de manière permanente :
Code BASH :
dnf config-manager --dump


Avec dnf5 (Fedora lepuis la version 41), pour activer un dépôt de manière permanente :
Code BASH :
dnf --dump-main-config



Les modules



Un article est dédié aux modules : https://www.linuxtricks.fr/wiki/utilisation-de-dnf-les-modules

Les groupes



Un article est dédié aux groupes : https://www.linuxtricks.fr/wiki/utilisation-de-dnf-les-groupes
Cette page a été vue 100638 fois