Tutoriel Linux

Ein Debian-Paket-Update blockieren und dann die Sperre aufheben

Débutant4 min de lecture

Manchmal müssen Sie eine bestimmte Version eines Debian-Pakets aufbewahren, nach einem Anwendungsereignis oder während der Überprüfung eines Updates auf einer Testmaschine. apt-mark hold blockiert automatische Änderungen an diesem Paket. Es blockiert auch dessen Löschung.

Verwenden Sie es für eine identifizierte Ausnahme, mit einem Grund und einem Überprüfungsdatum. Wenn ein Sicherheits-Paket über Monate blockiert bleibt, führt dies zu einem blinden Fleck bei den Updates.

Tux mit einem blockierten und dann reaktivierten Debian-Paket
Blockieren Sie eine Version, während Sie sie testen, und heben Sie den Halt auf, sobald der Patch genehmigt ist.

Das Paket und die installierte Version identifizieren

Beginnen Sie damit, den genauen Namen des Pakets zu überprüfen. Eine Suche in den Repositories sagt nicht immer aus, was tatsächlich auf dem Server installiert ist.

dpkg-query -W -f='${Package} ${Version}n' paketname
apt-cache policy paketname

Der erste Befehl zeigt die lokale Version an. Der zweite vergleicht diese Version mit den von APT bekannten Kandidaten. Wenn das Paket mit einem Dienst verbunden ist, notieren Sie auch das Symptom und die funktionierende Version, bevor Sie es blockieren.

Ein Halt ersetzt nicht das Verständnis einer Abhängigkeit. Wenn Sie openssl, linux-image oder eine Bibliothek blockieren, die von mehreren Anwendungen verwendet wird, betrachten Sie, was das nächste Update ändern wollte, bevor Sie das Paket einfrieren.

Das Update mit apt-mark hold blockieren

Der Befehl erfordert Administratorrechte. Ersetzen Sie paketname durch den an der vorherigen Stelle notierten Namen.

sudo apt-mark hold paketname
sudo apt-mark showhold

showhold sollte das Paket anzeigen. APT respektiert dann dieses Markierungszeichen bei den üblichen Update-Vorgängen. Sie können jedoch überprüfen, was es tun würde, bevor Sie ein Upgrade akzeptieren:

sudo apt update
apt list --upgradable
sudo apt-get -s upgrade

Die Option -s simuliert den Vorgang. Sie lädt oder installiert kein Paket. Überprüfen Sie, dass das blockierte Paket auf der erwarteten Version bleibt und dass die Abhängigkeiten APT nicht in eine inkonsistente Situation drängen.

Halt und manuell installiertes Paket nicht verwechseln

apt-mark manual verhindert hauptsächlich die automatische Löschung einer Abhängigkeit. Es blockiert jedoch nicht deren Update. Im Gegensatz dazu ändert apt-mark hold die dpkg-Auswahl des Pakets, um dessen Installation, Upgrade oder automatische Löschung zu verhindern.

Sie können diese Auswahl mit dpkg überprüfen:

dpkg --get-selections paketname
dpkg --get-selections | grep ' hold$'

Diese Unterscheidung vermeidet ein falsches Sicherheitsgefühl. Ein markiertes manuelles Paket kann sehr wohl bei apt upgrade auf eine neue Version wechseln.

Den Halt nach dem Test aufheben

Wenn der Patch auf einer Testmaschine genehmigt ist, heben Sie die Sperre auf und überprüfen Sie erneut die Liste. Starten Sie kein globales Upgrade nur, um ein einzelnes Paket zu entsperren.

sudo apt-mark unhold paketname
sudo apt-mark showhold
sudo apt install paketname

Der letzte Befehl zielt nur auf das betroffene Paket ab. Lesen Sie die zusätzlich von APT vorgeschlagenen Pakete, bevor Sie bestätigen. Starten Sie für ein sensibles Paket anschließend den betreffenden Dienst neu und überprüfen Sie dessen Protokolle. Die Man-Seite apt-mark von Debian erläutert auch die Auswahlmöglichkeiten halt, install, remove und purge.

Wenn das Halt nach einer fehlerhaften Aktualisierung gesetzt wurde, halten Sie in Ihrem Ticket oder Ihrer Dokumentation fest: das Paket, die eingefrorene Version, der Grund, das Testdatum und die Bedingung, die das Entsperren erlaubt. Diese Aufzeichnung verhindert, dass ein anderer Administrator den Halt entfernt, ohne zu wissen, warum er gesetzt wurde.

Wann sollte ein Paket von der Liste entfernt werden?

Überprüfen Sie die Haltungen in jedem Wartungszyklus. Eine temporäre Blockade kann problematisch werden, wenn ein Update eine Schwachstelle oder eine Abhängigkeitinkompatibilität behebt. Überprüfen Sie die Debian-Ankündigungen oder den Softwarehersteller, testen Sie die neue Version außerhalb der Produktion und verwenden Sie apt-mark unhold, sobald das ursprüngliche Problem behoben ist.

Um ein lokales .deb-Paket zu installieren und die Abhängigkeiten ordnungsgemäß zu reparieren, lesen Sie auch unseren Leitfaden zu dpkg und APT. Wenn Sie Sicherheitspatches automatisieren, erklärt der Artikel über unattended-upgrades auf Debian die Kontrollen, die Sie durchführen sollten, bevor Sie die Aufgabe automatisch ausführen lassen.