Hinweis:

DNF für Oracle Linux verwenden

Einführung

Oracle Linux stellt das Utility dnf basierend auf Dandified Yum (DNF) als Clientsoftware für die Installation und Verwaltung von Systempackages bereit. Diese Packages stammen aus dem Unbreakable Linux Network (ULN) oder einem Oracle Linux yum-Server. Softwarepackages werden auf einem System mit Standard-DNF-Befehlen installiert und hängen davon ab, ob das System die entsprechenden ULN-Kanalabonnements oder yum-Repositorys aktiviert hat. Bei der Installation oder dem Upgrade von Packages verarbeitet dnf automatisch Packageabhängigkeiten und -anforderungen.

DNF verbessert die Funktionalität und Performance erheblich und bringt viele neue Funktionen mit sich, darunter modulare Inhalte und eine stabilere und dokumentiertere API im Vergleich zum traditionellen yum-Befehl.

Ziele

In diesem Tutorial erfahren Sie, wie Sie:

Voraussetzungen

Oracle Linux bereitstellen

Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.

  1. Öffnen Sie ein Terminal auf dem Luna Desktop.

  2. Klonen Sie das Projekt linux-virt-labs GitHub.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. Wechseln Sie in das Arbeitsverzeichnis.

    cd linux-virt-labs/ol
  4. Installieren Sie die erforderlichen Sammlungen.

    ansible-galaxy collection install -r requirements.yml
  5. Bereitstellen der Übungsumgebung.

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

    Die kostenlose Übungsumgebung erfordert die zusätzliche Variable local_python_interpreter, die ansible_python_interpreter für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python unter den python3.6-Modulen installiert.

    Die Standard-Deployment-Ausprägung verwendet AMD-CPU und Oracle Linux 8. Um eine Intel CPU oder Oracle Linux 9 oder 10 zu verwenden, fügen Sie -e instance_shape="VM.Standard3.Flex" hinzu, oder setzen Sie -e os_version="10", -e os_version="9" oder -e os_version="8" auf den Deployment-Befehl.

    Wichtig: Warten Sie, bis das Playbook erfolgreich ausgeführt wird, und erreichen Sie die Unterbrechungsaufgabe. In dieser Phase des Playbooks ist die Installation von Oracle Linux abgeschlossen, und die Instanzen sind bereit. Notieren Sie sich die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten und alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung erforderlich sind.

Mit DNF-Repositorys arbeiten

  1. Öffnen Sie ein Terminal, und verbinden Sie sich über SSH mit der Instanz ol-node-01.

    ssh oracle@<ip_address_of_instance>
  2. Eine Liste der aktivierten Repositorys abrufen.

    dnf repolist

    DNF durchsucht das Verzeichnis /etc/yum.repos.d nach Dateien, die auf .repo enden. Sie können die Option all übergeben, um eine Liste der aktivierten und deaktivierten Repositorys anzuzeigen. Eine Repository-Datei kann ein oder mehrere Repositorys definieren und das Repository als aktiviert betrachten, wenn enabled=1 und deaktiviert, wenn enabled=0.

  3. Repository aktivieren.

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

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

    Oracle Linux stellt vordefinierte Repositorys für verschiedene Produkte im Paketformat bereit. Sie können nach diesen suchen und sie dann installieren und aktivieren.

    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

    Sie können Repositorys auch installieren, indem Sie:

    1. Direkte Erstellung einer neuen .repo-Datei in /etc/yum.repos.d
    2. Verwendung von dnf config-manager --add-repo <repo_file>, mit dem eine lokal oder über eine URL gespeicherte Repository-Datei installiert werden kann
  6. Entfernen Sie den DNF-Cache.

    Um die Performance zu verbessern, speichert DNF Daten in /var/cache/dnf. Es kann vorkommen, dass diese gecachten Daten veraltet werden und dnf-Befehle fehlschlagen. Um dieses Problem zu beheben, können Sie alle zwischengespeicherten Elemente entfernen.

    dnf clean all

    DNF erstellt diesen Cache im Laufe der Zeit automatisch neu, wenn Sie verschiedene Befehle ausführen. Um einen Befehlsfehler zu beheben, können Sie den Cache löschen und dann den nicht erfolgreichen Befehl wiederholen.

