¿Cómo omitir la actualización del kernel?

25

Estoy ejecutando Ubuntu 12.04.1 LTS i686 en VirtulBox. Cada vez que reviso las actualizaciones, hay un nuevo kernel de Linux. Si instalo el nuevo kernel, tengo que instalar Virtulbox Guest Additions nuevamente y reiniciar el servidor. No quiero hacer esto todas las semanas. Sé que puedo desmarcar manualmente los paquetes del núcleo desde el administrador de actualizaciones, pero ¿hay alguna forma de omitir la actualización del núcleo automáticamente? Encontré una respuesta aquí, pero es para Ubuntu 10. Gracias.

garconcn
fuente

Respuestas:

18

APT (Advanced Packaging Tool) es el sistema que Ubuntu usa para administrar todo el software instalado en un sistema. Le permite "anclar" un paquete a una versión determinada, para que no se actualice cuando se ejecuta el Administrador de actualizaciones.

Para anclar los paquetes de su núcleo, primero debe determinar qué versión es su núcleo. Una forma de hacerlo es abrir el Administrador de paquetes Synaptic en Sistema> Administración.

ingrese la descripción de la imagen aquí

Escriba "linux-generic" en el campo de texto Búsqueda rápida y presione enter.

ingrese la descripción de la imagen aquí

Tome nota del número que figura en la columna "Versión instalada". Lo usaremos en el siguiente paso.

A continuación, necesitamos editar el archivo / etc / apt / preferencias. Ábralo presionando Alt + F2 para abrir la ventana Ejecutar aplicación e ingrese:

gksudo gedit /etc/apt/preferences

ingrese la descripción de la imagen aquí

Esto abrirá una ventana gedit. Lo más probable es que la ventana esté en blanco, a menos que haya jugado antes con APT.

En la ventana, escriba lo siguiente, reemplazando el número de versión con el número de versión que encontró en Synaptic Package Manager.

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

ingrese la descripción de la imagen aquí

Guarde el archivo y cierre gedit. Si abre el Administrador de actualizaciones, debería ver que las actualizaciones del kernel de Linux ahora están ocultas.

ingrese la descripción de la imagen aquí

Fuente

Bloqueo de paquetes con APT / DPKG

Recuerde el nombre del paquete de su núcleo de arriba.

Abra una terminal y ejecute:

sudo -s

Y golpear enter.

Ingrese su contraseña para sudo:

echo kernel_package_name hold | dpkg --set-selections

Reemplace kernel_package_namecon el nombre del núcleo que desea anclar.

Ahora ejecuta:

sudo apt-get update && sudo apt-get upgrade

Para eliminar el pin de Apt / Dpkg:

Abrir una terminal

sudo -s
echo kernel_package install | dpkg --set-selections

Reemplace kernel_package con el paquete que desea anclar.

Ahora ejecuta:

sudo apt-get update &&  sudo apt-get upgrade

Fuente

Lo que intentas hacer se llama fijación. Las fuentes que le proporcioné anteriormente tienen lo esencial sobre lo que debe hacer para cumplir con sus tareas.

LnxSlck
fuente
1
Gracias por su respuesta. Parece que estamos usando una versión diferente. No tengo Synaptic Package Manager y / etc / apt / preferencias en mi Ubuntu 12.04.
garconcn
2
Sí, Synaptic ya no está instalado por defecto.
ish
1
@garconcn, puede instalar Synaptic e instalar la solución que le dije, o leer la pregunta nuevamente, ya que he puesto más información al respecto
LnxSlck
2
@LnxSlck, instalé Synaptic y seguí tus instrucciones. Funciona. Gracias.
garconcn
16

En una línea es:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

Esto establecerá el estado de la imagen del núcleo desde la instalación hasta la retención y, por lo tanto, evitará actualizaciones.

Christoph
fuente
8

El one-liner de Christoph no tiene en cuenta el paquete adicional (por ejemplo, linux-image-extra-3.13.0-45-generic). Más bien use este:

para i en $ (dpkg -l "* $ (uname -r) *" | grep image | awk '{print $ 2}'); do echo $ que tengo | dpkg --set-selections; hecho
Superlexx
fuente
4

En relación con la sugerencia de superlexx: esa línea perderá el paquete de "encabezados":

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

Entonces, ¿qué tal simplemente usando lo siguiente:

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic
nuboso
fuente
1
Si los paquetes extras / encabezados / etc. no están marcados, ¿hay problemas? ¿O sugieres marcarlos también para completarlos? Esperaría que Ubuntu no intentara instalar un paquete de encabezados actualizado, hasta que se instalara la imagen de Linux (los encabezados son una dependencia de la imagen). Todavía tengo que verificar esto.
whitehat101
2
Ustedes podrían colaborar en una sola línea en lugar de apilar 3 respuestas una sobre otra. = P Just sayin
cubuspl42
1
No es necesario invocar grep si ya está usando awk:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López
1

Esto purga los paquetes de meta kernel que permiten actualizaciones de kernel:

sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(Si acaba de actualizar el kernel, primero debe reiniciar con el nuevo kernel, o buscar la última versión del kernel y usarlo en la parte superior en lugar de "$ (uname -r)").

Sin embargo, se recomienda instalar actualizaciones de núcleos, ya que son principalmente actualizaciones de seguridad.

jarno
fuente
0

En Ubuntu 16.04.1, el siguiente código funciona

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done

es una mejora del código de Superlexx, sudose agrega

dpkg -l | grep linux-image

Usted encontrará:

hola linux-image-4.4.0-34-generic ...

hola linux-image-extra-4.4.0-34-generic ...

tenga en cuenta que la etiqueta ahora lee hi, noii

quitar el pin

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done
Chen Deng-Ta
fuente
Respuesta agradable, pero se pone sudoen el comentario no el comando ...
WinEunuuchs2Unix
0

Versión más corta: (Reemplace "mantener" con "instalar" para quitar el pin)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections

Para ver el estado de todas las imágenes y encabezados del núcleo, ejecute:

 dpkg --get-selections | grep "linux-"
Per Mejdal Rasmussen
fuente