Linux Anleitungen · 8 min read · Dec 20, 2025

So blockieren Sie Paket- und Kernel-Updates in Debian / Ubuntu

APT ist wahrscheinlich das nützlichste Tool für einen Linux-Benutzer. Sie können mit einem einzigen Befehl jede Software/Paket von Ihrem Linux-System 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 stellen Sie fest, dass die aktualisierte Version eines Pakets fehlerhaft ist. Sie möchten nicht, dass dieses Paket beim nächsten Ausführen von sudo apt upgrade aktualisiert wird. Und es ist mühsam, jedes Paket einzeln zu aktualisieren.

Dieses Tutorial behandelt, wie Sie bestimmte Pakete daran hindern können, installiert oder aktualisiert zu werden, und wie Sie spezifische Versionen von Paketen oder Kernen daran hindern können, installiert zu werden.

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 wachsam, da das Halten von Paketen über längere Zeit Sicherheitsprobleme einführen kann.

Wir werden hier zwei Methoden besprechen. Die erste Methode blockiert alle Installationen und Updates für ein bestimmtes Paket. Die zweite Methode bietet eine granularere Kontrolle, die es Ihnen ermöglicht, spezifische Versionen eines Pakets zu blockieren.

Voraussetzungen

  • Ein Server mit Ubuntu oder Debian OS. Für dieses Tutorial wurde Ubuntu 22.04 verwendet, aber die hier angegebenen Befehle sollten auch mit anderen Debian-basierten Betriebssystemen und älteren Versionen gut funktionieren.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.

Methode 1 (apt-mark)

Um ein Paket daran zu hindern, installiert, aktualisiert oder entfernt zu werden, können wir den Befehl apt-mark verwenden.

Wenn Sie beispielsweise das Paket htop daran hindern möchten, installiert, aktualisiert oder entfernt zu werden, verwenden Sie den folgenden Befehl.

$ sudo apt-mark hold htop

Sie sollten die folgende Ausgabe sehen.

htop set on hold.

Das gesperrte Paket bleibt auf der gleichen Version, selbst wenn Sie Ihr System aktualisieren. Dies ist besonders nützlich, um Grafikkartentreiber zurückzuhalten.

Um die Sperre für das Paket aufzuheben, geben Sie den folgenden Befehl ein.

$ sudo apt-mark unhold htop

Sie sollten die folgende Ausgabe sehen.

Canceled hold on htop.

Es gibt eine wichtige Einschränkung dabei. Während das Paket beim Verwenden des Befehls sudo apt upgrade oder beim Aktualisieren des Systems nicht automatisch aktualisiert wird, können Sie das Paket dennoch manuell entfernen. sudo apt remove funktioniert weiterhin bei gehaltenen Paketen.

Diese Methode sperrt sie nur gegen automatische Änderungen. Sie bleiben in ihrer aktuellen Version, egal was passiert, es sei denn, Sie entscheiden sich, sie manuell zu entfernen.

Methode 2 (/etc/apt/preferences)

Diese Methode beinhaltet das Bearbeiten der Datei /etc/apt/preferences, in der Sie genau angeben können, welche Version von welchem Paket aus welchem Repository installiert wird.

Jedes Paket erhält eine numerische Priorität, anhand derer APT entscheidet, ob das Paket installiert werden soll oder nicht, und wenn ja, aus welchem Repository es ausgewählt werden soll.

Zum Beispiel, lassen Sie uns einige Details über das Paket nginx überprüfen. Geben Sie den folgenden Befehl ein.

$ apt-cache policy nginx

Sie sollten eine ähnliche Ausgabe sehen.

nginx:
  Installed: (none)
  Candidate: 1.22.1-1~jammy
  Version table:
     1.22.1-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.22.0-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.20.2-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.18.0-6ubuntu14.3 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
     1.18.0-6ubuntu14 500
        500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

Sie werden sehen, dass es zwei Repositories gibt, aus denen nginx installiert wird. Das erste ist das Repository von Ubuntu und das zweite ist das Repository von nginx.

