Utilisation de DNF : Commandes de base
Table des matières
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 possède de nombreuses options..
-- Utilisation de dnf--
La principale utilisation de dnf, c'est l'installation des logiciels dans la distribution :
On pourra installer plusieurs paquets :
Pour désinstaller un paquet, c'est aussi simple :
Pour mettre à jour un paquet :
Et pour mettre à jour la distribution :
On peut exclure un paquet d'une mise à jour :
Les jokers fonctionnent aussi, moyennant un échappement du caractère :
Si vous ne souhaitez installer que les bugfixes ou les patch de sécurité (ou les 2) :
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 :
Et on lancera le reboot pour appliquer les mises à jour via :
Avec dnf5 (Fedora depuis la version 41), on téléchargera les mises à jour via :
Et on lancera le reboot pour appliquer les mises à jour via :
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 :
On peut réinstaller un paquet du système via :
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.
Pour rechercher un paquet par son nom, on peut utiliser :
Si on ne connait pas le nom du paquet, on peut utiliser le joker (échappement du caractère nécessaire) :
Lister tous les paquets disponibles dans les dépôts :
Lister tous les paquets installés :
Si on veut étendre la recherche à la description, on utilisera search :
Il n'est pas nécessaire d'utiliser des caractères jocker.
Si on a besoin d'un fichier précis, on peut grâce à dnf chercher le paquet correspondant via l'option provides :
Pour avoir des informations détaillées sur un paquet, on peut utiliser l'option info :
Avec dnf, on peut aussi afficher un historique des transactions réalisées :
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 :
Si on veut lister que ceux installés sur notre système, on utilisera l'option --installed :
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 :
On pourra ne récupérer que les noms moyennant un formatage :
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 :
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 :
Pour lister les dépôts actifs :
Et pour lister tous les dépôts installés :
Avec dnf-3 (RHEL et dérivées, version 8 à 10), pour activer un dépôt de manière permanente :
Pour désactiver un dépôt de manière permanente :
Avec dnf5 (Fedora lepuis la version 41), pour activer un dépôt de manière permanente :
Pour désactiver un dépôt de manière permanente :
De manière temporaire, on peut activer un dépôt pour une mise à jour :
ou le désactiver :
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) :
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 !
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 :
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.
De façon temporaire, passer par bash.
Avec un proxy http :
Ou pour un proxy socks :
Et ensuite lancer la commande dnf comme habituellement.
De façon permanente, dans le fichier /etc/dnf/dnf.conf :
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 :
Cela ne fonctionne que si le dépôt est configuré avec une liste de miroirs (metalink).
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 :
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
La valeur minimale est 2. Si vous mettez 0, cela implique de garder ces types de paquets de manière illimitée.
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 :
Avec dnf5 (Fedora lepuis la version 41), pour activer un dépôt de manière permanente :
Un article est dédié aux modules : https://www.linuxtricks.fr/wiki/utilisation-de-dnf-les-modules
Un article est dédié aux groupes : https://www.linuxtricks.fr/wiki/utilisation-de-dnf-les-groupes
- Introduction
- Installer
- Désinstaller
- Mettre à jour
- Mettre à jour en mode hors ligne
- Rétrograder la version d'un paquet
- Réinstaller un paquet
- Recherche de paquets
- Rechercher un paquet contenant un fichier
- Avoir des infos sur un paquet
- Afficher l'historique des transactions
- Trouver les paquets qui dépendent d'un autre
- Trouver les paquets explicitement installés
- Installer les dépendances de construction
- Utiliser uniquement le cache
- Manipulations avec les dépôts
- Modification de la configuration
- Les modules
- Les groupes
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 possède de nombreuses options..
-- 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
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.
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
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