Blockieren von Kernel-Updates mit dpkg

16

Ich möchte alle von der Distribution gelieferten Kernel-Updates blockieren , da mir kürzlich etwas Schlimmes passiert ist. (Ich bin auf einem Ubuntu 12.04 amd64 Derivat.)

Ich möchte alle Updates zu installierten Kernel der kleineren Version 3.2 auf den Block linux-headers, linux-headers-generic, linux-image, und linux-image-extraPakete. Das Problem, auf das ich stoße, ist, dass diese alle eine Version haben und wenn ich eine bestimmte Version blockiere, wird nichts gewonnen, da eine neue Version installiert wird (z. B .: Wenn ich blockiere linux-image-3.2.0-35, linux-image-3.2.0-36wird nicht blockiert und könnte möglicherweise noch mit einem dist-upgradevon installiert werden apt.)

Naftuli Kay
quelle
Beachten Sie, dass dies in Ubuntu 16.04 nicht mehr funktioniert. Sie müssen Pakete mithilfe dieses Handbuchs auf die Blacklist setzen: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

Antworten:

17

Was Sie verwenden müssen, ist eine Funktion von apt-get, die als Halten bezeichnet wird

Sie können dies entweder über Synaptic oder Dpkg tun. So würde ich meinen Kernel mit der dpkg-Methode halten.

Überprüfen Sie zuerst den Namen Ihres Kernel-Images

dpkg -l | grep linux-image

Ausgabe für mich:

ii  linux-image-3.2.0-4-amd64              3.2.35-2                           amd64        Linux 3.2 for 64-bit PCs
ii  linux-image-amd64                      3.2+46                             amd64        Linux for 64-bit PCs (meta-package)

dann fordern Sie dpkg auf, das Metapaket zu speichern (die generische Version ohne Versionsnummern)

echo linux-image-amd64 hold | sudo dpkg --set-selections

Sie können dann überprüfen, ob dies funktioniert hat dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
hi  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Beachten Sie das "Hallo" am unteren Rand, "h" bedeutet "angehalten" und "i" bedeutet "derzeit installiert". Dieses Paket ist installiert, wird jedoch nicht aktualisiert.

Sie können dies über rückgängig machen

echo linux-image-amd64 install | sudo dpkg --set-selections

und nochmal über prüfen lassen dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
ii  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Beachten Sie 'ii', das erste i bedeutet, dass dieses Paket installiert werden soll, und das zweite i bedeutet, dass es derzeit installiert ist. Dieses Paket ist installiert und wird aufgerüstet werden.

Weitere Informationen zu diesen Flags finden Sie in man dpkgden Abschnitten "Paketauswahlstatus".

cjh
quelle
1
Meine Bildnamen sind hier . Möchte ich "linux-image-generic" verbieten?
Naftuli Kay
1
@TKKocheran ja; Sie möchten das Metapaket zurückhalten und nicht eine bestimmte Version.
cjh
Funktioniert nicht - dpkg: Warnung: Paket nicht im Status oder in der verfügbaren Datenbank in Zeile 1: linux-image-amd64 dpkg: Warnung: Unbekannte Pakete gefunden; Dies kann bedeuten, dass die verfügbare Datenbank veraltet ist und über eine Frontend-Methode aktualisiert werden muss. Bitte beachten Sie die FAQ < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M