Linux Updates · 8 min read · Dec 01, 2025
So blockieren Sie Paket- und Kernel-Updates in CentOS / Rocky Linux

Der Paketmanager ist wahrscheinlich das hilfreichste Werkzeug für einen Linux-Benutzer. Sie können jede Software/Paket von Ihrem Linux-System mit einem einzigen Befehl installieren, aktualisieren und entfernen. Aber manchmal benötigen Sie eine granulare Kontrolle darüber, welches Paket Sie installieren oder aktualisieren möchten und welches Paket automatisch vom Upgrade ausgeschlossen werden soll. Warum möchten Sie das tun? Manchmal stellt man fest, dass die aktualisierte Version eines Pakets fehlerhaft ist. Sie möchten nicht, dass dieses Paket beim nächsten Ausführen von sudo yum upgrade aktualisiert wird. Und es ist mühsam, jedes Paket einzeln zu aktualisieren.
In diesem Tutorial werden wir behandeln, wie man bestimmte Pakete von der Installation oder dem Upgrade ausschließt und wie man spezifische Versionen von Paketen oder Kernen von der Installation ausschließt.
Hinweis: Es ist leicht zu vergessen, welche Pakete Sie nach einiger Zeit gehalten haben, selbst wenn ihre fehlerfreien Versionen verfügbar sind. Seien Sie also vorsichtig, da das Halten von Paketen über längere Zeit Sicherheitsprobleme einführen kann.
Wir werden hier fünf Methoden besprechen. Alle diese Methoden beinhalten den yum ( Yellow dog Updater, Modified) und den dnf ( Dandified YUM) Paketmanager.
Voraussetzungen
- Ein Server mit CentOS oder Rocky Linux oder Alma Linux. Rocky Linux 9 wurde für dieses Tutorial verwendet, aber die Befehle hier sollten auch mit den anderen Betriebssystemen und älteren Versionen gut funktionieren.
- Ein Nicht-Root-Benutzer mit Sudo-Rechten.
Methode 1 - Paketinstallationen/Updates dauerhaft deaktivieren (Verwendung von yum.conf)
Um ein Paket dauerhaft von der Installation, Aktualisierung oder Entfernung auszuschließen, können wir die Datei /etc/yum.conf oder /etc/dnf/dnf.conf verwenden.
Sie sollte wie folgt aussehen.
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
Wenn Sie ein Paket, zum Beispiel nginx, daran hindern möchten, installiert, aktualisiert oder entfernt zu werden, fügen Sie die folgende Zeile am Ende der Datei hinzu.
exclude=nginx
Wenn Sie alle nginx-Pakete ausschließen möchten, können Sie das *-Zeichen verwenden.
exclude=nginx*
Wenn Sie mehr als ein Paket ausschließen möchten, können Sie deren Namen durch ein Leerzeichen trennen.
exclude=nginx php
Das gesperrte Paket bleibt auf derselben Version, selbst wenn Sie Ihr System aktualisieren. Dies ist besonders nützlich, um Grafikkartentreiber zurückzuhalten.
Lassen Sie uns versuchen, das blockierte Paket nginx zu installieren.
$ sudo dnf install nginx
oder
$ sudo yum install nginx
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:00:21 am Mo 05 Dez 2022 10:42:01 AM UTC.
Alle Übereinstimmungen wurden durch Ausschlussfilterung für das Argument: nginx herausgefiltert
Fehler: Keine Übereinstimmung gefunden: nginx
Sie können auch Pakete hier über ihre Architektur blockieren. Wenn Sie beispielsweise 32-Bit-Pakete blockieren möchten, können Sie die folgende Zeile in die Datei /etc/yum.conf eingeben.
exclude=*.i?86 *i686
Es gibt eine wichtige Einschränkung bei dieser Methode. Während das Paket beim Verwenden des Befehls sudo yum upgrade oder beim Aktualisieren des Systems nicht automatisch aktualisiert wird, können Sie das Paket dennoch manuell entfernen. sudo yum remove funktioniert weiterhin bei gehaltenen Paketen.
Diese Methode sperrt sie nur daran, automatisch geändert zu werden. Sie bleiben in ihrer aktuellen Version, egal was passiert, es sei denn, Sie entscheiden sich, sie manuell zu entfernen.
Kernel-Updates blockieren
Um das Kernel-Update zu blockieren, verwenden Sie den folgenden Befehl.
$ sudo dmf --exclude=kernel* update
oder
$ sudo yum --exclude=kernel* update
Sie können kernel* als Paketnamen in allen anderen Methoden verwenden, um Kernel-Updates zu blockieren.
Methode 2 - Paketinstallationen/Updates vorübergehend deaktivieren
Diese Methode beinhaltet die Verwendung des yum-Befehls mit einem zusätzlichen Parameter.
Zum Zeitpunkt der Aktualisierung eines Pakets verwenden Sie den -x-Schalter mit Ihrem Befehl, um spezifische Pakete zu blockieren, die Sie nicht aktualisieren möchten.
$ sudo dnf -x nginx update
oder
$ sudo yum -x nginx update
Der obige Befehl aktualisiert alle Pakete außer dem nginx-Paket auf Ihrem System. Um mehrere Pakete mit einem einzigen Befehl zu blockieren, verwenden Sie den -x-Schalter mehrmals.
$ sudo dnf -x nginx -x php update
oder
$ sudo yum -x nginx -x php update
Sie können auch den –exclude-Schalter anstelle von -x auf die gleiche Weise verwenden.
$ sudo dnf --exclude nginx, php
oder
$ sudo yum --exclude nginx, php
Methode 3 - Verwendung des Repositorys (Verwendung von .repo-Dateien)
Wenn Sie ein Paket über sein Repository installiert haben, gibt es eine andere Möglichkeit, es von der Aktualisierung auszuschließen. Dies geschieht durch Bearbeiten seiner .repo-Datei, die Sie im Verzeichnis /etc/yum.repos.d finden können.
Angenommen, Ihr System hat das Epel-Repository hinzugefügt und Sie möchten das golang-Paket nicht von dort installieren, können Sie es blockieren, indem Sie die Zeile exclude=certbot in die Datei /etc/yum.repos.d/epel.repo hinzufügen, wie gezeigt.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# Es ist viel sicherer, das Metalink zu verwenden, aber wenn Sie einen lokalen Mirror verwenden möchten
# geben Sie hier seine Adresse ein.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
exclude=certbot
...
Versuchen Sie nun, das certbot-Paket zu installieren, das über das Epel-Repository verfügbar ist.
$ sudo dnf install certbot
oder
$ sudo yum install certbot
Sie erhalten eine ähnliche Ausgabe.
Extra Packages for Enterprise Linux 8 - x86_64 20 kB/s | 4.5 kB 00:00
Alle Übereinstimmungen wurden durch Ausschlussfilterung für das Argument: certbot herausgefiltert
Fehler: Keine Übereinstimmung gefunden: certbot
Methode 4 - Blockieren eines gesamten Repositorys von Updates
Alternativ können Sie ein ganzes Repository von der Aktualisierung ausschließen.
Zuerst überprüfen wir alle Repositories auf unserem System.
$ dnf repolist
oder
$ yum repolist
Sie erhalten eine ähnliche Ausgabe.
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
digitalocean-agent DigitalOcean Agent
docker-ce-stable Docker CE Stable - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
extras Rocky Linux 8 - Extras
nginx-stable nginx stable repo
Um das Epel-Repository von der Aktualisierung auszuschließen, verwenden Sie den folgenden Befehl.
$ sudo dnf update --disablerepo=epel
oder
$ sudo yum update --disablerepo=epel
Sie können mehrere Repositories deaktivieren, indem Sie deren IDs durch Kommas trennen.
$ sudo dnf update --disablerepo=epel, extras
oder
$ sudo yum update --disablerepo=epel, extras
Blockieren von Repositories über ihre Repo-Datei
Es gibt eine weitere Möglichkeit, ein Repository zu blockieren, die das Bearbeiten der entsprechenden Repo-Datei beinhaltet.
Lassen Sie uns die Datei epel.repo zum Bearbeiten öffnen.
$ sudo nano /etc/yum.repos.d/epel.repo
Ändern Sie den Wert der Variablen enabled von 1 auf 0.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# Es ist viel sicherer, das Metalink zu verwenden, aber wenn Sie einen lokalen Mirror verwenden möchten
# geben Sie hier seine Adresse ein.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
...
Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.
Versuchen wir nun, das certbot-Paket zu installieren, das im epel-Repository verfügbar ist.
$ sudo dnf install certbot
oder
$ sudo yum install certbot
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:02:10 am Mo 05 Dez 2022 10:48:31 AM UTC.
Keine Übereinstimmung für das Argument: certbot
Fehler: Keine Übereinstimmung gefunden: certbot
Methode 5 - Blockieren von Paketen auf einer bestimmten Version (Verwendung des versionlock-Plugins)
Versionlock ist ein Plugin für den Yum-Paketmanager. Dieses Plugin erlaubt es nicht, dass Pakete auf eine Version aktualisiert werden, die größer ist als die, die zum Zeitpunkt der Sperrung installiert war.
Zuerst installieren Sie versionlock.
$ sudo dnf install dnf-plugin-versionlock
oder
$ sudo yum install dnf-plugin-versionlock
Dies erstellt auch eine Datei /etc/yum/pluginconf.d/versionlock.list auf Ihrem System.
Um die aktuelle Version von mariadb-server, die auf Ihrem System installiert ist, zu sperren, führen Sie den folgenden Befehl aus.
$ sudo dnf versionlock mariadb-server
oder
$ sudo yum versionlock mariadb-server
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:01:05 am Mo 05 Dez 2022 12:14:16 PM UTC.
Versionlock hinzufügen auf: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Sie können mehrere Pakete auf einmal hinzufügen.
$ sudo dnf versionlock evolution golang
oder
$ sudo yum versionlock evolution golang
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:01:05 am Mo 05 Dez 2022 12:14:16 PM UTC.
Versionlock hinzufügen auf: evolution-0:3.28.5-18.el8.*
Versionlock hinzufügen auf: golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Lassen Sie uns versuchen, das mariadb-server-Paket zu aktualisieren.
$ sudo dnf update mariadb-server
oder
$ sudo yum update mariadb-server
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:02:07 am Mo 05 Dez 2022 12:14:16 PM UTC.
Paket mariadb-server verfügbar, aber nicht installiert.
Keine Übereinstimmung für das Argument: mariadb-server
Fehler: Keine Pakete zur Aktualisierung markiert.
Um die Liste der blockierten Pakete über das versionlock-Plugin anzuzeigen, verwenden Sie den folgenden Befehl.
$ dnf versionlock list
oder
$ yum versionlock list
Sie erhalten eine ähnliche Ausgabe.
Letzte Metadaten-Ablaufprüfung: vor 0:00:05 am Mi 07 Dez 2022 02:36:20 AM UTC.
elasticsearch-7.17.5-1.x86_64
mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
evolution-0:3.28.5-18.el8.*
golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Um das Paket aus der Versionlock zu entfernen, verwenden Sie den folgenden Befehl.
$ sudo dnf versionlock delete mariadb-server
oder
$ sudo yum versionlock delete mariadb-server
Sie erhalten die folgende Ausgabe.
Löschen der Versionlock für: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Um die Liste zu verwerfen und die Sperren zu löschen, verwenden Sie den folgenden Befehl.
$ sudo dnf versionlock clear
oder
$ sudo yum versionlock clear
Alternativ können Sie die Datei /etc/yum/pluginconf.d/versionlock.list bearbeiten, um Pakete mit dem versionlock-Plugin zu blockieren.
Um ein installiertes Paket zur Datei hinzuzufügen, verwenden Sie den folgenden Befehl.
$ sudo sh -c 'rpm -qa | grep evolution >> /etc/yum/pluginconf.d/versionlock.list'
Der obige Befehl blockiert das evolution-Paket, indem es zur Liste hinzugefügt wird. Wir haben rpm -qa | grep evolution verwendet, um den vollständigen Paketnamen zu erfassen. Und der
sudo sh -c-Befehl führt eine sudo-Shell aus, unter der die Befehle zum Schreiben in die Datei ausgeführt werden.
Fazit
Das war’s für dieses Tutorial. Sie sollten jetzt in der Lage sein, spezifische Versionen von Paketen zu blockieren, die Sie nicht auf Ihrem CentOS- oder Rocky-Linux-System installieren oder aktualisieren möchten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.