Rocky Linux / Lister les paquets installés avec DNF et RPM

Sous Rocky Linux, dnf list --installed affiche les paquets installés, tandis que rpm -qa interroge directement la base locale RPM. Utilisez rpm -q nom pour vérifier un paquet précis et rpm -qf chemin pour identifier le paquet auquel appartient un fichier. Ces commandes permettent de consulter l’état installé sans lancer une installation ou une suppression.

Lister les paquets installés

DNF (Dandified YUM) gère les paquets et leurs dépôts ; RPM (RPM Package Manager) maintient la base des paquets au format RPM. La liste DNF présente notamment le nom, l’architecture, la version et les informations de dépôt disponibles. La provenance affichée dépend des métadonnées conservées et ne remplace pas un historique complet d’installation. Consultez la référence des commandes DNF pour les options de votre version.

dnf list --installed

Pour consulter directement la base RPM locale, utilisez la commande suivante. Par défaut, elle affiche des identifiants contenant le nom, la version, la révision et l’architecture ; ce ne sont pas seulement les noms :

rpm -qa | sort

Pour lire une liste longue page par page, utilisez less et quittez avec q. Le filtre grep -i postgresql cherche la chaîne sans tenir compte de la casse ; il peut correspondre à plusieurs paquets :

rpm -qa | sort | less
rpm -qa | grep -i postgresql

Vérifier un paquet précis

Quand vous connaissez le nom

rpm -q curl affiche les versions installées de ce paquet ; un message « non installé » s’accompagne d’un statut non nul. Une erreur d’accès à la base produit aussi un échec : distinguez les messages avant de conclure que le paquet manque. dnf info --installed curl donne la description du paquet installé ; le nom de l’exécutable et celui du paquet ne coïncident pas toujours.

rpm -q curl
dnf info --installed curl

Trouver le paquet associé à un fichier

rpm -qf cherche le paquet qui déclare un chemin dans la base RPM ; « propriétaire » signifie ici paquet associé, pas utilisateur Unix propriétaire du fichier. Un lien symbolique et sa cible peuvent appartenir à des paquets différents. Pour un exécutable externe comme python3, ce petit exemple Bash interroge le chemin trouvé dans PATH puis sa cible si elle diffère :

rpm -qf /usr/bin/curl
python_path=$(type -P python3)
if [ -n "$python_path" ]; then
  rpm -qf -- "$python_path"
  resolved_path=$(readlink -f -- "$python_path")
  if [ -n "$resolved_path" ] && [ "$resolved_path" != "$python_path" ]; then
    rpm -qf -- "$resolved_path"
  fi
else
  printf '%s\n' 'python3 absent du PATH' >&2
fi

Si un fichier n’appartient à aucun paquet RPM, il peut avoir été installé par un autre outil ou copié manuellement. Pour chercher dans les dépôts activés le paquet qui fournit un fichier, même non installé, utilisez dnf provides. Gardez les guillemets pour éviter que le shell développe * dans le répertoire courant :

dnf provides '*/semanage'

Afficher les versions, architectures et dates d’installation

Le format de requête RPM permet de choisir les champs. L’exemple produit trois colonnes séparées par des tabulations : nom, epoch:version-release et architecture. L’epoch est une valeur numérique utilisée dans les comparaisons de versions ; le release identifie la révision du paquet de la distribution. Les séquences \t et \n restent littérales dans les guillemets simples et sont interprétées par RPM. Consultez le manuel des formats de requête RPM pour les options de votre version.

rpm -qa --qf '%{NAME}\t%{EPOCHNUM}:%{VERSION}-%{RELEASE}\t%{ARCH}\n' | sort

--last trie les paquets actuellement installés par date d’installation, du plus récent au plus ancien. Une mise à jour ou une réinstallation peut modifier cette date ; cette liste ne remplace pas l’historique des transactions et ne montre pas tous les paquets autrefois supprimés :

rpm -qa --last | head -n 30
But de la vérification Commandes recommandées
Liste complète des paquets installés dnf list --installed ou rpm -qa
Vérifier un package spécifique rpm -q package-name
Détails du package dnf info --installed package-name
Package possédant un fichier rpm -qf file-path
Rechercher des packages fournissant des fichiers dnf provides '*/filename'
Ordre d'installation récent rpm -qa --last

