Eine Kurzanleitung zum DNF Package Manager

Veröffentlicht: 2020-06-06

DNF ist jetzt das standardmäßige Paketverwaltungssystem auf den meisten RPM-basierten Linux-Distributionen.

DNF lädt Pakete aus Repositories herunter, installiert, deinstalliert und aktualisiert Pakete. Es führt eine automatische Abhängigkeitsauflösung 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 es seit Fedora 22 der Standard-Paketmanager. Unter RHEL 8.x ist es jetzt der Standard-Paketmanager.

DNF bietet eine sichere Paketverwaltung, indem die GPG-Signaturüberprüfung für GPG-signierte Pakete aktiviert wird. DNF installiert kein Paket, das nicht mit dem richtigen Schlüssel für dieses Repository signiert ist.

Aus Gründen der Abwärtskompatibilität verfügt RHEL 8.x auch über einen YUM-Befehl, obwohl es sich um einen Link zu DNF handelt.

Warum DNF?

DNF oder Dandified YUM ist die nächste Generation von YUM. Im Vergleich zu YUM hat DNF eine bessere Speicherauslastung, ein verbessertes Abhängigkeitsmanagement und die Möglichkeit, sowohl mit Python 2 als auch mit Python 3 ausgeführt zu werden.

Paketverwaltung mit DNF

Sie müssen über Superuser-Berechtigungen verfügen, um den DNF-Befehl zum Installieren, Aktualisieren oder Entfernen des Pakets verwenden zu können. Es folgt eine Reihe von DNF-Befehlen, die häufig von Systemadministratoren verwendet werden.

Durchsuchen eines Pakets

Um nach einem Paket zu suchen, das in allen Repositories installiert oder verfügbar ist, verwenden Sie

 $ sudo dnf search <em>package_name</em>

Um beispielsweise nach dem Paket Nmap zu suchen:

 $ sudo dnf search nmap
 Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement

Pakete auflisten

So sehen Sie eine Liste aller installierten und verfügbaren Pakete:

 $ sudo dnf list all
 Installed Packages 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 NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...

So listen Sie alle installierten Pakete auf:

$ sudo dnf list installed

 Installed Packages 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 ...

So listen Sie alle verfügbaren Pakete auf:

 $ sudo dnf list available
 Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages 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 beispielsweise alle verfügbaren MySQL-Pakete aufzulisten:

 $ sudo dnf list available "mysql*"
 Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages 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-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-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

Paketinformationen anzeigen

So zeigen Sie Informationen zu einem Paket an:

 $ sudo dnf info <em>package_name </em>

Um beispielsweise Informationen zum httpd-Server anzuzeigen:

 $ sudo dnf info httpd
 Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.

Pakete installieren

Installieren eines einzelnen Pakets

So installieren Sie ein einzelnes Paket und alle seine nicht installierten Abhängigkeiten:

 $ sudo dnf install package_name

Zum Beispiel, um Nginx zu installieren:

 $ sudo dnf install nginx
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: 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 Installing dependencies: 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 ..

Dadurch werden Nginx und alle nicht installierten Abhängigkeitsanforderungen installiert.

Installieren mehrerer Pakete

Sie können auch mehrere Pakete installieren, indem Sie diesem Befehl Paketnamen hinzufügen. Um beispielsweise Nginx, PHP & MySQL-Server zu installieren, geben Sie Folgendes ein:

 $ sudo dnf install nginx php mysql-server
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: 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.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: 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.module+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ären Dateinamens

Wenn Sie den Namen der zu installierenden Binärdatei kennen, aber nicht den Paketnamen, reicht auch das aus, um das entsprechende Paket zu installieren.

Wenn Sie beispielsweise Folgendes eingeben:

 $ sudo dnf install /usr/sbin/named
 Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:

DNF sucht und findet das Paket, das den Namen /usr/sbin/ 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 ihn bereitstellt (installiert oder nicht), verwenden Sie:

 $ sudo dnf provides <em>file_name</em>

Um beispielsweise herauszufinden, welches Paket named bereitstellt, verwenden Sie die Binärdatei für den DNS-Server:

 $ sudo dnf provides named
 Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named

Entfernen eines Pakets

So entfernen Sie ein Paket:

 sudo dnf remove <em>package_name</em>

Aber seien Sie vorsichtig, DNF ist nicht in der Lage, ein Paket zu entfernen, ohne auch Pakete zu entfernen, die davon abhängen. Um das Paket nmap zu entfernen, verwenden Sie:

 $ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:

Paketgruppen verwalten

Eine Paketgruppe ist eine Sammlung von Paketen, die eng miteinander verwandt sind und einem gemeinsamen Zweck dienen. Durch die Installation einer Paketgruppe wird eine Reihe von Paketen installiert, wodurch viel Zeit gespart wird.

Alle Paketgruppen auflisten

So listen Sie alle Paketgruppen auf:

 $ sudo dnf group list
 Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support

Alle Pakete in einer Gruppe auflisten

So listen Sie alle Pakete in einer Gruppe auf:

 $ sudo dnf group info <em>package_name</em>

So zeigen Sie beispielsweise Pakete in der Gruppe „Sicherheitstools“ an:

 $ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers

Installieren einer Paketgruppe

Beim Installieren einer Gruppe werden alle Pakete in einer Gruppe installiert. Um eine Paketgruppe zu installieren, verwenden Sie:

 sudo dnf group install <em>package_group_name</em>

So installieren Sie beispielsweise die Gruppe „Netzwerkserver“:

 $ sudo dnf group install “Network Servers”
 Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:

Entfernen einer Paketgruppe

So entfernen Sie eine Paketgruppe:

 sudo dnf remove <em>package_name</em>

So entfernen Sie die Paketgruppe „Sicherheitstools“:

 $ sudo dnf group remove "security tools"
 Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: 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 Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]: 

Aktualisieren von Paketen

Aktualisierung aller Pakete

Um alle Pakete und ihre Abhängigkeiten zu aktualisieren, können Sie Folgendes verwenden:

 $ sudo dnf upgrade
 Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!

Dadurch werden alle Updates installiert, die installiert werden können. Sowohl dnf upgrade als auch dnf update haben den gleichen Effekt, aber dnf upgrade wird bevorzugt.

Aktualisieren eines einzelnen Pakets

Um ein einzelnes Paket zu aktualisieren, führen Sie Folgendes aus:

 $ sudo dnf upgrade package_name

Um beispielsweise das Python-Paket zu aktualisieren:

 $ sudo dnf upgrade python

Fazit

Das Erlernen von DNF kann sich lohnen, da es oft der schnellste Weg ist, Systemverwaltungsaufgaben auszuführen. Wenn Sie daran interessiert sind, RHEL 8 zu lernen, können Sie sich diesen Udemy-Kurs ansehen.