Zum Inhalt

Softwareverwaltung

Allgemeines

Auf einem GNU/Linux-System ist es möglich, Software auf zwei Arten zu installieren:

  • Verwendung eines Installationspakets;
  • Kompilierung aus Quelldateien.

Anmerkung

Die Installation aus dem Quellcode ist hier nicht abgedeckt. In der Regel sollten Sie die Paketmanager-Methode verwenden, es sei denn, die gewünschte Software ist nicht über den Paketmanager verfügbar. Ein Grund dafür ist, dass Abhängigkeiten im Allgemeinen vom Paketsystem verwaltet werden, während Sie mit dem Quellcode die Abhängigkeiten manuell verwalten müssen.

Das Paket: Es ist eine einzige Datei, die alle Daten enthält, die für die Installation eines Programms benötigt werden. Es kann direkt auf dem System aus einem Software-Repository installiert werden.

Die Quelldateien: Einige Programme wird nicht in Paketen bereitgestellt, die installiert werden können, sondern über ein Archiv, das die Quelldateien enthält. Es obliegt dem Administrator, diese Dateien vorzubereiten und zu kompilieren, um die Software zu installieren.

RPM: RedHat Paketmanager

RPM (RedHat Package Manager) ist ein Software-Verwaltung-System. Es ist möglich, die in Paketen enthaltene Software zu installieren, zu deinstallieren, zu aktualisieren oder zu überprüfen.

RPM ist das Format, das von allen RedHat basierten Distributionen verwendet wird (Rocky Linux, Fedora, CentOS, SuSe, Mandriva, ...). Das Äquivalent in der Debian-Welt ist DPKG (Debian Package).

Der Name eines RPM-Pakets folgt einer spezifischen Nomenklatur:

Beschreibung eines Paketnamens

Da Kommando rpm

Mit dem Befehl rpm können Sie ein Paket installieren.

rpm [-i][-U] package.rpm [-e] package

Beispiel (für ein Paket Namens 'package'):

rpm -ivh package.rpm
Option Beschreibung
-i package.rpm installiert das Paket.
-U package.rpm aktualisiert ein bereits installiertes Paket.
-e package.rpm deinstalliert das Paket.
-h zeigt einen Fortschrittsbalken an.
-v informiert über den Fortschritt der Operation.
--test testet den Befehl ohne ihn auszuführen.

Mit dem Befehl rpm können Sie auch die System-Paketdatenbank abfragen, indem Sie die Option -q hinzufügen.

Es ist möglich, mehrere Arten von Abfragen auszuführen, um verschiedene Informationen über die installierten Pakete zu erhalten. Die RPM-Datenbank befindet sich im Verzeichnis /var/lib/rpm.

Beispiel:

rpm -qa

Dieser Befehl fragt alle auf dem System installierten Pakete ab.

rpm -q [-a][-i][-l] package [-f] file

Beispiel:

rpm -qil package
rpm -qf /path/to/file
Option Beschreibung
-a Listet alle auf dem System installierten Pakete auf.
-i __package__ Zeigt die Paketinformation an.
-l __package__ Listet die im Paket enthaltenen Dateien auf.
-f Zeigt den Namen des Pakets, das die angegebene Datei enthält.
--last Die Liste der Pakete wird nach dem Installationsdatum sortiert (die letzten installierten Pakete erscheinen als Erste).

Warnung

Nach der -q Option muss der Paketname genau sein. Platzhalter (wildcards) werden nicht unterstützt.

Hinweis

Es ist jedoch möglich, alle installierten Pakete aufzulisten und mit dem Befehl grep zu filtern.

Beispiel, Liste der zuletzt installierten Pakete:

sudo rpm -qa --last | head
NetworkManager-config-server-1.26.0-13.el8.noarch Mon 24 May 2021 02:34:00 PM CEST
iwl2030-firmware-18.168.6.1-101.el8.1.noarch  Mon 24 May 2021 02:34:00 PM CEST
iwl2000-firmware-18.168.6.1-101.el8.1.noarch  Mon 24 May 2021 02:34:00 PM CEST
iwl135-firmware-18.168.6.1-101.el8.1.noarch   Mon 24 May 2021 02:34:00 PM CEST
iwl105-firmware-18.168.6.1-101.el8.1.noarch   Mon 24 May 2021 02:34:00 PM CEST
iwl100-firmware-39.31.5.1-101.el8.1.noarch    Mon 24 May 2021 02:34:00 PM CEST
iwl1000-firmware-39.31.5.1-101.el8.1.noarch   Mon 24 May 2021 02:34:00 PM CEST
alsa-sof-firmware-1.5-2.el8.noarch            Mon 24 May 2021 02:34:00 PM CEST
iwl7260-firmware-25.30.13.0-101.el8.1.noarch  Mon 24 May 2021 02:33:59 PM CEST
iwl6050-firmware-41.28.5.1-101.el8.1.noarch   Mon 24 May 2021 02:33:59 PM CEST

Beispiel, listet den Installationsverlauf des Kernels auf:

sudo rpm -qa --last kernel
kernel-4.18.0-305.el8.x86_64                  Tue 25 May 2021 06:04:56 AM CEST
kernel-4.18.0-240.22.1.el8.x86_64             Mon 24 May 2021 02:33:35 PM CEST

Beispiel, Liste aller installierten Pakete mit einem bestimmten Namen mit grep:

