Pakete unter Linux mit APT zurückhalten: So geht’s

Regelmäßige Updates sind essenziell, um Linux-Server sicher und performant zu halten. Doch nicht immer ist ein Upgrade sofort sinnvoll: Manche Anwendungen erfordern eine bestimmte Version oder ein Major-Upgrade ist noch nicht kompatibel. In solchen Fällen können Administratoren gezielt Pakete von Updates ausschließen. Dieser Artikel zeigt Schritt für Schritt, wie Sie mit apt-mark arbeiten, welche Alternativen es gibt und welche Vorsichtsmaßnahmen zu beachten sind.

Warum Pakete zurückhalten?

Beispiele für typische Szenarien:

  • Ein Major-Upgrade (z. B. von MySQL 5.7 auf 8.0) bringt inkompatible Änderungen.
  • Eine Drittanbieter-Software unterstützt nur eine bestimmte Version einer Bibliothek.
  • In einer Staging-Umgebung soll ein stabiler Versionsstand beibehalten werden.

Vor einem Hold sollten Sie unbedingt:

  • ein Backup wichtiger Daten und Konfigurationsdateien erstellen
  • in einer Testumgebung prüfen, ob ein Hold das Systemverhalten beeinflusst
  • dokumentieren, warum ein Paket zurückgehalten wurde

Schritt-für-Schritt-Anleitung mit apt-mark

1. Verfügbare Upgrades anzeigen

sudo apt list --upgradable

Dieser Befehl listet alle Pakete, für die Updates vorliegen. Beispiel:

mysql-client/focal-updates 8.0.35-0ubuntu0.20.04.1 amd64 [upgradable from: 5.7.42-0ubuntu0.20.04.1]

2. Paket zurückhalten

Mit apt-mark hold verhindern Sie, dass ein Paket bei Updates automatisch aktualisiert wird:

sudo apt-mark hold mysql-client mysql-server

Damit wird der Hold-Status gesetzt.

3. Gehaltene Pakete prüfen

sudo apt-mark showhold

Dieser Befehl zeigt alle aktuell zurückgehaltenen Pakete an.

4. Update-Simulation durchführen

Um zu verifizieren, dass die Pakete nicht mehr aktualisiert werden, können Sie ein Upgrade simulieren:

sudo apt-get -s dist-upgrade

Die Ausgabe enthält dann die Zeile:

The following packages have been kept back:
mysql-client mysql-server

Hinweis: „kept back“ kann auch ohne Hold auftreten, wenn Abhängigkeiten fehlen oder Konflikte bestehen. Mit apt-mark hold verhindern Sie jedoch explizit automatische Upgrades.

5. Hold wieder aufheben

Soll das Paket wieder automatisch aktualisiert werden, lösen Sie den Status mit:

sudo apt-mark unhold mysql-client mysql-server

Alternative: APT-Pinning

Für granularere Kontrolle können Sie APT-Pinning verwenden. Damit lassen sich bestimmte Versionen dauerhaft priorisieren. Beispiel für eine Regel in /etc/apt/preferences.d/mysql-pin:

Package: mysql-server
Pin: version 5.7.*
Pin-Priority: 1001

Mit einem hohen Pin-Priority bleibt APT auf der gewünschten Version, unabhängig von einem verfügbaren Major-Upgrade.

APT-Pinning ist sinnvoll, wenn:

  • Sie exakt eine bestimmte Version benötigen
  • mehrere Repositories mit unterschiedlichen Paketständen eingebunden sind
  • komplexe Abhängigkeiten verhindert werden sollen

Troubleshooting

  • Paket trotz Hold aktualisiert? → Prüfen Sie mit sudo apt-mark showhold, ob das Hold korrekt gesetzt wurde.
  • Paket wird als „kept back“ angezeigt, aber nicht geupdatet? → Ursache kann ein geändertes Abhängigkeitsmodell sein, nicht nur ein Hold. Prüfen Sie mit apt-get -s dist-upgrade.
  • Sicherheitspatches verpasst? → Halten Sie nur so lange wie nötig, da selbst sicherheitsrelevante Updates blockiert werden.

Haben Sie noch Fragen zu Linux Paketen oder anderen Linux Themen? Gerne unterstützen wir Sie mit unserem Know-How beim Aufbau und dem Betrieb Ihres eigenen Linux Servers. Sprechen Sie uns an!

Weitere Linux und Themen finden Sie hier.