• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • DNF ist derzeit das Standard-Paketverwaltungssystem für die meisten RPM-basierten Linux-Distributionen.

    DNF lädt Pakete aus Repositorys 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 Standardpaketmanager. Unter RHEL 8.x ist es jetzt der Standardpaketmanager.

    DNF Bietet eine sichere Paketverwaltung, indem die Überprüfung der GPG-Signatur für von 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 eine Verknüpfung zu DNF handelt.

    Warum DNF?

    DNF oder Dandified YUM ist das YUM der nächsten Generation. Im Vergleich zu YUM bietet DNF eine bessere Speichernutzung, ein verbessertes Abhängigkeitsmanagement und die Möglichkeit, sowohl Python 2 als auch Python 3 auszuführen.

    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. Im Folgenden finden Sie eine Reihe von DNF-Befehlen, die häufig von Systemadministratoren verwendet werden.

    Paket suchen

    Um nach einem Paket zu suchen, das in allen Repositorys installiert oder verfügbar ist, unsere Website benutzen,

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

    Zum Beispiel, um nach einem Paket zu suchen 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

    Pakete auflisten

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

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

    So listen Sie beispielsweise alle verfügbaren MySQL-Pakete auf:

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

    So zeigen Sie beispielsweise Informationen zum httpd-Server an:

    $ 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

    Ein einzelnes Paket installieren

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

    $ sudo dnf install package_name

    Zum Beispiel, zu Installieren Sie Nginx:

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

    Mehrere Pakete installieren

    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 dies 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 bereitstellt /usr/sbin/benannt und fordert Sie auf, es zu installieren.

    Finden, 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 einen Namen enthält, verwendet die Binärdatei für den DNS-Server Folgendes: 

    $ 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

    Paket entfernen

    So entfernen Sie ein Paket:

    sudo dnf remove <em>package_name</em>

    Beachten Sie jedoch, dass DNF ein Paket nicht entfernen kann, ohne auch davon abhängige Pakete zu entfernen. 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 verbunden sind und einem gemeinsamen Zweck dienen. Durch die Installation einer Paketgruppe werden mehrere Pakete installiert, wodurch viel Zeit gespart wird.

    Listen Sie alle Paketgruppen auf

    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

    Listen Sie alle Pakete in einer Gruppe auf

    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

    Durch die Installation einer Gruppe werden alle Pakete in einer Gruppe installiert. So installieren Sie eine Paketgruppe:

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

    Pakete aktualisieren

    Alle Pakete aktualisieren

    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. Beide DNS-Upgrade und dnf update haben den gleichen effekt, aber dnf upgrade wird bevorzugt.

    Aktualisieren eines einzelnen Pakets

    Führen Sie Folgendes aus, um ein einzelnes Paket zu aktualisieren:

    $ sudo dnf upgrade package_name

    So aktualisieren Sie beispielsweise das Python-Paket:

    $ sudo dnf upgrade python
    

    Fazit

    DNF lernen kann sein lohnend Dies ist häufig der schnellste Weg, um Systemverwaltungsaufgaben auszuführen. Wenn Sie RHEL 8 lernen möchten, können Sie dies überprüfen Udemy natürlich.