27 ‚DNF‘ (Ableitung von Yum) Befehle für RPM-Paketverwaltung in Linux

DNF alias Dandified YUM ist ein Package-Manager der nächsten Generation für auf RPM basierende Distributionen. Er wurde erstmals in Fedora 18 eingeführt und hat in der neuesten Version von Fedora 22 das YUM-Dienstprogramm ersetzt.

DNF zielt darauf ab, die Engpässe von YUM zu verbessern, wie Leistung, Speichernutzung, Abhängigkeitsauflösung, Geschwindigkeit und viele andere Faktoren. DNF verwaltet Pakete mithilfe von RPM, libsolv und der hawkey-Bibliothek. Obwohl es nicht standardmäßig in CentOS und RHEL 7 installiert ist, kann man es neben YUM verwenden.

Weitere Informationen zu DNF finden Sie hier:

  1. Gründe für die Ersetzung von Yum durch DNF

Die neueste stabile Version von DNF ist 1.0 (zum Zeitpunkt der Veröffentlichung dieses Beitrags), die am 11. Mai 2015 veröffentlicht wurde. Sie (und alle vorherigen Versionen von DNF) sind größtenteils in Python geschrieben und werden unter der GPL v2-Lizenz veröffentlicht.

Installation von DNF

DNF ist nicht im Standard-Repository von RHEL/CentOS 7 verfügbar. Fedora 22 wird jedoch offiziell mit DNF ausgeliefert.

Um DNF auf RHEL/CentOS-Systemen zu installieren, müssen Sie zuerst das epel-release-Repository installieren und aktivieren.

# yum install epel-release
OR
# yum install epel-release -y

Auch wenn es nicht ethisch ist, mit yum ‘-y‘ zu verwenden, da empfohlen wird zu sehen, was in Ihrem System installiert wird. Wenn Ihnen das jedoch nicht viel ausmacht, können Sie ‘-y’ mit yum verwenden, um alles automatisch ohne Eingreifen des Benutzers zu installieren.

Anschließend installieren Sie das DNF-Paket mithilfe des yum-Befehls aus dem epel-release-Repository.

# yum install dnf

Nach erfolgreicher Installation von dnf ist es an der Zeit, Ihnen 27 praktische Anwendungen von dnf-Befehlen mit Beispielen zu zeigen, die Ihnen helfen werden, Pakete in RPM-basierten Distributionen einfach und effektiv zu verwalten.

1. DNF-Version überprüfen

Überprüfen Sie die Version von DNF, die auf Ihrem System installiert ist.

# dnf --version

2. Aktivierte DNF-Repositories auflisten

Die Option ‘repolist‘ mit dem dnf-Befehl listet alle aktivierten Repositories in Ihrem System auf.

# dnf repolist

3. Alle aktivierten und deaktivierten DNF-Repositories auflisten

Die Option ‘repolist all‘ listet alle aktivierten/deaktivierten Repositories in Ihrem System auf.

# dnf repolist all

4. Alle verfügbaren und installierten Pakete mit DNF auflisten

Der Befehl “dnf list” listet alle verfügbaren Pakete aus allen Repositories und installierten Paketen auf Ihrem Linux-System auf.

# dnf list

5. Alle installierten Pakete mit DNF auflisten

Während der Befehl „dnf list“ alle verfügbaren/installierten Pakete aus allen Repositories anzeigt, haben Sie die Möglichkeit, nur die installierten Pakete mit der Option „list installed“ aufzulisten, wie unten gezeigt.

# dnf list installed

6. Auflisten aller verfügbaren Pakete mit DNF

Ebenso listet die Option „list available“ alle Pakete auf, die aus allen aktivierten Repositories installiert werden können.

# dnf list available

7. Nach einem Paket suchen mit DNF

Falls Sie keine Ahnung haben, welches Paket Sie installieren möchten, können Sie die Option „search“ mit dem dnf-Befehl verwenden, um nach einem Paket zu suchen, das dem Wort oder dem String (z.B. nano) entspricht.

# dnf search nano

8. Herausfinden, welche Datei/Unterpaket bereitgestellt wird?

Die dnf-Option „provides“ findet den Namen des Pakets, das eine bestimmte Datei/Unterpaket bereitstellt. Wenn Sie beispielsweise herausfinden möchten, welches Paket ‚/bin/bash‘ auf Ihrem System bereitstellt:

# dnf provides /bin/bash

9. Details zu einem Paket mit DNF anzeigen

Angenommen, Sie möchten Informationen zu einem Paket wissen, bevor Sie es auf dem System installieren, können Sie den Schalter „info“ verwenden, um detaillierte Informationen zu einem Paket (z.B. nano) zu erhalten, wie unten gezeigt.

# dnf info nano

10. Ein Paket mit DNF installieren

Um ein Paket namens „nano“ zu installieren, führen Sie einfach den unten stehenden Befehl aus. Es werden automatisch alle erforderlichen Abhängigkeiten für das Paket „nano“ aufgelöst und installiert.

# dnf install nano

11. Aktualisieren eines Pakets mit DNF

Du kannst lediglich ein bestimmtes Paket (z.B. systemd) aktualisieren und die restlichen Systemeinstellungen unangetastet lassen.

# dnf update systemd

12. Systemaktualisierungen mit DNF überprüfen

Überprüfen Sie mit folgender Anweisung Aktualisierungen für alle im System installierten Pakete.

# dnf check-update

