Bloqueo de actualizaciones del kernel con dpkg

16

Me gustaría bloquear todas las actualizaciones de kernel enviadas por distribución debido a algo desagradable que me sucedió recientemente. (Estoy en un Ubuntu 12.04 amd64 derivado).

Me gustaría para bloquear todas las actualizaciones de kernels instalados de la versión menor a los 3,2 linux-headers, linux-headers-generic, linux-image, y linux-image-extrapaquetes. El problema que estoy encontrando es que todos estos tienen una versión y si puedo bloquear una versión específica, no se gana nada, porque se va a instalar una nueva versión (por ejemplo: Si bloqueo linux-image-3.2.0-35, linux-image-3.2.0-36no está bloqueado y todavía podrían ser instalados con una dist-upgradede apt.)

Naftuli Kay
fuente
Tenga en cuenta que esto ya no funciona en Ubuntu 16.04. Debe
incluir

Respuestas:

17

Lo que necesita usar es una característica de apt-get llamada holding

Puedes hacer esto a través de Synaptic o Dpkg. Así es como mantendría mi kernel usando el método dpkg.

Primero verifique el nombre de la imagen de su núcleo

dpkg -l | grep linux-image

salida para mí:

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)

luego dígale a dpkg que contenga el metapaquete (la versión genérica sin ningún número de versión)

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

Luego puede verificar esto funcionó a través de 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)

Observe el 'hola' en la parte inferior, h significa retenido e i significa actualmente instalado. Este paquete está instalado pero no se actualizará.

Puedes revertir esto a través de

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

y nuevamente puede verificar a través de 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)

Observe 'ii', el primer i significa que este paquete está configurado para instalarse y el segundo i significa que está instalado actualmente. Este paquete está instalado y se actualizará.

Para obtener más información sobre estos indicadores, consulte man dpkgespecíficamente las secciones 'estados de selección de paquetes'.

cjh
fuente
1
Mis nombres de imágenes están aquí . ¿Quiero prohibir "linux-image-generic"?
Naftuli Kay
1
@TKKocheran sí; desea retener el metapaquete, en lugar de una versión específica.
cjh 01 de
No funciona - dpkg: advertencia: el paquete no está en estado ni la base de datos disponible en la línea 1: linux-image-amd64 dpkg: advertencia: se encontraron paquetes desconocidos; esto puede significar que la base de datos disponible está desactualizada y necesita actualizarse mediante un método frontend; consulte las preguntas frecuentes < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M