Pakete und Module verwalten

Hinweis für Oracle Linux 10: Die DNF-Modularität (Module und Streams) ist in Oracle Linux 10 nicht verfügbar. Sie können Standardpackages aus dem AppStream-Repository installieren, aber Sie können Module oder Streams nicht wie in früheren Releases aktivieren oder installieren.

In den angegebenen Schritten, in denen DNF-Modularität verwendet wird, gelten Anweisungen nur für Oracle Linux 8 und Oracle Linux 9.

  1. Rufen Sie eine Liste der verfügbaren Packages aus den aktivierten Repositorys ab.

    dnf list

    Sie können die zurückgegebene Ausgabe einschränken, indem Sie die Optionen installed oder available verwenden und sogar einen bestimmten Package-Namen wie dnf list available git anfordern.

  2. Listen Sie die verfügbaren Module auf.

    dnf module list

    In der Ausgabe werden die Module angezeigt, die für das System verfügbar sind, die zugehörigen Streams und Profile, wobei Folgendes gilt:

    • Name: Modulname
    • Stream: Streamversion
    • Profiles: Verfügbare Profile und deren Status
      • common: Ein gehärtetes, einsatzbereites Deployment und das Standardprofil
      • development: Installiert die Packages, die zum Ändern des Moduls erforderlich sind
      • minimal: Installiert die kleinste Gruppe von Packages, die eine funktionierende Anwendung bereitstellen

    Mit dem Hinweis am Ende der Ausgabe können Sie bestimmen, welche Streams und Profile aktiviert, deaktiviert, installiert oder die Standard sind.

    Ähnlich wie bei Packages können Sie einen Modulnamen an die Option list übergeben, um den Status nur dieses Moduls anzuzeigen.

  3. Rufen Sie Informationen zu einem Paket oder Modul ab.

    dnf info zsh

    In diesem Fall ist zsh der Packagename. Sie tun dasselbe für Module, fügen jedoch den Befehl module hinzu und hängen das spezifische Modul an, wie dnf module info php. Wenn Sie Informationen zu einem bestimmten Modulstream benötigen, übergeben Sie --profile zusammen mit module:stream und nicht den Modulnamen.

    dnf module info --profile php:8.2
  4. Suchen Sie nach einem verfügbaren oder installierten Package.

    dnf search php
  5. Suchen Sie nach dem Paket, das einen bestimmten Dateinamen oder Befehl bereitstellt.

    Der Befehl provides mit dem Alias whatprovides sucht das Package, das dem Dateinamen entspricht. Wenn Sie keinen vollständigen Pfad angeben, hängt DNF /usr/sbin und /usr/bin an den Dateinamen an. Für Legacy-Zwecke werden auch /sbin und /bin angehängt.

    dnf provides sudo
  6. Installieren Sie ein Paket.

    sudo dnf install tmux

    Beantworten Sie y, um die Packageinstallation zu bestätigen. Vermeiden Sie diesen zusätzlichen Schritt in Zukunft, indem Sie die Option -y übergeben. DNF installiert standardmäßig nur Packages aus aktivierten Repositorys. Sie können dieses Standardverhalten jedoch umgehen, indem Sie die Option --enablerepo=<repo name> übergeben.

  7. Installieren Sie ein Package neu.

    sudo dnf reinstall -y tmux

    Dieser Befehl führt im Wesentlichen eine dnf remove und dann eine dnf install aus. Der entscheidende Unterschied besteht darin, dass bei der Neuinstallation jede benutzerdefinierte Konfiguration von Dateien beibehalten wird, die mit dem Paket verknüpft sind.

  8. Modul aktivieren.

    Bevor Sie Packages von einem Modul installieren, müssen Sie es aktivieren.

    Oracle Linux 9:

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8:

    sudo dnf module -y enable nginx
  9. Installieren Sie ein Modul.

    Oracle Linux 9:

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8:

    sudo dnf module install -y nginx:1.14

    Nach der Installation der Packages zeigt die Ausführung von sudo dnf module list nginx einen [i] neben dem Profil 1.22 des Streams common [d] an.

  10. Entfernen Sie ein Package oder Modul.

    sudo dnf remove -y tmux

    Ebenso können Sie ein Modul mit derselben Syntax entfernen, indem Sie den Paketnamen durch module:stream/profile ersetzen.

  11. Schalten Sie ein Modul um.

    Durch das Wechseln von Modulstreams wird der Inhalt entweder upgegradet oder auf eine andere Version als die aktuelle Version auf dem System herabgestuft. Es übernimmt auch die Installation zusätzlicher Abhängigkeiten oder das Entfernen von Paketen, die nicht mehr benötigt werden.

    sudo dnf module -y switch-to nginx:1.24/common
  12. Modul deaktivieren.

    sudo dnf module -y disable nginx

    Durch die Deaktivierung eines Moduls stellen Sie sicher, dass installierte Profile entfernt werden, alle zugehörigen Modulstreams nicht mehr verfügbar sind und modulare RPMS nicht Teil des Packagesets sind. Wenn DNF Konflikte erkennt, wird der Vorgang abgelehnt. Ein Grund, ein Modul zu deaktivieren, ist, dass neuere Pakete im Standard-Repository und im Appstream vorhanden sind.

  13. Modul zurücksetzen.

    Dieser Vorgang legt den Modulstatus fest, sodass er nicht mehr aktiviert oder deaktiviert ist. DNF entfernt alle Profile, und es sind nur Packages aus dem Standardprofil verfügbar.

    sudo dnf module -y reset nginx