13. Alle Systempakete mit DNF aktualisieren

Du kannst das gesamte System, einschließlich aller installierten Pakete, mit den folgenden Befehlen aktualisieren.

# dnf update
OR
# dnf upgrade

14. Ein Paket mit DNF entfernen/löschen

Um ein unerwünschtes Paket (z.B. nano) zu entfernen oder zu löschen, kannst du denswitch „remove“ oder „erase“ mit dem dnf-Befehl verwenden.

# dnf remove nano
OR
# dnf erase nano

15. Verwaiste Pakete mit DNF entfernen

Diese Pakete wurden installiert, um Abhängigkeiten zu erfüllen, und könnten unbrauchbar sein, wenn sie von anderen Anwendungen nicht verwendet werden. Entfernen Sie diese verwaften Pakete mit dem folgenden Befehl.

# dnf autoremove

16. Pakete im Cache mit DNF entfernen

A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.

# dnf clean all

17. Hilfe für einen bestimmten DNF-Befehl anzeigen

Du kannst die Hilfe für einen bestimmten dnf-Befehl (z.B. clean) einfach durch die folgende Ausführung erhalten.

# dnf help clean

18. Alle DNF-Befehle und Optionen auflisten

Um Hilfe zu allen verfügbaren dnf-Befehlen und Optionen anzuzeigen, tippe einfach folgendes ein.

# dnf help

19. DNF-Historie anzeigen

Du kannst dnf history aufrufen, um die Liste bereits ausgeführter dnf-Befehle zu sehen. Auf diese Weise kannst du erkennen, was installiert oder entfernt wurde, sowie die Zeitstempel dazu.

# dnf history

20. Alle Gruppienpakete auflisten

Der Befehl “dnf grouplist” wird alle verfügbaren oder installierten Pakete drucken, wenn nichts erwähnt wird, wird alle bekannten Gruppen aufgelistet.

# dnf grouplist

21. Installieren einer Grupp Paket mit DNF

Um ein Paket zu installieren, das als Grupp Paket zusammengefasst ist (sagen wir Educational Software), kann man folgendermaßen vorgehen.

# dnf groupinstall 'Educational Software'

22. Aktualisieren eines Grupp Pakets

Lassen Sie uns ein Grupp Paket (sagen wir Educational Software) aktualisieren, indem Sie den untenstehenden Befehl ausführen.

# dnf groupupdate 'Educational Software'

23. Ein Grupp Paket entfernen

Wir können das Grupp Paket (sagen wir Educational Software) wie folgt entfernen.

# dnf groupremove 'Educational Software'

24. Ein Paket von einem bestimmten Repository installieren

DNF ermöglicht es, jedes bestimmte Paket (sagen wir phpmyadmin) von einem Repository (epel) einfach wie folgt zu installieren,

# dnf --enablerepo=epel install phpmyadmin

25. Installierte Pakete auf den Stable Release synchronisieren

Der Befehl “dnf distro-sync” stellt die notwendigen Optionen bereit, um alle installierten Pakete auf die neueste stabile Version zu synchronisieren, die von jedem aktivierten Repository verfügbar ist. Wenn kein Paket ausgewählt ist, werden alle installierten Pakete synchronisiert.

# dnf distro-sync

26. Ein Paket neu installieren

Der Befehl “dnf reinstall nano” wird ein bereits installiertes Paket (sagen wir nano) neu installieren.

# dnf reinstall nano

27. Ein Paket rücknehmen

Die Option “downgrade” bringt das benannte Paket (sagen wir acpid) auf eine niedrigere Version, wenn möglich.

# dnf downgrade acpid
Beispielhafte Ausgabe
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

Meine Beobachtung: DNF hat das Paket nicht abgestuft, wie es sollte. Es wurde auch als Fehler gemeldet.

Schlussfolgerung

DNF ist der obere Zustand des modernen Paketmanagers YUM. Es neigt dazu, viele Prozesse automatisch durchzuführen, was von vielen erfahrenen Linux-Systemadministratoren nicht gelobt wird, wie ich glaube. Als Beispiel:

  1. --skip-broken wird von DNF nicht erkannt und es gibt keine Alternative.
  2. Es gibt kein ‚resolvedep‘-Befehl, jedoch können Sie ‚dnf provides‘ ausführen.
  3. Es gibt keinen ‚deplist‘-Befehl, um Paketabhängigkeiten zu finden.
  4. Wenn Sie ein Repo ausschließen, gilt der Ausschluss für alle Operationen, im Gegensatz zu yum, das diese Repos nur zum Zeitpunkt der Installation und Aktualisierung ausschließt, usw.

Viele Linux-Benutzer sind nicht zufrieden mit der Art und Weise, wie sich das Linux-Ökosystem entwickelt. Zuerst hat Systemd das Init-System V entfernt und jetzt wird DNF YUM bald in Fedora 22 und später in RHEL und CentOS ersetzen.

Was denken Sie? Schätzen Distributionen und das gesamte Linux-Ökosystem ihre Benutzer nicht und handeln gegen ihren Willen? Es wird auch oft in der IT-Branche gesagt – „Warum reparieren, wenn es nicht kaputt ist?“, und weder das Init-System V noch YUM sind kaputt.

Das ist alles für jetzt. Lassen Sie mich bitte Ihre wertvollen Gedanken in den Kommentaren unten wissen. Liken und teilen Sie uns und helfen Sie uns, bekannt zu werden.

Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/