sudo dnf list installed | grep httpd
centos-logos-httpd.noarch           80.5-2.el8                              @baseos
httpd.x86_64                        2.4.37-30.module_el8.3.0+561+97fdbbcc   @appstream
httpd-filesystem.noarch             2.4.37-30.module_el8.3.0+561+97fdbbcc   @appstream
httpd-tools.x86_64                  2.4.37-30.module_el8.3.0+561+97fdbbcc   @appstream

DNF: Dandified Yum

DNF (Dandified Yum) ist ein Software-Paketmanager, Nachfolger von YUM (Yellow dog Updater Modified). Es funktioniert mit RPM-Paketen, die in einem lokalen oder entfernten Repository gruppiert sind (ein Verzeichnis zum Speichern von Paketen). Bei den gängigsten Befehlen ist die Verwendung identisch mit der von yum.

Der dnf Befehl ermöglicht die Verwaltung von Paketen, indem er die installierten Pakete mit denen in den auf dem Server definierten Repositories vergleicht. Er installiert auch automatisch Abhängigkeiten wenn sie auch in den Repositories vorhanden sind.

dnf ist der Paketmanager, der von vielen RedHat-basierten Distributionen verwendet wird (Rocky Linux, Fedora, CentOS, ...). Das Pendant in der Debian-Welt ist APT (Advanced Packaging Tool).

dnf Befehl

Mit dem dnf Befehl können Sie ein Paket installieren, indem Sie nur die Kurzbezeichnung angeben.

dnf [install][remove][list all][search][info] package

Beispiel:

dnf install tree

Es wird nur der Kurzname des Pakets benötigt.

Option Beschreibung
install Installiert das Paket.
remove Das Paket deinstallieren.
list all Listet die Pakete auf, die bereits im Repository sind.
search Suche nach einem Paket im Repository.
provides */command_name Suche nach einem Befehl.
info Zeigt die Paketinformation an.
autoremove Entfernt alle Pakete, die als Abhängigkeiten installiert wurden, aber nicht mehr benötigt werden.

Mit dem dnf install Befehl können Sie das gewünschte Paket installieren, ohne sich um seine Abhängigkeiten zu kümmern, die direkt durch dnf selbst gelöst werden.

dnf install nginx
Last metadata expiration check: 3:13:41 ago on Wed 23 Mar 2022 07:19:24 AM CET.
Dependencies resolved.
============================================================================================================================
 Package                             Architecture    Version                                        Repository         Size
============================================================================================================================
Installing:
 nginx                               aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream         543 k
Installing dependencies:
 nginx-all-modules                   noarch          1:1.14.1-9.module+el8.4.0+542+81547229         appstream          22 k
 nginx-mod-http-image-filter         aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream          33 k
 nginx-mod-http-perl                 aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream          44 k
 nginx-mod-http-xslt-filter          aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream          32 k
 nginx-mod-mail                      aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream          60 k
 nginx-mod-stream                    aarch64         1:1.14.1-9.module+el8.4.0+542+81547229         appstream          82 k

Transaction Summary
============================================================================================================================
Install  7 Packages

Total download size: 816 k
Installed size: 2.2 M
Is this ok [y/N]:

Falls Sie sich nicht an den genauen Namen des Pakets erinnern, können Sie ihn mit dem Befehl dnf search name suchen. Wie Sie sehen können, gibt es einen Abschnitt, der den genauen Namen und einen anderen, der die Paketkorrespondenz enthält. Alle werden hervorgehoben, um die Suche zu vereinfachen.

dnf search nginx
Last metadata expiration check: 0:20:55 ago on Wed 23 Mar 2022 10:40:43 AM CET.
=============================================== Name Exactly Matched: nginx ================================================
nginx.aarch64 : A high performance web server and reverse proxy server
============================================== Name & Summary Matched: nginx ===============================================
collectd-nginx.aarch64 : Nginx plugin for collectd
munin-nginx.noarch : NGINX support for Munin resource monitoring
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-filesystem.noarch : The basic directory layout for the Nginx server
nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module
nginx-mod-http-perl.aarch64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module
nginx-mod-mail.aarch64 : Nginx mail modules
nginx-mod-stream.aarch64 : Nginx stream modules
pagure-web-nginx.noarch : Nginx configuration for Pagure
pcp-pmda-nginx.aarch64 : Performance Co-Pilot (PCP) metrics for the Nginx Webserver
python3-certbot-nginx.noarch : The nginx plugin for certbot

Eine andere Möglichkeit, nach einem Paket zu suchen, indem Sie einen zusätzlichen Suchschlüssel eingeben, ist, das Ergebnis des dnf Befehls über eine Pipe an den grep-Befehl mit dem gewünschten Schlüssel zu senden.

dnf search nginx | grep mod
Last metadata expiration check: 3:44:49 ago on Wed 23 Mar 2022 06:16:47 PM CET.
nginx-all-modules.noarch : A meta package that installs all available Nginx modules
nginx-mod-http-image-filter.aarch64 : Nginx HTTP image filter module
nginx-mod-http-perl.aarch64 : Nginx HTTP perl module
nginx-mod-http-xslt-filter.aarch64 : Nginx XSLT module
nginx-mod-mail.aarch64 : Nginx mail modules
nginx-mod-stream.aarch64 : Nginx stream modules

Der dnf remove Befehl entfernt ein Paket vom System und seine Abhängigkeiten. Unten ist ein Auszug des dnf remove httpd Befehls.

dnf remove httpd
Dependencies resolved.
============================================================================================================================
 Package                        Architecture    Version                                            Repository          Size
