Remarques :

Utiliser DNF sur Oracle Linux

Introduction

Oracle Linux fournit l'utilitaire dnf, basé sur Dandified Yum (DNF), en tant que logiciel client pour l'installation et la gestion des packages système. Ces packages peuvent provenir du réseau Unbreakable Linux Network (ULN) ou d'un serveur yum Oracle Linux. Les packages logiciels sont installés sur un système à l'aide de commandes dnf standard et dépendent du système ayant activé les abonnements de canal ULN ou les référentiels yum appropriés. Lors de l'installation ou de la mise à niveau des packages, dnf gère automatiquement les dépendances et les exigences des packages.

DNF améliore considérablement les fonctionnalités et les performances et apporte de nombreuses nouvelles fonctionnalités, y compris le contenu modulaire et une API plus stable et documentée, par rapport à la commande yum traditionnelle.

Objectifs

Dans ce tutoriel, vous apprendrez à :

Prérequis

Déployer Oracle Linux

Remarque : si vous êtes en cours d'exécution dans votre propre location, lisez le projet linux-virt-labs GitHub README.md et complétez les prérequis avant de déployer l'environnement d'exercice.

  1. Ouvrez un terminal sur le bureau Luna.

  2. Clonez le projet linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. Accédez au répertoire de travail.

    cd linux-virt-labs/ol
  4. Installez les ensembles requis.

    ansible-galaxy collection install -r requirements.yml
  5. Déployez l'environnement d'exercice.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6"

    L'environnement d'exercice libre requiert la variable supplémentaire local_python_interpreter, qui définit ansible_python_interpreter pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.

    La forme de déploiement par défaut utilise l'UC AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9 ou 10, ajoutez -e instance_shape="VM.Standard3.Flex" ou définissez -e os_version="10", -e os_version="9" ou -e os_version="8" à la commande de déploiement.

    Important : attendez que le guide de lecture s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation d'Oracle Linux est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui affiche les adresses IP publiques et privées des noeuds qu'elle déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.

Utiliser des référentiels DNF

  1. Ouvrez un terminal et connectez-vous via SSH à l'instance ol-node-01.

    ssh oracle@<ip_address_of_instance>
  2. Obtenez la liste des référentiels activés.

    dnf repolist

    DNF recherche dans le répertoire /etc/yum.repos.d les fichiers se terminant par .repo. Vous pouvez transmettre l'option all pour afficher la liste des référentiels activés et désactivés. Un fichier de référentiel peut définir un ou plusieurs référentiels et considérer que le référentiel est activé lorsque enabled=1 et désactivé lorsque enabled=0.

  3. Activez un référentiel.

    Oracle Linux 10 ::

    sudo dnf config-manager --enable ol10_codeready_builder

    Oracle Linux 9 ::

    sudo dnf config-manager --enable ol9_codeready_builder

    Oracle Linux 8 ::

    sudo dnf config-manager --enable ol8_codeready_builder
  4. Désactivez un référentiel.

    Oracle Linux 10 ::

    sudo dnf config-manager --disable ol10_codeready_builder

    Oracle Linux 9 ::

    sudo dnf config-manager --disable ol9_codeready_builder

    Oracle Linux 8 ::

    sudo dnf config-manager --disable ol8_codeready_builder
  5. Installez un référentiel.

    Oracle Linux fournit des référentiels prédéfinis pour divers produits au format package. Vous pouvez les rechercher, puis les installer et les activer.

    dnf search oracle*release*

    Oracle Linux 10 ::

    sudo dnf install -y oracle-instantclient-release-el10

    Oracle Linux 9 ::

    sudo dnf install -y oracle-instantclient-release-el9

    Oracle Linux 8 ::

    sudo dnf install -y oracle-instantclient-release-el8

    Bien que ce ne soit pas recommandé, vous pouvez également installer des référentiels en procédant comme suit :

    1. Créer directement un fichier .repo dans /etc/yum.repos.d
    2. Utilisation de dnf config-manager --add-repo <repo_file>, qui permet d'installer un fichier de référentiel stocké localement ou à partir d'une URL
  6. Supprimez le cache DNF.

    Pour améliorer les performances, DNF met en cache les données dans /var/cache/dnf. Il arrive que ces données mises en cache deviennent obsolètes et entraînent l'échec des commandes dnf. Pour résoudre ce problème, vous pouvez supprimer tous les éléments mis en cache.

    dnf clean all

    DNF recrée automatiquement ce cache au fil du temps à mesure que vous exécutez diverses commandes. Pour résoudre un échec de commande, vous pouvez effacer le cache, puis réessayer la commande ayant échoué.

Gérer les packages et les modules

Remarque pour Oracle Linux 10 : la modularité DNF (modules et flux) n'est pas disponible sur Oracle Linux 10. Vous pouvez installer des packages standard à partir du référentiel AppStream, mais vous ne pouvez pas activer ou installer des modules ou des flux de données comme dans les versions précédentes.