Sicherheitsupdates installieren

  1. Alle verfügbaren Errata auflisten.

    dnf updateinfo list

    In der Ausgabe werden die aktivierten Repositorys gefolgt von jedem Update angezeigt. DNF sortiert die verfügbaren Errata in der Reihenfolge ihrer IDs und identifiziert sie weiter nach ihrem Typ.

    • Severity/Sec: Priorität/Sicherheitspatch
    • bugfix : Fehlerbehebung
    • enhancement: Featureverbesserung

    Sie können cves, bugfix oder security an den Befehl anhängen, um die Ausgabe auf diesen bestimmten Errata-Typ einzugrenzen. Sie können auch --installed übergeben, um eine Liste der Sicherheitsfixes abzurufen, die auf dem Host installiert sind.

  2. Übersicht über die verfügbaren Errata anzeigen.

    dnf updateinfo summary
  3. Eine Liste der Sicherheitsupgrades basierend auf dem Schweregrad abrufen.

    Sie können Kritisch, Wichtig, Moderat oder Niedrig an die Option --sec-severity übergeben.

    dnf updateinfo list --sec-severity=Important

    Mit DNF können Sie andere Optionen an den Befehl list übergeben. Sie können --advisory <Advisory ID> verwenden, um ein bestimmtes Advisory abzurufen, oder --cve <CVD ID, um ein bestimmtes CVE abzurufen. Wenn Sie den Befehl info anstelle von list und die genauen Optionen verwenden, erhalten Sie detaillierte Informationen zu dem spezifischen Advisory oder CVE.

  4. Aktualisieren Sie jedes Paket auf die neueste Version.

    sudo dnf upgrade -y

    Sie können optional ein bestimmtes Paket aus dem Upgrade ausschließen, indem Sie die Option -x gefolgt vom Paketnamen verwenden. Obwohl Oracle Linux empfiehlt, alle Errata anzuwenden, verwendet der Befehl upgrade die folgenden Optionen:

    • --cve: Aktualisiert eine einzelne CVE-ID
    • --advisory: Eine einzelne Advisory-ID aktualisieren
    • --security: Aktualisiert alle sicherheitsbezogenen Errata

    Alternativ kann ein Benutzer sudo dnf upgrade-minimal ausführen, um Updates nur auf Packages anzuwenden, die einen Bugfix, eine Verbesserung oder einen Fix für ein Sicherheitsproblem bereitstellen.

    Wichtig: Stellen Sie nach Kernel-Updates sicher, dass Sie das System neu starten. Wenn Sie ein System ausführen, auf dem Neustarts nicht möglich sind, wird empfohlen, Kernel-Patches mit Oracle Ksplice einzuspielen.