============================================================================================================================
Removing:
 httpd                          aarch64         2.4.37-43.module+el8.5.0+727+743c5577.1            @appstream         8.9 M
Removing dependent packages:
 mod_ssl                        aarch64         1:2.4.37-43.module+el8.5.0+727+743c5577.1          @appstream         274 k
 php                            aarch64         7.4.19-1.module+el8.5.0+696+61e7c9ba               @appstream         4.4 M
 python3-certbot-apache         noarch          1.22.0-1.el8                                       @epel              539 k
Removing unused dependencies:
 apr                            aarch64         1.6.3-12.el8                                       @appstream         299 k
 apr-util                       aarch64         1.6.1-6.el8.1                                      @appstream         224 k
 apr-util-bdb                   aarch64         1.6.1-6.el8.1                                      @appstream          67 k
 apr-util-openssl               aarch64         1.6.1-6.el8.1                                      @appstream          68 k
 augeas-libs                    aarch64         1.12.0-6.el8                                       @baseos            1.4 M
 httpd-filesystem               noarch          2.4.37-43.module+el8.5.0+727+743c5577.1            @appstream         400
 httpd-tools                    aarch64         2.4.37-43.module+el8.5.0+727+743c5577.1
...

Der dnf list Befehl listet alle Pakete auf, die auf dem System installiert sind und im Repository vorhanden sind. Es akzeptiert mehrere Parameter:

Parameter Beschreibung
all Listet die installierten und die in den Repositories verfügbaren Pakete auf.
available Listet nur die für die Installation verfügbaren Pakete auf.
updates Listet Pakete auf, die aktualisiert werden können.
obsoletes Listet die Pakete auf, die durch die Umstellung auf höheren verfügbaren Versionen, obsolet geworden sind.
recent Listet die neuesten Pakete auf, die dem Repository zuletzt hinzugefügt wurden.

Der dnf info Befehl liefert detaillierte Informationen zu einem Paket:

dnf info firewalld
Last metadata expiration check: 15:47:27 ago on Tue 22 Mar 2022 05:49:42 PM CET.
Installed Packages
Name         : firewalld
Version      : 0.9.3
Release      : 7.el8
Architecture : noarch
Size         : 2.0 M
Source       : firewalld-0.9.3-7.el8.src.rpm
Repository   : @System
From repo    : baseos
Summary      : A firewall daemon with D-Bus interface providing a dynamic firewall
URL          : http://www.firewalld.org
License      : GPLv2+
Description  : firewalld is a firewall service daemon that provides a dynamic customizable
             : firewall with a D-Bus interface.

Available Packages
Name         : firewalld
Version      : 0.9.3
Release      : 7.el8_5.1
Architecture : noarch
Size         : 501 k
Source       : firewalld-0.9.3-7.el8_5.1.src.rpm
Repository   : baseos
Summary      : A firewall daemon with D-Bus interface providing a dynamic firewall
URL          : http://www.firewalld.org
License      : GPLv2+
Description  : firewalld is a firewall service daemon that provides a dynamic customizable
             : firewall with a D-Bus interface.

Manchmal kennen Sie nur die ausführbare Datei, die Sie verwenden möchten, nicht jedoch das Paket, das sie enthält. In diesem Fall können Sie den Befehl dnf provide Paketname verwenden, der die Datenbank nach der gewünschten Übereinstimmung durchsucht.

Beispiel für die Suche nach dem semanage Kommando:

dnf provides */semanage
Last metadata expiration check: 1:12:29 ago on Wed 23 Mar 2022 10:40:43 AM CET.
libsemanage-devel-2.9-6.el8.aarch64 : Header files and libraries used to build policy manipulation tools
Repo        : powertools
Matched from:
Filename    : /usr/include/semanage

policycoreutils-python-utils-2.9-16.el8.noarch : SELinux policy core python utilities
Repo        : baseos
Matched from:
Filename    : /usr/sbin/semanage
Filename    : /usr/share/bash-completion/completions/semanage

Das Kommando dnf autoremove benötigt keine Parameter. Dnf kümmert sich um die Suche nach Paketen als Kandidaten zur Entfernung.

dnf autoremove
Last metadata expiration check: 0:24:40 ago on Wed 23 Mar 2022 06:16:47 PM CET.
Dependencies resolved.
Nothing to do.
Complete!

Andere nützliche dnf Optionen

Option Beschreibung
repolist Listet die auf dem System konfigurierten Repositories auf.
grouplist Listet verfügbare Paket-Sammlungen auf.
reinigen Entfernt temporäre Dateien.

Der dnf repolist Befehl listet die auf dem System konfigurierten Repositories auf. Standardmäßig listet er nur die aktivierten Repositorys auf, kann aber mit folgenden Parametern verwendet werden:

Parameter Beschreibung
--all Listet alle Repositories auf.
--enabled Default
--disabled Listet nur deaktivierte Repositories auf.

Beispiel:

dnf repolist
repo id                                                  repo name
appstream                                                Rocky Linux 8 - AppStream
baseos                                                   Rocky Linux 8 - BaseOS
epel                                                     Extra Packages for Enterprise Linux 8 - aarch64
epel-modular                                             Extra Packages for Enterprise Linux Modular 8 - aarch64
extras                                                   Rocky Linux 8 - Extras
powertools                                               Rocky Linux 8 - PowerTools
rockyrpi                                                 Rocky Linux 8 - Rasperry Pi

Und ein Auszug des Befehls mit dem --all Flag.