Consulter les raisons d’installation et les transactions

Comprendre userinstalled

Dans DNF classique, history userinstalled inclut les paquets retenus comme installés par l’utilisateur, par un groupe ou un profil de module, ainsi que ceux installés hors de DNF. Il ne s’agit donc pas d’une liste certaine des seules commandes d’installation lancées manuellement par une personne.

dnf history userinstalled

Les raisons d’installation peuvent être modifiées ou héritées d’un ancien système. Utilisez cette information comme indice et vérifiez les services et dépendances avant toute décision de nettoyage. La consultation n’exige pas de lancer autoremove ou de modifier les raisons d’installation.

Historique des transactions DNF

Listez les transactions, puis choisissez un identifiant réellement affiché. Le nombre 42 ci-dessous est un exemple à remplacer ; la commande info consulte les détails sans annuler la transaction :

dnf history
dnf history info 42

Vérifier les fichiers d'installation et les modifications de configuration

rpm -V compare les fichiers avec les attributs enregistrés dans la base RPM, notamment taille, empreinte du contenu, mode et propriétaire. L’option --noscripts de cet exemple évite l’exécution d’éventuels scripts de vérification du paquet. Si le paquet est installé, que la commande réussit et qu’aucune différence n’est signalée, les contrôles effectués correspondent à la référence locale ; cela ne constitue pas une analyse complète de sécurité. Consultez le manuel RPM pour les options de votre version.

rpm -q openssh-server
sudo rpm -V --noscripts openssh-server

Une configuration modifiée volontairement peut être signalée comme différente. Dans les marqueurs RPM, S indique une taille différente, 5 une empreinte différente et T une date de modification différente ; c devant le chemin signale un fichier de configuration. Un ? signifie qu’un contrôle n’a pas pu être réalisé. Comparez les résultats aux changements voulus et aux sauvegardes avant toute restauration.

Enregistrer un inventaire dans un fichier

Un inventaire texte facilite la comparaison entre deux serveurs ou deux dates. Dans un répertoire de travail où vous avez le droit d’écrire, cet exemple Bash crée installed-packages.tsv. Le sous-shell active noclobber pour refuser l’écrasement d’un fichier existant et pipefail pour signaler un échec de la requête ou du tri. Les réglages restent limités au sous-shell :

(
  set -o noclobber
  set -o pipefail
  rpm -qa --qf '%{NAME}\t%{EPOCHNUM}:%{VERSION}-%{RELEASE}\t%{ARCH}\n' |
    LC_ALL=C sort > installed-packages.tsv
)

Après succès, vérifiez le nombre de lignes et les premières entrées :

wc -l installed-packages.tsv
head -n 5 installed-packages.tsv

Chaque ligne représente un paquet installé, et les trois champs sont séparés par des tabulations : c’est le format TSV (Tab-Separated Values). Si le fichier existe déjà, choisissez un autre nom avant de relancer. Si la commande échoue après avoir créé un résultat partiel, ne le considérez pas comme un inventaire valide. Pour comparer deux relevés conservés sous des noms différents, utilisez par exemple diff -u avant.tsv apres.tsv en remplaçant les noms par vos vrais fichiers ; les lignes - et + montrent les différences, pas des commandes à exécuter.

Cet inventaire enregistre les versions et architectures présentes ; ce n’est pas un script de réinstallation ni une sauvegarde des données et configurations. Un autre Rocky Linux, des dépôts différents ou des flux de modules différents peuvent ne pas proposer les mêmes versions. Testez une procédure de restauration séparée.

Problèmes fréquents

  • Si le message indique que la commande n'existe pas : Certains plugins DNF peuvent manquer dans une installation minimale. Vérifiez d'abord le paquet qui fournit la commande.
  • Si le nom est différent de ce que vous attendez : Le nom de l'exécutable et le nom du paquet peuvent ne pas être les mêmes, utilisez donc rpm -qf ou dnf provides.
  • Si les listes apparaissent différentes : dnf combine et affiche les métadonnées du dépôt, tandis que rpm interroge directement la base de données RPM locale. Choisissez l'outil en fonction de l'objectif de votre comparaison.
  • Si vous rencontrez une erreur de base de données : Vérifiez d'abord si une autre opération sur les paquets est en cours et ne supprimez pas arbitrairement les fichiers de verrouillage ou la base de données.