Packagegruppen verwalten

DNF ermöglicht die Installation, Aktualisierung oder Entfernung von Packagegruppen. Diese Gruppen sind eine Sammlung von abhängigen Paketen, die einem gemeinsamen Zweck dienen.

  1. Listen Sie die verfügbaren Gruppen auf.

    dnf group list
  2. Ruft eine Liste der Gruppen ab, die eine Gruppe enthält.

    dnf group info "Server with GUI"

    Der Server mit GUI installiert den grafischen GNOME-Desktop.

  3. Zeigen Sie die einzelnen Pakete an, die eine Gruppe enthält.

    dnf group info Core
  4. Gruppe installieren

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

    Die Option --assumeno antwortet automatisch mit "Nein" und überspringt die Installation, um Zeit in diesem Tutorial zu sparen. Lassen Sie diese Option aus dem Befehl aus, und ersetzen Sie sie durch die Option -y, um sie automatisch zu installieren. DNF stellt die Befehle dnf group update und dnf group remove bereit, um Gruppen zu aktualisieren und zu entfernen.

Funktion "DNF-Historie" verwenden

Die DNF-Historienfunktion zeigt alle Aktionen an, die vom Befehl dnf ausgeführt werden. Mit der Historienfunktion können Sie eine bestimmte DNF-Transaktion rückgängig machen, wiederholen und zurücksetzen. Zusätzlich zur DNF-Historie werden Packageinstallationen, -updates und -entfernungen in der Datei /var/log/dnf.log protokolliert.

  1. Alle DNF-Transaktionen auflisten.

    dnf history

    Sie können Informationen zu einer der Transaktionen abrufen, indem Sie dnf history info <transaction ID> ausführen.

  2. Setzen Sie eine bestimmte Transaktion zurück.

    Mit der Option rollback werden alle Transaktionen nach dem angegebenen <transaction ID> rückgängig gemacht. Wenn Sie nur eine einzelne Transaktion stornieren möchten, verwenden Sie stattdessen undo.

    sudo dnf history rollback <transaction ID>

    Der DNF-Befehl history rollback erhöht die Transaktions-ID und zeichnet das Rollback als eindeutige Transaktion auf.

  3. Wiederholen Sie eine bestimmte Transaktion.

    Sie können die spezifische Transaktion redo und jeden ihrer Schritte wiederholen.

    sudo dnf history redo <transaction ID>

Patching automatisieren

Eine Alternative zur manuellen Ausführung von dnf upgrade ist die Verwendung des automatischen DNF-Tools. Dieses Tool bietet automatische Benachrichtigungen über Upgrades, lädt sie herunter und installiert die Packages automatisch mit systemd-Timern.

  1. Installieren Sie das erforderliche Package, und aktivieren Sie den Timer.

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. Zeigen Sie die Standardkonfiguration upgrade_type an.

    Die Konfigurationsdatei für das DNF Automatic Tool ist /etc/dnf/automatic.conf. Standardmäßig gilt das automatische Upgrade für alle verfügbaren Upgrades. Sie können den Parameter upgrade_type in security ändern, um nur die Sicherheitsupgrades zu verwenden.

    grep upgrade_type /etc/dnf/automatic.conf

Nächste Schritte

In diesem Tutorial erfahren Sie, wie Sie Softwarepackages auf Ihrem Oracle Linux-System verwalten und sicherstellen, dass Sie es mit den neuesten Sicherheitsfixes auf dem neuesten Stand halten. Informieren Sie sich also über Ihre Systeme, und schauen Sie sich den Abschnitt "Zugehörige Links" an, um weitere Details und Schulungen für Oracle Linux zu erhalten.

Weitere Lernressourcen

Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.

Die Produktdokumentation finden Sie im Oracle Help Center.