dnf repolist --all

...
repo id                                             repo name                                                                                       status
appstream                                           Rocky Linux 8 - AppStream                                                                       enabled
appstream-debug                                     Rocky Linux 8 - AppStream - Source                                                              disabled
appstream-source                                    Rocky Linux 8 - AppStream - Source                                                              disabled
baseos                                              Rocky Linux 8 - BaseOS                                                                          enabled
baseos-debug                                        Rocky Linux 8 - BaseOS - Source                                                                 disabled
baseos-source                                       Rocky Linux 8 - BaseOS - Source                                                                 disabled
devel                                               Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE                                       disabled
epel                                                Extra Packages for Enterprise Linux 8 - aarch64                                                 enabled
epel-debuginfo                                      Extra Packages for Enterprise Linux 8 - aarch64 - Debug                                         disabled
epel-modular                                        Extra Packages for Enterprise Linux Modular 8 - aarch64                                         enabled
epel-modular-debuginfo                              Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug                                 disabled
epel-modular-source                                 Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source
...

Unten ist ein Auszug aus der Liste der deaktivierten Repositorys.

dnf repolist --disabled
repo id                                 repo name
appstream-debug                         Rocky Linux 8 - AppStream - Source
appstream-source                        Rocky Linux 8 - AppStream - Source
baseos-debug                            Rocky Linux 8 - BaseOS - Source
baseos-source                           Rocky Linux 8 - BaseOS - Source
devel                                   Rocky Linux 8 - Devel WARNING! FOR BUILDROOT AND KOJI USE
epel-debuginfo                          Extra Packages for Enterprise Linux 8 - aarch64 - Debug
epel-modular-debuginfo                  Extra Packages for Enterprise Linux Modular 8 - aarch64 - Debug
epel-modular-source                     Extra Packages for Enterprise Linux Modular 8 - aarch64 - Source
epel-source                             Extra Packages for Enterprise Linux 8 - aarch64 - Source
epel-testing                            Extra Packages for Enterprise Linux 8 - Testing - aarch64
...

Mit der Option -v wird die Liste um viele zusätzliche Informationen ergänzt. Unten sehen Sie einen Teil des Ergebnisses des Befehls.

dnf repolist -v

...
Repo-id            : powertools
Repo-name          : Rocky Linux 8 - PowerTools
Repo-revision      : 8.5
Repo-distro-tags      : [cpe:/o:rocky:rocky:8]:  ,  , 8, L, R, c, i, k, n, o, u, x, y
Repo-updated       : Wed 16 Mar 2022 10:07:49 PM CET
Repo-pkgs          : 1,650
Repo-available-pkgs: 1,107
Repo-size          : 6.4 G
Repo-mirrors       : https://mirrors.rockylinux.org/mirrorlist?arch=aarch64&repo=PowerTools-8
Repo-baseurl       : https://example.com/pub/rocky/8.8/PowerTools/x86_64/os/ (30 more)
Repo-expire        : 172,800 second(s) (last: Tue 22 Mar 2022 05:49:24 PM CET)
Repo-filename      : /etc/yum.repos.d/Rocky-PowerTools.repo
...

Gruppen verwenden

Gruppen sind eine Sammlung von Paketen (Sie können sich sie als virtuelle Pakete vorstellen), die eine Reihe von logisch zusammenhängende Anwendungen gruppieren, um einen bestimten Zweck zu erfüllen (eine Desktop-Umgebung, ein Server, Entwicklungswerkzeuge, etc.).

Der dnf grouplist Befehl listet alle verfügbaren Gruppen auf.

dnf grouplist
Last metadata expiration check: 1:52:00 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Available Environment Groups:
   Server with GUI
   Server
   Minimal Install
   KDE Plasma Workspaces
   Custom Operating System
Available Groups:
   Container Management
   .NET Core Development
   RPM Development Tools
   Development Tools
   Headless Management
   Legacy UNIX Compatibility
   Network Servers
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
   Fedora Packager
   Xfce

Mit dem dnf groupinstall Befehl können Sie eine dieser Gruppen installieren.

dnf groupinstall "Network Servers"
Last metadata expiration check: 2:33:26 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Dependencies resolved.
================================================================================
 Package           Architecture     Version             Repository         Size
================================================================================
Installing Groups:
 Network Servers

Transaction Summary
================================================================================

Is this ok [y/N]:

Beachten Sie, dass es eine gute Praxis ist, den Gruppennamen in doppelte Anführungszeichen einzufügen, da ohne sie, den Befehl nur korrekt ausgeführt wird, wenn der Gruppenname keine Leerzeichen enthält.

Also erzeugt ein dnf groupinstall Network Server den folgenden Fehler:

dnf groupinstall Network Servers
Last metadata expiration check: 3:05:45 ago on Wed 23 Mar 2022 02:11:43 PM CET.
Module or Group 'Network' is not available.
Module or Group 'Servers' is not available.
Error: Nothing to do.

Der Befehl zum Entfernen einer Gruppe ist dnf groupremove "name group".

Der dnf clean Befehl löscht alle Caches und temporären Dateien, die von dnf erstellt wurden. Er kann mit den folgenden Parametern verwendet werden.

Parameter Beschreibung
all Entfernt alle temporären Dateien, die für aktivierte Repositories erstellt wurden.
dbcache Entfernt Cache-Dateien für die Repository-Metadaten.
expire-cache Entfernen der lokalen Cookie-Dateien.
metadata Entfernt alle Repositories-Metadaten.
packages Entfernt alle zwischengespeicherten Pakete.

