DNF ist heute das Standard-Paketverwaltungssystem der meisten RPM-basierten Linux-Distributionen.
DNF lädt Pakete aus Repositories herunter, installiert, deinstalliert und aktualisiert Pakete. Es führt eine automatische Auflösung von Abhängigkeiten für Pakete durch, die Sie installieren, aktualisieren oder entfernen, und installiert alle Pakete, die zur Erfüllung der Abhängigkeitsanforderungen erforderlich sind.
Unter Fedora ist er seit Fedora 22 der Standard-Paketmanager. Unter RHEL 8.x ist er jetzt der Standard-Paketmanager.
DNF bietet eine sichere Paketverwaltung, indem es die Überprüfung von GPG-Signaturen für GPG-signierte Pakete aktiviert. DNF installiert keine Pakete, die nicht mit dem richtigen Schlüssel für das jeweilige Repository signiert sind.
Aus Gründen der Abwärtskompatibilität verfügt RHEL 8.x auch über einen YUM-Befehl, der allerdings mit DNF verknüpft ist.
Warum DNF?
DNF oder Dandified YUM ist die nächste Generation von YUM. Im Vergleich zu YUM bietet DNF eine bessere Speicherauslastung, eine verbesserte Verwaltung von Abhängigkeiten und die Möglichkeit, sowohl mit Python 2 als auch mit Python 3 zu arbeiten.
Paketverwaltung mit DNF
Sie müssen über Superuser-Rechte verfügen, um den DNF-Befehl zum Installieren, Aktualisieren oder Entfernen des Pakets zu verwenden. Im Folgenden finden Sie eine Reihe von DNF-Befehlen, die häufig von Systemadministratoren verwendet werden.
Suche nach einem Paket
Um in allen Repositories nach einem installierten oder verfügbaren Paket zu suchen, verwenden Sie
$ sudo dnf search <em>paket_name</em>
Um zum Beispiel nach dem Paket Nmap zu suchen:
$ sudo dnf search nmap
Letzte Überprüfung des Ablaufs der Metadaten: vor 0:05:14 am Tue 02 Jun 2020 08:38:09 PM UTC.
==================================== Exakt übereinstimmender Name: nmap =====================================
nmap.x86_64 : Netzwerkerkundungstool und Sicherheitsscanner
=================================== Name & Zusammenfassung Passend zu: nmap ====================================
nmap-ncat.x86_64 : Der Netcat-Ersatz von Nmap
Pakete auflisten
Um eine Liste aller installierten und verfügbaren Pakete anzuzeigen:
$ sudo dnf list all
Installierte Pakete
GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetzwerkManager-tui.x86_64 1:1.22.8-4.el8
...
Um alle installierten Pakete aufzulisten:
$ sudo dnf list installed
Installierte Pakete
NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda
NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda
PackageKit.x86_64 1.1.12-4.el8 @AppStream
PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream
WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms
abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream
acl.x86_64 2.2.53-1.el8 @anaconda
...
Um alle verfügbaren Pakete aufzulisten:
$ sudo dnf list available
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:15:10 am Tue 02 Jun 2020 05:37:11 PM UTC.
Verfügbare Pakete
CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms
CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms
...
Um zum Beispiel alle verfügbaren MySQL-Pakete aufzulisten:
$ sudo dnf list available "mysql*"
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:17:04 am Tue 02 Jun 2020 05:37:11 PM UTC.
Verfügbare Pakete
mysql.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-common.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
mysql-devel.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-für-x86_64-appstream-rhui-rpms
mysql-errmsg.x86_64 8.0.17-3.modul el8.0.0 3898 e09bb8de rhui-rhel-8-für-x86_64-appstream-rhui-rpms
mysql-libs.x86_64 8.0.17-3.modul el8.0.0 3898 e09bb8de rhui-rhel-8-für-x86_64-appstream-rhui-rpms
mysql-server.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-für-x86_64-appstream-rhui-rpms
mysql-test.x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Anzeige der Paketinformationen
So zeigen Sie Informationen über ein Paket an:
$ sudo dnf info <em>paket_name
</em>
Zum Beispiel, um Informationen über den httpd-Server anzuzeigen:
$ sudo dnf info httpd
Letzte Überprüfung des Ablaufs der Metadaten: vor 0:15:04 am Mon 01 Jun 2020 11:23:11 PM UTC.
Verfügbare Pakete
Name : httpd
Version : 2.4.37
Veröffentlichung : 21.module el8.2.0 5008 cca404a3
Architektur : x86_64
Größe : 1.4 M
Quelle : httpd-2.4.37-21.module el8.2.0 5008 cca404a3.src.rpm
Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms
Zusammenfassung : Apache HTTP Server
URL : https://httpd.apache.org/
Lizenz : ASL 2.0
Beschreibung : Der Apache HTTP Server ist ein leistungsstarker, effizienter und erweiterbarer
: Webserver.
Installieren von Paketen
Installation eines einzelnen Pakets
So installieren Sie ein einzelnes Paket und alle seine nicht installierten Abhängigkeiten:
$ sudo dnf install paket_name
Zum Beispiel, um Nginx zu installieren:
$ sudo dnf install nginx
Aufgelöste Abhängigkeiten.
===========================================================================================
Paket Arch Version Repository Größe
===========================================================================================
Installieren:
nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
Installieren der Abhängigkeiten:
gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k
..
Dies installiert Nginx und alle seine nicht installierten Abhängigkeiten.
Installieren mehrerer Pakete
Sie können auch mehrere Pakete installieren, indem Sie Paketnamen an diesen Befehl anhängen. Um zum Beispiel Nginx, PHP & MySQL-server zu installieren, geben Sie ein:
$ sudo dnf install nginx php mysql-server
Aufgelöste Abhängigkeiten.
===========================================================================================
Paket Arch Version Repository Größe
===========================================================================================
Installieren:
mysql-server x86_64 8.0.17-3.module el8.0.0 3898 e09bb8de
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M
nginx x86_64 1:1.14.1-9.module el8.0.0 4108 af250afe
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k
php x86_64 7.2.24-1.modul el8.2.0 4601 7c76a223
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M
Installieren der Abhängigkeiten:
apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k
apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k
gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k
httpd x86_64 2.4.37-21.modul el8.2.0 5008 cca404a3
rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M
httpd-filesystem noarch 2.4.37-21.module el8.2.0 5008 cca404a3
...
Installieren eines Pakets anhand seines Binärdateinamens
Wenn Sie den Namen der zu installierenden Binärdatei kennen, aber nicht den Namen des Pakets, reicht auch das aus, um das entsprechende Paket zu installieren.
Wenn Sie zum Beispiel eingeben:
$ sudo dnf install /usr/sbin/named
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:21:25 am Tue 02 Jun 2020 05:37:11 PM UTC.
Abhängigkeiten aufgelöst.
=====================================================================================================
Paket Arch Version Repository Größe
=====================================================================================================
Installieren:
bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M
Zusammenfassung der Transaktion
=====================================================================================================
1 Paket installieren
Gesamtgröße des Downloads: 2.1 M
Installierte Größe: 4.5 M
Ist dies in Ordnung [j/n]:
DNF sucht und findet das Paket, das /usr/sbin/named
bereitstellt und fordert Sie auf, es zu installieren.
Herausfinden, welches Paket eine Datei besitzt
Wenn Sie den Dateinamen kennen und herausfinden möchten, welches Paket die Datei bereitstellt (installiert oder nicht), verwenden Sie:
$ sudo dnf provides <em>Dateiname</em>
Um zum Beispiel herauszufinden, welches Paket named, die Binärdatei für den DNS-Server, bereitstellt, verwenden Sie
$ sudo dnf provides named
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:27:30 am Mon 01 Jun 2020 11:23:11 PM UTC.
bind-32:9.11.4-16.P2.el8.x86_64 :
Das Berkeley Internet Name Domain (BIND) DNS (Domain Name System) :
server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Abgeglichen von: Dateiname :
/usr/sbin/named
Ein Paket entfernen
Um ein Paket zu entfernen:
sudo dnf remove <em>paket_name</em>
Aber Vorsicht, DNF ist nicht in der Lage, ein Paket zu entfernen, ohne auch Pakete zu entfernen, die von ihm abhängen. Um das Paket nmap zu entfernen, verwenden Sie:
$ sudo dnf remove nmap
Aufgelöste Abhängigkeiten.
=====================================================================================================
Paket Architektur Version Repository Größe
=====================================================================================================
Entfernt:
nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M
Zusammenfassung der Transaktion
=====================================================================================================
Entfernen Sie 1 Paket
Freigegebener Platz: 24 M
Ist dies in Ordnung [j/n]:
Paketgruppen verwalten
Eine Paketgruppe ist eine Sammlung von Paketen, die eng miteinander verbunden sind und einem gemeinsamen Zweck dienen. Durch die Installation einer Paketgruppe wird eine Reihe von Paketen installiert, was viel Zeit spart.
Alle Paketgruppen auflisten
Um alle Paketgruppen aufzulisten:
$ sudo dnf group list
Verfügbare Umgebungsgruppen:
Server mit GUI
Server
Arbeitsstation
Benutzerdefiniertes Betriebssystem
Virtualisierungs-Host
Installierte Umgebungsgruppen:
Minimale Installation
Installierte Gruppen:
Sicherheits-Tools
Container-Verwaltung
Verfügbare Gruppen:
Legacy UNIX-Kompatibilität
Entwicklungs-Tools
Wissenschaftliche Unterstützung
.NET Core Entwicklung
Grafische Verwaltungstools
Kopflose Verwaltung
RPM-Entwicklungstools
Netzwerk Server
System-Tools
Smart Card-Unterstützung
Alle Pakete einer Gruppe auflisten
Um alle Pakete in einer Gruppe aufzulisten:
$ sudo dnf group info <em>paket_name</em>
Um zum Beispiel die Pakete in der Gruppe “Security Tools” anzuzeigen:
$ sudo dnf group info "sicherheitswerkzeuge"
Gruppe: Sicherheits-Tools
Beschreibung: Sicherheitstools für die Integritäts- und Vertrauensprüfung.
Standard-Pakete:
scap-security-guide
Optionale Pakete:
aide
hmaccalc
openscap
openscap-engine-sce
openscap-utils
scap-security-guide-doc
scap-workbench
tpm-quote-tools
tpm-Werkzeuge
tpm2-Werkzeuge
hosen
Installieren einer Paketgruppe
Bei der Installation einer Gruppe werden alle Pakete der Gruppe installiert. Um eine Paketgruppe zu installieren, verwenden Sie:
sudo dnf group install <em>package_group_name</em>
Um zum Beispiel die Gruppe “Netzwerkserver” zu installieren:
$ sudo dnf group install "Netzwerkserver"
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:40:14 am Wed 03 Jun 2020 05:53:11 PM UTC.
Abhängigkeiten aufgelöst.
===========================================================================================
Paket Architektur Version Repository Größe
===========================================================================================
Installieren von Gruppen:
Netzwerk-Server
Transaktionsübersicht
===========================================================================================
Ist dies in Ordnung [j/n]:
Entfernen einer Paketgruppe
Um eine Paketgruppe zu entfernen:
sudo dnf remove <em>paket_name</em>
Um also die Paketgruppe “Security Tools” zu entfernen:
$ sudo dnf group remove "Sicherheits-Tools"
Aufgelöste Abhängigkeiten.
=====================================================================================================
Paket Arch Version Repository Größe
=====================================================================================================
Entfernt:
scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M
Entfernen von unbenutzten Abhängigkeiten:
GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M
libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k
openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M
openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k
xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k
Entfernen von Gruppen:
Sicherheits-Tools
Zusammenfassung der Transaktion
=====================================================================================================
6 Pakete entfernen
Freigegebener Platz: 247 M
Ist dies in Ordnung [j/n]:
Pakete aktualisieren
Alle Pakete aktualisieren
Um alle Pakete und ihre Abhängigkeiten zu aktualisieren, können Sie verwenden:
$ sudo dnf upgrade
Letzte Überprüfung des Ablaufs der Metadaten: vor 1:09:31 am Tue 02 Jun 2020 08:38:09 PM UTC.
Abhängigkeiten aufgelöst.
Nichts mehr zu tun.
Vollständig!
Damit werden alle Updates installiert, die installiert werden können. Sowohl dnf upgrade als auch dnf update haben die gleiche Wirkung, aber dnf upgrade ist vorzuziehen.
Ein einzelnes Paket aktualisieren
Um ein einzelnes Paket zu aktualisieren, führen Sie aus:
$ sudo dnf upgrade paket_name
Um zum Beispiel das Paket python zu aktualisieren:
$ sudo dnf upgrade python
Fazit
Das Erlernen von DNF kann sich lohnen, denn es ist oft der schnellste Weg, um Aufgaben der Systemadministration zu erledigen. Wenn Sie daran interessiert sind, RHEL 8 zu lernen, sollten Sie sich diesen Udemy-Kurs ansehen.