Sie können sehen, dass 500 gegen alle Repositories geschrieben ist. Diese Zahl gibt die Priorität des Pakets an. Da sie für alle Repositories gleich ist, sind die Chancen, dass nginx aus einem der Repositories kommt, gleich. Wie wird das System also entscheiden, welches Paket ausgewählt wird? Es wird die höchste Version auswählen, die verfügbar ist. In diesem Fall ist es 1.22.1. Für Ubuntu wird die vollständige Versionsnummer zu 1.22.1-1~jammy.

Wenn Sie nicht auf die Version 1.22.1 aktualisieren möchten und sie blockieren möchten, müssen Sie die Datei /etc/apt/preferences bearbeiten.

Öffnen Sie die Datei im Nano-Editor.

$ sudo nano /etc/apt/preferences

Dieser Befehl hilft Ihnen auch, die Datei zu erstellen, falls sie zuvor nicht im System vorhanden war.

Fügen Sie den folgenden Code in die Datei ein.

Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1

Das Setzen der Priorität auf einen Wert unter 0 bedeutet, dass das Paket nicht installiert wird. Wenn Sie möchten, dass ein Paket immer installiert wird, setzen Sie seine Priorität auf 1000 oder höher.

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen wir das Paket erneut.

$ apt-cache policy nginx

Sie werden die folgende Ausgabe sehen.

nginx:
  Installed: (none)
  Candidate: 1.22.0-1~jammy
  Version table:
     1.22.1-1~jammy -1
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.22.0-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.20.2-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.18.0-6ubuntu14.3 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
     1.18.0-6ubuntu14 500
        500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

Bemerkten Sie einen Unterschied? Die Kandidatenversionsnummer ist von 1.22.1 auf 1.22.0 gefallen. Das bedeutet, dass die nächste höhere Version, die das System jetzt installieren wird, 1.22.0 ist. Sie werden auch feststellen, dass -1 gegen die neueste Version geschrieben ist, was bedeutet, dass das System diese Version überspringen sollte.

Eine Version überspringen, aber die andere zulassen

Sie können mehrere Einträge für dasselbe Paket in die Datei hinzufügen. Fügen Sie beispielsweise den folgenden Code in die Datei ein.

Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1

Package: nginx
Pin: version 1.20.2-1~jammy
Pin-Priority: 1000

Hier sagen wir dem System, dass es die Version 1.22.1 überspringen, aber immer die Version 1.20.2 installieren soll.

Überprüfen wir erneut mit dem Befehl apt-cache policy.

nginx:
  Installed: (none)
  Candidate: 1.20.2-1~jammy
  Version table:
     1.22.1-1~jammy -1
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.22.0-1~jammy 500
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.20.2-1~jammy 1000
        500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
     1.18.0-6ubuntu14.3 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
     1.18.0-6ubuntu14 500
        500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages

Die Kandidatenversion hat sich jetzt auf 1.20.2 anstelle von 1.22.0 verschoben.

Ändern der Repository-Präferenz

Betrachten wir einen weiteren Fall. Was ist, wenn wir verhindern möchten, dass Nginx aus seinem Repository installiert wird und stattdessen das Ubuntu-Repository wählen? Eine Möglichkeit wäre, das Nginx-Repository zu entfernen, aber Sie können auch die Präferenzdatei verwenden, um das Repository für Sie auszuwählen.

Geben Sie den folgenden Code in die Datei ein.

Package: nginx
Pin: release o=nginx
Pin-Priority: -1

Das Schlüsselwort release gibt einfach die nächste höhere Version an. o=nginx bezieht sich auf den Ursprung des Pakets. Hier ist es nginx. Das bedeutet, dass das System das nginx-Paket nicht aus seinem Repository installieren sollte. Eine andere Möglichkeit, dasselbe Ergebnis zu erzielen, ist die Verwendung des folgenden Codes.

Package: nginx
Pin: release o=jammy
Pin-Priority: 1000

Diesmal haben wir die Priorität 1000 des Ubuntu- (jammy) Repository-Pakets festgelegt. Dies stellt sicher, dass Nginx immer aus dem Ubuntu-Repository und nicht von irgendwo anders installiert wird.

Sie können nicht nur den Ursprung des Pakets angeben, sondern auch das Archiv, die Komponente, das Label und die Architektur des Pakets, die das System auswählen soll, indem Sie die folgenden Schlüsselwörter im Abschnitt Pin verwenden.

  • c -> Komponente
  • a -> Archiv
  • o -> Ursprung
  • l -> Label
  • n -> Architektur

Blockieren spezifischer Kernel-Updates

Lassen Sie uns sehen, wie wir spezifische Kernel-Upgrades blockieren können. Listen Sie alle kernelbezogenen Pakete auf Ihrem System auf.

$ dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'

Sie werden eine ähnliche Ausgabe sehen.

linux-headers-5.15.0-33-generic
linux-image-5.15.0-33-generic
linux-modules-5.15.0-33-generic
linux-modules-extra-5.15.0-33-generic

Die folgenden Methoden müssen für alle hier erhaltenen Pakete wiederholt werden.

Methode 1 (apt-mark)

Zuerst überprüfen wir, welche Version des Kernels aktiv ist. Führen Sie dazu den folgenden Befehl aus.

$ uname -r

Sie sollten eine ähnliche Ausgabe sehen.

5.15.0-53-generic

Um zu verhindern, dass der Kernel weiter aktualisiert wird, können wir einfach den Befehl apt-mark verwenden.

$ sudo apt-mark hold linux-image-$(uname -r)

Sie sollten eine ähnliche Ausgabe sehen.

linux-image-5.15.0-53-generic set on hold.

Sie können die gleiche Methode verwenden, um Kernel-Header zu blockieren, indem Sie das Paket linux-headers-$(uname -r) blockieren.

Methode 2 (/etc/apt/apt.conf.d/50unattended-upgrades)

Die zweite Methode beinhaltet die Datei /etc/apt/apt.conf.d/50unattended-upgrades.

Öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

Scrollen Sie nach unten zum Abschnitt Unattended-Upgrade::Package-Blacklist und bearbeiten Sie ihn wie folgt.

Unattended-Upgrade::Package-Blacklist {
"linux-generic";
"linux-image-generic";
"linux-headers-generic";
"linux-modules-generic";
"linux-modules-extra-generic";
};

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Methode 3 (dpkg)

Um das Kernel-Upgrade mit dpkg zu halten, geben Sie den folgenden Befehl ein. Dieser Befehl hält alle kernelbezogenen Pakete gleichzeitig.

$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i hold | dpkg --set-selections; done

Um die Sperre aufzuheben, verwenden Sie den folgenden Befehl.

$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i install | dpkg --set-selections; done

Methode 4 (/etc/apt/preferences)

Lassen Sie uns zuerst die Details zur aktuellen Version des Kernels überprüfen.

$ apt-cache policy linux-image-$(uname -r)

Sie sollten die folgende Ausgabe sehen.

linux-image-5.15.0-53-generic:
  Installed: 5.15.0-53.59
  Candidate: 5.15.0-53.59
  Version table:
 *** 5.15.0-53.59 500
        500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
        500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
        100 /var/lib/dpkg/status

Obwohl der Kernel 5.15.0.53 zum Zeitpunkt des Schreibens dieses Tutorials auf der neuesten Version ist, nehmen wir an, dass die nächste Version bereits verfügbar ist (5.15.0.56 ist die aktuelle stabile Linux-Kernel-Version).

Um die nächste Version des Kernels zu blockieren, geben Sie den folgenden Code in die Datei /etc/apt/preferences ein.

Package: linux-image-5.15.0-53-generic linux-headers-5.15.0-33-generic linux-modules-5.15.0-33-generic linux-modules-extra-5.15.0-33-generic
Pin: version 5.15.0-53.59
Pin-Priority: -1

Der obige Code blockiert Ubuntu daran, irgendwelche oder alle Upgrades des Kernels zu installieren.

Sie können die Methoden 2 und 3 für jedes reguläre Paket anwenden, nicht nur für den Kernel.

Fazit

Das war’s für dieses Tutorial. Sie sollten jetzt in der Lage sein, beliebige oder spezifische Versionen von Paketen zu blockieren, die Sie nicht installiert oder aktualisiert haben möchten, auf Ihrem Ubuntu- oder Debian-System. Wenn Sie Fragen haben, posten Sie diese bitte in die Kommentare unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.