Dans les étapes fournies, lorsque la modularité DNF est utilisée, les instructions s'appliquent uniquement à Oracle Linux 8 et à Oracle Linux 9.

  1. Obtenez la liste des packages disponibles à partir des référentiels activés.

    dnf list

    Vous pouvez affiner la sortie renvoyée en utilisant les options installed ou available et même en demandant un nom de package spécifique tel que dnf list available git.

  2. Répertoriez les modules disponibles.

    dnf module list

    La sortie affiche les modules disponibles pour le système, les flux associés et les profils où :

    • Name : nom du module
    • Stream : version de flux
    • Profiles : profils disponibles et leur statut
      • common : déploiement renforcé prêt à l'emploi et profil par défaut
      • development : installe les packages nécessaires pour apporter des modifications au module
      • minimal : installe le plus petit ensemble de packages qui fournissent une application fonctionnelle.

    Utilisez le Conseil à la fin de la sortie pour déterminer les flux et les profils enabled, disabled, installed ou default.

    Comme pour les packages, vous pouvez transmettre un nom de module à l'option list pour voir le statut de ce module.

  3. Obtenez des informations sur un package ou un module.

    dnf info zsh

    Dans ce cas, zsh est le nom du package. Vous faites de même pour les modules, mais ajoutez la commande module et ajoutez le module spécifique, tel que dnf module info php. Si vous avez besoin d'informations sur un flux de module particulier, transmettez --profile avec le module:stream plutôt que le nom du module.

    dnf module info --profile php:8.2
  4. Recherchez un package disponible ou installé.

    dnf search php
  5. Recherchez le package qui fournit un nom de fichier ou une commande spécifique.

    La commande provides, avec l'alias whatprovides, recherche le package correspondant au nom de fichier. Si vous ne fournissez pas de chemin complet, DNF ajoute /usr/sbin et /usr/bin au nom de fichier. A des fins héritées, il ajoute également /sbin et /bin.

    dnf provides sudo
  6. Installez un package.

    sudo dnf install tmux

    Répondez à y pour confirmer l'installation du package. Evitez cette étape supplémentaire à l'avenir en passant l'option -y. Par défaut, DNF installe uniquement les packages à partir des référentiels activés. Toutefois, vous pouvez ignorer ce comportement par défaut en transmettant l'option --enablerepo=<repo name>.

  7. Réinstallez un package.

    sudo dnf reinstall -y tmux

    Cette commande effectue essentiellement une opération dnf remove, puis une opération dnf install. La différence essentielle est que l'utilisation de la réinstallation conserve toute configuration personnalisée des fichiers associés au package.

  8. Activer un module.

    Avant d'installer des packages à partir d'un module, vous devez l'activer.

    Oracle Linux 9 ::

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8 ::

    sudo dnf module -y enable nginx
  9. Installez un module.

    Oracle Linux 9 ::

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8 ::

    sudo dnf module install -y nginx:1.14

    Après l'installation des packages, l'exécution de sudo dnf module list nginx affiche un [i] en regard du profil common [d] du flux 1.22.

  10. Supprimer un package ou un module.

    sudo dnf remove -y tmux

    De même, vous pouvez supprimer un module à l'aide de la même syntaxe en remplaçant le nom du package par module:stream/profile.

  11. Changer de module.

    Si vous changez de flux de module, le contenu est mis à niveau ou rétrogradé vers une version différente de la version actuelle du système. Il gère également l'installation de dépendances supplémentaires ou la suppression de packages qui ne sont plus nécessaires.

    sudo dnf module -y switch-to nginx:1.24/common
  12. Désactivez un module.

    sudo dnf module -y disable nginx

    En désactivant un module, vous assurez la suppression des profils installés, que tous les flux de module associés deviennent indisponibles et que les RPMS modulaires ne font pas partie de l'ensemble de packages. Si DNF détecte des conflits, l'opération est rejetée. Une raison de désactiver un module est que des packages plus récents existent dans le référentiel et le flux d'applications par défaut.

  13. Réinitialisation d'un module

    Cette opération définit l'état du module de sorte qu'il ne soit plus activé ou désactivé. DNF supprime tous les profils et seuls les packages du profil par défaut sont disponibles.

    sudo dnf module -y reset nginx

