Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Linux und Vernetzung Zuletzt aktualisiert: September 14, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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 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 er seit Fedora 22 der Standard-Paketmanager. Unter RHEL 8.x ist er nun der Standard-Paketmanager.

DNF bietet eine sichere Paketverwaltung durch die Aktivierung der GPG-Signaturprüfung für GPG-signierte Pakete. DNF installiert keine Pakete, die nicht mit dem richtigen Schlüssel für dieses Repository signiert sind.

Aus Gründen der Abwärtskompatibilität verfügt RHEL 8.x ebenfalls über einen YUM-Befehl, der allerdings ein Link zu DNF ist.

Warum DNF?

DNF oder Dandified YUM ist die nächste Generation von YUM. Im Vergleich zu YUM hat DNF eine bessere Speichernutzung, ein verbessertes Abhängigkeitsmanagement und die Fähigkeit, 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 zur Installation, Aktualisierung oder Entfernung des Pakets zu verwenden. Im Folgenden finden Sie eine Reihe von DNF-Befehlen, die häufig von Systemadministratoren verwendet werden.

Suche nach einem Paket

So suchen Sie in allen Repositories nach einem installierten oder verfügbaren Paket, verwenden.

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

Zum Beispiel für die Suche nach dem Paket Nmap:

$ 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

Auflistung von Paketen

Um eine Liste aller installierten und verfügbaren Pakete zu sehen:

$ 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 
...

Um alle installierten Pakete aufzulisten:

$ 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 
...                                                                      

Zur Auflistung aller verfügbaren Pakete:

$ 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
...

Zum Beispiel, um alle MySQL-Pakete aufzulisten, die verfügbar sind:

$ 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

Anzeige der Paketinformationen

Um Informationen über ein Paket anzuzeigen:

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

Zum Beispiel, um Informationen über den 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.

Installieren von Paketen

Installation eines einzelnen Pakets

Um ein einzelnes Paket und alle nicht installierten Abhängigkeiten zu installieren:

$ sudo dnf install package_name

Zum Beispiel, zu Nginx 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
..

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 und MySQL-Server zu installieren, geben Sie 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ä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.

Zum Beispiel, wenn Sie 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 Folgendes bietet /usr/sbin/benannt und fordert Sie auf, es zu installieren.

Herausfinden, welches Paket eine Datei besitzt

Wenn Sie den Dateinamen kennen und herausfinden wollen, welches Paket ihn bereitstellt (installiert oder nicht), verwenden Sie:

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

Zum Beispiel, um herauszufinden, welches Paket named, die Binärdatei für DNS-Server verwendet: 

$ 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

Um ein Paket zu entfernen:

sudo dnf remove <em>package_name</em>

Aber Vorsicht, DNF ist nicht in der Lage, ein Paket zu entfernen, ohne auch die Pakete zu entfernen, die von ihm 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]:

Verwaltung von Paketgruppen

Eine Paketgruppe ist eine Sammlung von Paketen, die eng miteinander verbunden sind und einen gemeinsamen Zweck erfüllen. 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
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 einer Gruppe auflisten

Um alle Pakete einer Gruppe aufzulisten:

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

Zum Beispiel, um Pakete in der Gruppe der Sicherheitstools anzuzeigen:

$ 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

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>

Zum Beispiel, um die Gruppe "Netzwerkserver" zu installieren:

$ 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

Um eine Paketgruppe zu entfernen:

sudo dnf remove <em>package_name</em>

So entfernen Sie die Paketgruppe "Security Tools":

$ 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]: 

Pakete aktualisieren

Alle Pakete aktualisieren

Um alle Pakete und ihre Abhängigkeiten zu aktualisieren, können Sie 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!

Damit werden alle Updates installiert, die installiert werden können. Beide dnf upgrade und 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 package_name

Zum Beispiel, um das Python-Paket zu aktualisieren:

$ sudo dnf upgrade python

Schlussfolgerung

DNF lernen kann sein lohnend da dies oft der schnellste Weg ist, um Systemverwaltungsaufgaben durchzuführen. Wenn Sie daran interessiert sind, RHEL 8 zu erlernen, können Sie dies hier nachlesen Udemy-Kurs.

  • Vijay Khurana
    Autor
Dank an unsere Sponsoren
Weitere gute Lektüre zu Linux
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder