Blokowanie aktualizacji jądra za pomocą dpkg

16

Chciałbym zablokować wszystkie aktualizacje jądra dostarczane z dystrybucją z powodu paskudnej rzeczy, która ostatnio mi się przydarzyła. (Korzystam z pochodnej Ubuntu 12.04 amd64).

Chciałbym, aby zablokować wszystkie aktualizacje do zainstalowanych ziaren mniejszej wersji 3.2 do linux-headers, linux-headers-generic, linux-imagei linux-image-extrapaczek. Problem mam napotykając jest to, że wszystkie one mają wersję i jeśli mogę zablokować konkretną wersję, nic nie zyskał, bo zostanie zainstalowana nowa wersja (np: jeśli zablokować linux-image-3.2.0-35, linux-image-3.2.0-36nie jest zablokowany i nadal może potencjalnie być zainstalowany z dist-upgradeod apt.)

Naftuli Kay
źródło
Pamiętaj, że nie działa to już w Ubuntu 16.04. Musisz umieścić
user199618

Odpowiedzi:

17

To, czego potrzebujesz, to funkcja apt-get o nazwie holding

Możesz to zrobić przez Synaptic lub Dpkg. Oto jak trzymałbym moje jądro przy użyciu metody dpkg.

Najpierw sprawdź nazwę obrazu jądra

dpkg -l | grep linux-image

wyjście dla mnie:

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)

następnie powiedz dpkg, aby zatrzymał metapakiet (wersja ogólna bez numerów wersji)

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

Następnie możesz sprawdzić, czy zadziałało 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)

Zwróć uwagę na „cześć” na dole, h oznacza wstrzymany, a i oznacza aktualnie zainstalowany. Ten pakiet jest zainstalowany, ale nie zostanie zaktualizowany.

Możesz to odwrócić za pomocą

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

i ponownie można to sprawdzić za pośrednictwem 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)

Zauważ „ii”, pierwszy i oznacza, że ​​ten pakiet jest ustawiony do zainstalowania, a drugi i oznacza, że ​​jest obecnie zainstalowany. Ten pakiet jest zainstalowany i zostanie zaktualizowany.

Aby uzyskać więcej informacji na temat tych flag, zobacz man dpkgsekcje „Stany wyboru pakietów”.

cjh
źródło
1
Moje nazwy obrazków są tutaj . Czy chcę zakazać „linux-image-generic”?
Naftuli Kay
1
@TKKocheran tak; chcesz zawiesić metapakiet zamiast konkretnej wersji.
cjh
Nie działa - dpkg: ostrzeżenie: pakiet nie ma statusu ani dostępna baza danych w linii 1: linux-image-amd64 dpkg: ostrzeżenie: znaleziono nieznane pakiety; może to oznaczać, że dostępna baza danych jest nieaktualna i należy ją zaktualizować za pomocą interfejsu użytkownika; zobacz FAQ < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M