So funktioniert DNF

Der DNF-Manager setzt auf eine oder mehrere Konfigurationsdateien, um die Repositories mit den RPM-Paketen anzusprechen.

Diese Dateien befinden sich in /etc/yum.repos.d/ und müssen mit .repo enden, um von DNS ausgewertet zu werden.

Beispiel:

/etc/yum.repos.d/Rocky-BaseOS.repo

Jede .repo Datei besteht aus mindestens den folgenden Informationen, einer Direktive pro Zeile.

Beispiel:

[baseos] # Short name of the repository
name=Rocky Linux $releasever - BaseOS # Short name of the repository #Detailed name
mirrorlist=http://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever # http address of a list or mirror
#baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ # http address for direct access
gpgcheck=1 # Repository requiring a signature
enabled=1 # Activated =1, or not activated =0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial # GPG public key path

Standardmäßig ist die enabled Direktive nicht vorhanden, was bedeutet, dass das Repository aktiviert ist. Um ein Repository zu deaktivieren, müssen Sie die enabled=0 Direktive angeben.

DNF-Module

Module wurden in Rocky Linux 8 vom Upstream-System eingeführt. Um Module nutzen zu können, muss das AppStream-Repository existieren und aktiviert sein.

Package Confusion

Die Einführung von Modul-Streams im AppStream Repository verursachte viel Verwirrung. Da Module in einem Stream verpackt sind (siehe Beispiele unten), werden bestimmte Pakete in unseren RPMs auftauchen, aber wenn der Versuch gemacht wird, ein dieser Pakete ohne das Modul zu installieren, passiert nichts. Denken Sie daran, Module zu durchsuchen, wenn Sie versuchen, ein Paket zu installieren und es nicht gefunden wird.

Was sind Module?

Module stammen aus dem AppStream Repository und enthalten sowohl Streams als auch Profile. Diese lassen sich wie folgt beschreiben:

  • Modul-Streams: Ein Modul-Stream kann als separates Repository innerhalb des AppStream-Repository angesehen werden, das verschiedene Anwendungsversionen enthält. Diese Modul-Repositories enthalten die Anwendungs-RPMs, Abhängigkeiten und Dokumentation für diesen bestimmten Stream. Ein Beispiel für einen Modul-Stream in Rocky Linux 8 wäre postgresql. Wenn Sie postgresql mit dem Standard Befehl sudo dnf install postgresql, erhalten Sie die Version 10. Mit Hilfe von Modulen können Sie stattdessen die Versionen 9.6, 12 oder 13 installieren.

  • Modulprofile: Was ein Modulprofil tut, ist den Anwendungsfall für den Modul-Stream bei der Installation des Pakets zu berücksichtigen. Das Anwenden eines Profils passt die Paket-RPMs, die Abhängigkeiten und dieDokumentation an die Verwendung des Moduls an. Mit dem gleichen postgresql-Stream in unserem Beispiel können Sie ein Profil von "Server" oder "Client" anwenden. Offensichtlich benötigen Sie nicht die gleichen Pakete, wenn Sie einfach postgresql als Client verwenden, um auf einen Server zuzugreifen.

Übersicht der Module

Mit folgendem Befehl erhalten Sie eine Liste der verfügbaren Module:

dnf module list

Dadurch erhalten Sie eine lange Liste der Module und Profile, die Sie verwenden können. Wahrscheinlich wissen Sie schon, an welchem Paket Sie interessiert sind. Um herauszufinden, ob es Module für ein bestimmtes Paket gibt, fügen Sie bitte den Paketnamen nach "list" ein. Wir werden unser postgresql-Beispiel hier erneut verwenden:

dnf module list postgresql

Das Ergebnis sollte so aussehen:

Rocky Linux 8 - AppStream
Name                       Stream                 Profiles                           Summary                                            
postgresql                 9.6                    client, server [d]                 PostgreSQL server and client module                
postgresql                 10 [d]                 client, server [d]                 PostgreSQL server and client module                
postgresql                 12                     client, server [d]                 PostgreSQL server and client module                
postgresql                 13                     client, server [d]                 PostgreSQL server and client module

Beachten Sie bitte das "[d]". Hiermit ist die Standardeinstellung gekennzeichnet. Es zeigt an, dass die Standardversion 10 ist und dass unabhängig davon für welche Version Sie sich entscheiden, wenn Sie kein Profil angeben, wird das Profil des Servers verwendet, da es auch die Standardeinstellung ist.

Module aktivieren

Mit unserem Beispiel postgresql Paket wollen wir Version 12 aktivieren. Dazu verwenden Sie einfach Folgendes:

dnf module enable postgresql:12

Hier benötigt der Aktivierungsbefehl den Modulnamen gefolgt von einem ":" und dem Streamnamen.

Um zu überprüfen, ob das postgresql-Modul in der Stream-Version 12 aktiviert wurde, verwenden Sie erneut den Befehl „list“, der die folgende Ausgabe anzeigen sollte:

Rocky Linux 8 - AppStream
Name                       Stream                 Profiles                           Summary                                            
postgresql                 9.6                    client, server [d]                 PostgreSQL server and client module                
postgresql                 10 [d]                 client, server [d]                 PostgreSQL server and client module                
postgresql                 12 [e]                 client, server [d]                 PostgreSQL server and client module                
postgresql                 13                     client, server [d]                 PostgreSQL server and client module

