Utiliser Fedora, Red Hat et dérivées

Utilisation de DNF : Commandes de base

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Qu'est ce que dnf ?

dnf est l'outil de gestion des paquets dans Fedora au delà de la version 22

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..


Utilisation des utilitaires



Installer



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

Copier vers le presse-papierCode BASH :
dnf install paquet



Désinstaller



Pour désinstaller un paquet, c'est aussi simple :

Copier vers le presse-papierCode BASH :
dnf remove paquet


Si on souhaite désinstaller aussi les dépendances non utilisées :

Copier vers le presse-papierCode BASH :
dnf autoremove paquet



Mettre à jour



Pour mettre à jour un paquet :

Copier vers le presse-papierCode BASH :
dnf upgrade paquet


Et pour mettre à jour la distribution :

Copier vers le presse-papierCode BASH :
dnf upgrade


A noter : On peut exclure un paquet d'une mise à jour :

Copier vers le presse-papierCode BASH :
dnf --exclude=paquet update


Les jokers fonctionnent aussi, moyennant un échappement du caractère :

Copier vers le presse-papierCode BASH :
dnf --exclude=kernel\* update


Si vous ne souhaitez installer que les bugfixes ou les patch de sécurité (ou les 2) :

Copier vers le presse-papierCode BASH :
dnf update --security --bugfix



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 via

Copier vers le presse-papierCode BASH :
dnf downgrade paquet



Réinstaller un paquet



Même si c'est quasiment jamais utilisé, il est possible aussi via dnf de réinstaller un paquet. Ça le réinstalle dans la même version :

Copier vers le presse-papierCode BASH :
dnf reinstall paquet



Recherche de paquets



Pour rechercher un paquet par son nom, on peut utiliser :

Copier vers le presse-papierCode BASH :
dnf list paquet


Si on ne connait pas le nom du paquet, on peut utiliser le joker (échappement du caractère nécessaire) :

Copier vers le presse-papierCode BASH :
dnf list \*paqu\*


Lister tous les paquets disponibles dans les dépôts :

Copier vers le presse-papierCode BASH :
dnf list


Lister tous les paquets installés :

Copier vers le presse-papierCode BASH :
dnf list installed


Si on veut étendre la recherche à la description, utiliser alors

Copier vers le presse-papierCode BASH :
dnf search mot



Rechercher un paquet contenant un fichier



Si on a besoin d'un fichier précis, on peut grâce à dnf chercher le paquet correspondant :

Copier vers le presse-papierCode 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 la commande

Copier vers le presse-papierCode BASH :
dnf info paquet


Afficher l'historique des transactions



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

Copier vers le presse-papierCode BASH :
dnf history


Voici un exemple de sortie :

Copier vers le presse-papierCode TEXT :
ID     | Ligne de commande         | Date et heure    | Action(s)      | Modifié
--------------------------------------------------------------------------------
     3 | autoremove dnfdragora     | 2020-09-13 12:00 | Removed        |   17   
     2 | install neofetch          | 2020-09-13 12:00 | Install        |   24   
     1 |                           | 2020-09-13 11:48 | Install        | 1261 EE


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 qt5-linguist), on fera :

Copier vers le presse-papierCode BASH :
dnf repoquery --whatrequires qt5-linguist --repo fedora-source


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 :

Copier vers le presse-papierCode BASH :
dnf history userinstalled


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 :

Copier vers le presse-papierCode 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 :

Copier vers le presse-papierCode 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 installés :

Copier vers le presse-papierCode BASH :
dnf repolist all


Activer ou Désactiver un dépôt



Pour activer un dépôt de manière permanente :

Copier vers le presse-papierCode BASH :
dnf config-manager --set-enabled nomdepot


Et pour désactiver un dépôt de manière permanente :

Copier vers le presse-papierCode BASH :
dnf config-manager --set-disabled nomdepot



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 :

Copier vers le presse-papierCode BASH :
dnf --enablerepo=nomdepot update


ou le désactiver :

Copier vers le presse-papierCode 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) :

Copier vers le presse-papierCode 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 !

Désactiver les deltarpm



Les deltarpm permettent de réduire la taille des téléchargements, mais l'opération de reconstruction des RPM est coûteuse en disque. Si la connexion est bonne, on peut désactiver l'utilisation des deltarpm en ajoutant ceci au fichier /etc/dnf/dnf.conf :

Copier vers le presse-papierCode BASH :
deltarpm=0


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 :

Copier vers le presse-papierCode 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



Deux possibilités :

Passer par bash :

Copier vers le presse-papierCode BASH :
http_proxy="http://ip_proxy:3128"
export http_proxy


Directement dans le fichier /etc/dnf/dnf.conf :

Copier vers le presse-papierCode BASH :
proxy=http://ip_proxy:3128


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 :

Copier vers le presse-papierCode BASH :
fastestmirror=true


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 :

Copier vers le presse-papierCode 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

Copier vers le presse-papierCode BASH :
installonly_limit=2


La valeur minimale est 2. Si vous mettez 0, cela veut dire de garder 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 :

Copier vers le presse-papierCode BASH :
dnf config-manager --dump



Les modules



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