Installer les mises à jour de sécurité

  1. Répertoriez tous les errata disponibles.

    dnf updateinfo list

    La sortie affiche les référentiels activés suivis de chaque mise à jour. DNF trie les errata disponibles par ordre de leurs ID et les identifie davantage par type.

    • Severity/Sec : patch Priorité/Sécurité
    • bugfix : correction de bug
    • enhancement : amélioration des fonctionnalités

    Vous pouvez ajouter cves, bugfix ou security à la commande pour limiter la sortie à ce type d'erreur spécifique uniquement. Vous pouvez également transmettre --installed pour obtenir la liste des correctifs de sécurité installés sur l'hôte.

  2. Afficher un récapitulatif des errata disponibles.

    dnf updateinfo summary
  3. Obtenez la liste des mises à niveau de sécurité en fonction de leur gravité.

    Vous pouvez transmettre Critique, Important, Modéré ou Faible à l'option --sec-severity.

    dnf updateinfo list --sec-severity=Important

    DNF vous permet de transmettre d'autres options à la commande list. Vous pouvez utiliser --advisory <Advisory ID> pour obtenir un conseil spécifique ou --cve <CVD ID pour obtenir un CVE particulier. L'utilisation de la commande info au lieu de list et des options exactes fournit des informations détaillées sur le conseil ou le CVE spécifique.

  4. Mettez à jour chaque package vers sa dernière version.

    sudo dnf upgrade -y

    Vous pouvez éventuellement exclure un package spécifique de la mise à niveau avec l'option -x suivie du nom du package. Bien qu'Oracle Linux vous recommande d'appliquer tous les errata, la commande upgrade accepte les options suivantes :

    • --cve : met à jour un seul ID de CVE
    • --advisory : mettre à jour un seul ID de conseil
    • --security : met à jour tous les errata liés à la sécurité

    Un utilisateur peut également exécuter sudo dnf upgrade-minimal pour appliquer uniquement les mises à jour aux packages qui fournissent un correctif, une amélioration ou une correction pour un problème de sécurité.

    Important : après toute mise à jour du noyau, veillez à réinitialiser le système. Si vous exécutez un système où les réinitialisations ne sont pas réalisables, il est recommandé d'utiliser Oracle Ksplice pour appliquer les patches du noyau.

Gérer les groupes de packages

DNF permet l'installation, la mise à jour ou la suppression de groupes de packages. Ces groupes sont un ensemble de packages dépendants qui ont un but commun.

  1. Répertoriez les groupes disponibles.

    dnf group list
  2. Obtenir la liste des groupes qu'un groupe contient.

    dnf group info "Server with GUI"

    Le serveur avec interface graphique installe le bureau graphique GNOME.

  3. Afficher les packages individuels contenus dans un groupe.

    dnf group info Core
  4. Installez le groupe.

    sudo dnf group install "Server with GUI" --assumeno

    L'option --assumeno répond automatiquement non et ignore l'installation pour gagner du temps dans ce tutoriel. Laissez cette option hors de la commande et remplacez-la par l'option -y pour l'installer automatiquement. DNF fournit les commandes dnf group update et dnf group remove pour mettre à jour et enlever des groupes.

Utiliser la fonction d'historique DNF

La fonctionnalité d'historique DNF affiche toutes les actions effectuées par la commande dnf. La fonctionnalité d'historique permet d'annuler, de rétablir et d'annuler (rollback) une transaction DNF spécifique. Outre l'historique DNF, les installations, mises à jour et suppressions de packages sont consignées dans le fichier /var/log/dnf.log.

  1. Répertoriez toutes les transactions DNF.

    dnf history

    Vous pouvez obtenir des informations sur l'une des transactions en exécutant dnf history info <transaction ID>.

  2. Annuler une transaction spécifique.

    L'option rollback annulera toutes les transactions après la valeur <transaction ID> indiquée. Si vous souhaitez annuler une seule transaction, utilisez plutôt undo.

    sudo dnf history rollback <transaction ID>

    La commande DNF history rollback incrémente l'ID de transaction et enregistre l'annulation en tant que transaction unique.

  3. Répétez une transaction spécifique.

    Vous pouvez redo la transaction spécifique et répéter chacune de ses étapes.

    sudo dnf history redo <transaction ID>

Automatiser l'application de patches

Une alternative à l'exécution manuelle de dnf upgrade consiste à utiliser l'outil automatique DNF. Cet outil fournit des notifications automatiques de mises à niveau, les télécharge et installe automatiquement les packages à l'aide des minuteries systemd.

  1. Installez le package requis et activez l'horloge.

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. Affichez la configuration upgrade_type par défaut.

    Le fichier de configuration de l'outil automatique DNF est /etc/dnf/automatic.conf. Par défaut, la mise à niveau automatique s'applique à toutes les mises à niveau disponibles. Vous pouvez remplacer le paramètre upgrade_type par security pour utiliser uniquement les mises à niveau de sécurité.

    grep upgrade_type /etc/dnf/automatic.conf

Etapes suivantes

Ce tutoriel vous explique comment gérer des packages logiciels sur votre système Oracle Linux et vous assurer qu'ils sont à jour avec les derniers correctifs de sécurité. Mettez donc vos systèmes à jour, puis consultez la section Related Links pour plus de détails et de formation sur Oracle Linux.

Ressources de formation supplémentaires

Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.