Hier sehen Sie das „[e]“-Symbol für „aktiviert“ neben Stream 12. Wir wissen also, dass Version 12 aktiviert ist.

Installatin der Pakete aus dem Modul-Stream

Jetzt, da unser Modul-Stream aktiviert ist, ist der nächste Schritt die Installation von postgresql, die Client-Anwendung für den Postgresql-Server. Dies kann erreicht werden, indem der folgende Befehl ausgeführt wird:

dnf install postgresql

Folgenges sollte dann ausgegeben werden:

========================================================================================================================================
 Package                    Architecture           Version                                              Repository                 Size
========================================================================================================================================
Installing group/module packages:
 postgresql                 x86_64                 12.12-1.module+el8.6.0+1049+f8fc4c36                 appstream                 1.5 M
Installing dependencies:
 libpq                      x86_64                 13.5-1.el8                                           appstream                 197 k

Transaction Summary
========================================================================================================================================
Install  2 Packages
Total download size: 1.7 M
Installed size: 6.1 M
Is this ok [y/N]:

Mit der Eingabe von "y" wird die Anwendung installiert.

Pakete aus Modul-Stream-Profilen installieren

Sie können Pakete sogar direkt installieren, ohne das Modul-Streaming aktivieren zu müssen! In diesem Beispiel nehmen wir an, dass wir nur das Client-Profile aus Ihrer Installation anwenden. Um dies zu erreichen, verwenden wir folgendes Kommando:

dnf install postgresql:12/client

Die Ausgabe sollte wie folgt aussehen:

========================================================================================================================================
 Package                    Architecture           Version                                              Repository                 Size
========================================================================================================================================
Installing group/module packages:
 postgresql                 x86_64                 12.12-1.module+el8.6.0+1049+f8fc4c36                 appstream                 1.5 M
Installing dependencies:
 libpq                      x86_64                 13.5-1.el8                                           appstream                 197 k
Installing module profiles:
 postgresql/client
Enabling module streams:
 postgresql                                        12

Transaction Summary
========================================================================================================================================
Install  2 Packages

Total download size: 1.7 M
Installed size: 6.1 M
Is this ok [y/N]:

Durch die Angabe von "y" wird alles installiert, um postgresql Version 12 als Client zu verwenden.

Modul entfernen und zurücksetzen oder die Version umschalten

Nach der Installation könnten Sie aus irgendeinem Grund entscheiden, dass Sie eine andere Version des Streams benötigen. Der erste Schritt ist das Entfernen der Pakete. Wenn wir unser Beispiel postgresql Paket erneut verwenden, würden wir dies tun mit folgendem Kommando:

dnf remove postgresql

Dies zeigt eine ähnliche Ausgabe wie die obige Installationsprozedur, es entfernt jedoch das Paket und alle seine Abhängigkeiten. Antworten Sie "y" auf die Eingabeaufforderung und drücken Sie Enter um postgresql zu deinstallieren.

Sobald dieser Schritt abgeschlossen ist, können Sie den Zurücksetzen-Befehl für das Modul anwenden:

dnf module reset postgresql

Das Ergebnis sollte so aussehen:

Dependencies resolved.
========================================================================================================================================
 Package                         Architecture                   Version                           Repository                       Size
========================================================================================================================================
Disabling module profiles:
 postgresql/client                                                                                                                     
Resetting modules:
 postgresql                                                                                                                            

Transaction Summary
========================================================================================================================================

Is this ok [y/N]:

Das Beantworten mit "y" auf die Eingabeaufforderung wird postgresql zurücksetzen und den von uns aktivierten Stream (12 in unserem Beispiel) deaktivieren:

Rocky Linux 8 - AppStream
Name                       Stream                 Profiles                           Summary                                            
postgresql                 9.6                    client, server [d]                 PostgreSQL server and client module                
postgresql                 10 [d]                 client, server [d]                 PostgreSQL server and client module                
postgresql                 12                     client, server [d]                 PostgreSQL server and client module                
postgresql                 13                     client, server [d]                 PostgreSQL server and client module

Jetzt können Sie die Default-Einstellung verwenden.

Sie können auch die "switch-to"-Anweisung verwenden, um von einem aktivierten Stream auf einen anderen zu wechseln. Mit dieser Methode wechseln Sie nicht nur zum neuen Stream, sondern installieren auch die erforderlichen Pakete (sowohl für Downgrade als auch Upgrade) ohne einen separaten Schritt. Um diese Methode zu verwenden, um postgresql Stream Version 13 zu aktivieren und das "Client"-Profil zu verwenden, würden Sie folgendes verwenden:

dnf module switch-to postgresql:13/client

Modul-Stream deaktivieren

Es kann Fälle geben, in denen Sie die Möglichkeit deaktivieren möchten, Pakete von einem Modul-Stream zu installieren. Im Falle unseres postgresql-Beispiels könnte das daran liegen, dass Sie das Projektarchiv direkt von PostgreSQL verwenden wollen, so dass Sie eine neuere Version verwenden können (zum Zeitpunkt dieses Schreibens, Versionen 14 und 15 sind in diesem Repository verfügbar). Das Deaktivieren eines Modul-Streams macht die Installation eines dieser Pakete unmöglich, ohne sie vorher wieder zu aktivieren.

Um die Modul-Streams für postgresql zu deaktivieren, genügt es wie folgt vorzugehen:

dnf module disable postgresql

Und wenn Sie die postgresql Module erneut auflisten, sehen Sie folgendes, wobei alle postgresql Modul-Versionen deaktiviert sind:

Rocky Linux 8 - AppStream
Name                       Stream                   Profiles                          Summary                                           
postgresql                 9.6 [x]                  client, server [d]                PostgreSQL server and client module               
postgresql                 10 [d][x]                client, server [d]                PostgreSQL server and client module               
postgresql                 12 [x]                   client, server [d]                PostgreSQL server and client module               
postgresql                 13 [x]                   client, server [d]                PostgreSQL server and client module

Das EPEL-Repository

Was ist EPEL und wie wird das verwendet?

EPEL (Extra PPakete für Enterprise Linux) ist ein Open-Source und kostenloses Community-basiertes Repository, das von der EPEL Fedora Special Interest Group betreut wird, das eine Reihe zusätzlicher Pakete für RHEL (sowie CentOS, Rocky Linux und andere) aus den Fedora-Quellen anbietet.

Es enthält Pakete, die nicht in den offiziellen RHEL-Repositories enthalten sind. Diese werden nicht einbezogen, weil sie in einem Unternehmensumfeld nicht als notwendig erachtet werden oder nur außerhalb des RHEL-Bereichs als notwendig erachtet werden. Wir dürfen nicht vergessen, dass RHEL eine Unternehmens-Distribution ist und Desktop-Utilities oder andere spezialisierte Software können ggf. keine Priorität für ein Unternehmensprojekt sein.

Installation

Die Installation der notwendigen Dateien kann leicht mit dem Paket durchgeführt werden, das standardmäßig von Rocky Linux zur Verfügung gestellt wird.

Wenn Sie hinter einem Internet-Proxy stehen:

export http_proxy=http://172.16.1.10:8080

Dann:

dnf install epel-release

Nach der Installation, können Sie mit dem Befehl dnf info überprüfen, ob das Paket korrekt installiert wurde.

dnf info epel-release
Last metadata expiration check: 1:30:29 ago on Thu 24 Mar 2022 09:36:42 AM CET.
Installed Packages
Name         : epel-release
Version      : 8
Release      : 14.el8
Architecture : noarch
Size         : 32 k
Source       : epel-release-8-14.el8.src.rpm
Repository   : @System
From repo    : epel
Summary      : Extra Packages for Enterprise Linux repository configuration
URL          : http://download.fedoraproject.org/pub/epel
License      : GPLv2
Description  : This package contains the Extra Packages for Enterprise Linux
             : (EPEL) repository GPG key as well as configuration for yum.

Das Paket enthält keine ausführbaren Programme, Bibliotheken usw., aber nur die Konfigurationsdateien und GPG-Schlüssel zum Einrichten des Repository.

Eine weitere Möglichkeit, die Installation zu überprüfen, ist die Abfrage der rpm-Datenbank.

rpm -qa | grep epel
epel-release-8-14.el8.noarch

Nun müssen Sie ein Update ausführen um dnf das Projektarchiv erkennen zu lassen. Sie werden aufgefordert, die GPG-Schlüssel der Repositories zu akzeptieren. Natürlich müssen Sie "yes" antworten, um sie zu nutzen.

dnf update

Sobald die Aktualisierung abgeschlossen ist, können Sie überprüfen, ob das Projektarchiv korrekt mit dem dnf repolist Befehl konfiguriert wurde, der nun die neuen Repositories auflisten sollte.

dnf repolist
repo id            repo name
...
epel               Extra Packages for Enterprise Linux 8 - aarch64
epel-modular       Extra Packages for Enterprise Linux Modular 8 - aarch64
...

Die Konfigurationsdateien des Projektarchivs befinden sich in /etc/yum.repos.d/.

ll /etc/yum.repos.d/ | grep epel
-rw-r--r--. 1 root root 1485 Jan 31 17:19 epel-modular.repo
-rw-r--r--. 1 root root 1422 Jan 31 17:19 epel.repo
-rw-r--r--. 1 root root 1584 Jan 31 17:19 epel-testing-modular.repo
-rw-r--r--. 1 root root 1521 Jan 31 17:19 epel-testing.repo

Unten können wir den Inhalt der Datei epel.repo sehen.

[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place it's address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
gpgcheck=1

EPEL verwenden

An dieser Stelle sind wir bereit, die Pakete von EPEL zu installieren. Um zu starten, können wir die im Projektarchiv verfügbaren Pakete mit folgendem Befehl auflisten:

dnf --disablerepo="*" --enablerepo="epel" list available

Und ein Auszug des Kommandos

dnf --disablerepo="*" --enablerepo="epel" list available | less
Last metadata expiration check: 1:58:22 ago on Fri 25 Mar 2022 09:23:29 AM CET.
Available Packages
3proxy.aarch64                                                    0.8.13-1.el8                                    epel
AMF-devel.noarch                                                  1.4.23-2.el8                                    epel
AMF-samples.noarch                                                1.4.23-2.el8                                    epel
AusweisApp2.aarch64                                               1.22.3-1.el8                                    epel
AusweisApp2-data.noarch                                           1.22.3-1.el8                                    epel
AusweisApp2-doc.noarch                                            1.22.3-1.el8                                    epel
BackupPC.aarch64                                                  4.4.0-1.el8                                     epel
BackupPC-XS.aarch64                                               0.62-1.el8                                      epel
BibTool.aarch64                                                   2.68-1.el8                                      epel
CCfits.aarch64                                                    2.5-14.el8                                      epel
CCfits-devel.aarch64                                              2.5-14.el8                                      epel
...

Aus dem Befehl können wir sehen, dass wir dnf zwingen müssen, das angeforderte Projektarchiv mit den Optionen --disablerepo und --enablerepo abzufragen Dies liegt daran, dass sonst ein Match in anderen optionalen Repositories gefunden wird (RPM Fusion, REMI, ELRepo, etc.). neuer sein können und daher Priorität haben. Diese Optionen sind nicht erforderlich, wenn Sie EPEL nur als optionales Projektarchiv installiert haben, da die Pakete im Projektarchiv niemals im offiziellen Verzeichnis verfügbar sein werden. Zumindest in der gleichen Version!

Support-Überlegung

Ein Aspekt, der in Bezug auf die Unterstützung berücksichtigt werden muss (Updates, Bugfixes,...) ist, dass EPEL-Pakete keine offizielle Unterstützung von RHEL haben und technisch könnte ihr Leben den Zeitraum einer Entwicklung von Fedora (sechs Monate) überdauern und dann verschwinden. Dies ist eine entfernte Möglichkeit, aber eine Möglichkeit, die man in Betracht ziehen sollte.

Um also ein Paket aus den EPEL-Repositories zu installieren, können Sie wie folgt vorgehen:

dnf --disablerepo="*" --enablerepo="epel" install nmon
Last metadata expiration check: 2:01:36 ago on Fri 25 Mar 2022 04:28:04 PM CET.
Dependencies resolved.
==============================================================================================================================================================
 Package                            Architecture                          Version                                    Repository                          Size
==============================================================================================================================================================
Installing:
 nmon                               aarch64                               16m-1.el8                                  epel                                71 k

Transaction Summary
==============================================================================================================================================================
Install  1 Package

Total download size: 71 k
Installed size: 214 k
Is this ok [y/N]:

Conclusion

EPEL ist kein offizielles Repository für RHEL, aber es kann nützlich für Administratoren und Entwickler sein, die mit RHEL oder Derivaten arbeiten und einige Hilfsprogramme benötigen, die für RHEL aus einer vertrauenswürdigen Quelle erstellt wurden.

DNF-Plugins

Das dnf-plugins-core Paket fügt Plugins zu dnf hinzu, die für die Verwaltung Ihrer Repositories nützlich sind.

Hinweis

Mehr Informationen sind hier verfügbar: https://dnf-plugins-core.readthedocs.io/de/latest/index.html

Das Paket auf Ihrem System installieren:

dnf install dnf-plugins-core

Nicht alle Plugins werden hier vorgestellt, aber Sie können in der Paketdokumentation eine komplette Liste der Plugins und ausführliche Informationen finden.

config-manager Plugin

DNF-Optionen verwalten, Repos hinzufügen oder deaktivieren.

Beispiele:

  • .repo Datei herunterladen und verwenden:
dnf config-manager --add-repo https://packages.centreon.com/ui/native/rpm-standard/23.04/el8/centreon-23.04.repo
  • Sie können auch eine URL als Basis-URL für ein Repo festlegen:
dnf config-manager --add-repo https://repo.rocky.lan/repo
  • Aktivieren oder deaktivieren eines oder mehrerer Repos:
dnf config-manager --set-enabled epel centreon
dnf config-manager --set-disabled epel centreon
  • Fügen Sie einen Proxy zu Ihrer Konfigurationsdatei hinzu:
dnf config-manager --save --setopt=*.proxy=http://proxy.rocky.lan:3128/

Plugin copr

copr ist eine automatische Forge, die ein Repo mit gebauten Paketen liefert.

  • Copr Repo aktivieren:
copr enable xxxx

Plugin herunterladen

rpm-Paket herunterladen, anstatt es zu installieren:

dnf download ansible

Wenn Sie nur die URL des Remote-Standorts des Pakets erhalten möchten:

dnf download --url ansible

Oder wenn Sie auch die Abhängigkeiten herunterladen möchten:

dnf download --resolv --alldeps ansible

needs-restarting Plugin

Nach dem Ausführen eines dnf updatewerden die laufenden Prozesse weiterhin laufen, aber mit den alten Binärdateien. Um die Änderungen des Codes und insbesondere die Sicherheitsaktualisierungen zu berücksichtigen, müssen sie neu gestartet werden.

Das needs-restarting Plugin ermöglicht Ihnen Prozesse, die neu zu starten sind, zu erkennen.

dnf needs-restarting [-u] [-r] [-s]
Option Beschreibung
-u nur die Prozesse berücksichtigen, die zum laufenden Benutzer gehören.
-r um zu überprüfen, ob ein Neustart erforderlich sein könnte.
-s um zu überprüfen, ob Dienste neu gestartet werden müssen.
-s -r um beides in einem Lauf zu tun.

versionlock Plugin

Manchmal ist es nützlich, Pakete vor Aktualisierungen zu schützen oder bestimmte Versionen eines Pakets auszuschließen (zum Beispiel wegen bekannter Probleme). Zu diesem Zweck wird das versionlock-Plugin eine große Hilfe sein.

Dazu müssen Sie ein zusätzliches Paket installieren:

dnf install python3-dnf-plugin-versionlock

Beispiele:

  • Die ansible Version sperren:
dnf versionlock add ansible
Adding versionlock on: ansible-0:6.3.0-2.el9.*
  • Gesperrte Pakete auflisten:
dnf versionlock list
ansible-0:6.3.0-2.el9.*

Author: Antoine Le Morvan

Contributors: Franco Colussi, Steven Spencer, Ganna Zhyrnova