Como pular a atualização do kernel?

25

Estou executando o Ubuntu 12.04.1 LTS i686 no VirtulBox. Toda vez que eu verifico as atualizações, há um novo kernel do Linux. Se eu instalar o novo kernel, eu tenho que instalar o Virtulbox Guest Additions novamente e reiniciar o servidor. Eu não quero fazer isso toda semana. Eu sei que posso manualmente desmarcar os pacotes do kernel do gerenciador de atualização, mas existe uma maneira de pular a atualização do kernel automaticamente? Eu encontrei uma resposta aqui, mas é para o Ubuntu 10. Obrigado.

    
por garconcn 21.08.2012 / 01:49

7 respostas

18

O APT (Advanced Packaging Tool) é o sistema que o Ubuntu usa para gerenciar todo o software instalado em um sistema. Ele permite que você "fixe" um pacote a uma determinada versão, para que ele não seja atualizado quando o gerenciador de atualizações for executado.

Para fixar seus pacotes de kernel, primeiro você deve determinar qual versão seu kernel é. Uma maneira de fazer isso é abrir o Gerenciador de Pacotes Synaptic no System > Administração.

Digite"linux-generic" no campo de texto Pesquisa rápida e pressione Enter.

Anoteonúmerolistadonacoluna"Versão instalada". Vamos usá-lo na próxima etapa.

Em seguida, precisamos editar o arquivo / etc / apt / preferences. Abra-o pressionando Alt + F2 para abrir a janela Executar aplicativo e entrar:

gksudo gedit /etc/apt/preferences

Issoabriráumajaneladogedit.Omaisprováveléqueajanelafiqueembranco,amenosquevocêtenhabrincadocomoAPTantes.

Najanela,digiteoseguinte,substituindoonúmerodaversãopelonúmerodaversãoquevocêencontrounoGerenciadordePacotesSynaptic.

Package:linux-genericlinux-headers-genericlinux-image-genericlinux-restricted-modules-genericPin:version<insertversionhere>Pin-Priority:1001

Salve o arquivo e feche o gedit. Se você abrir o Update Manager, verá que as atualizações do kernel do Linux agora estão ocultas!

Fonte

Bloqueio de pacotes com o APT / DPKG

Lembre-se do nome do pacote do seu kernel acima.

Abra um terminal e execute:

sudo -s

E pressione entre .

Digite sua senha para o sudo:

echo kernel_package_name hold | dpkg --set-selections

Substitua kernel_package_name pelo nome do kernel que você deseja fixar.

Agora execute:

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

Para remover o pino do Apt / Dpkg:

Abra um terminal

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

Substitua o kernel_package pelo pacote que você deseja fixar.

Agora execute:

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

Fonte

O que você está tentando fazer é chamado de pinagem. As fontes que lhe dei acima, têm o essencial sobre o que você deve fazer para cumprir suas tarefas.

    
por LnxSlck 21.08.2012 / 02:06
16

Em uma linha, é:

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

Isto irá definir o estado da imagem do kernel de install para hold e assim evitará atualizações.

    
por Christoph 26.09.2013 / 10:59
8

O one-liner de Christoph não leva em conta o pacote extra (por exemplo, linux-image-extra-3.13.0-45-generic). Em vez disso, use este:

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | dpkg --set-selections; done
    
por Superlexx 01.03.2015 / 13:56
4

Em relação à sugestão do superlexx: essa linha perderá o pacote "headers":

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

Então, que tal simplesmente usar o seguinte:

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
    
por cloudeliver 11.04.2015 / 01:50
1

Isso elimina os pacotes do meta-kernel que ativam as atualizações do kernel:

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

(Se você acabou de atualizar o kernel, você tem que reiniciar primeiro com o novo kernel, ou encontrar o lançamento do kernel mais recente e usá-lo acima em vez de "$ (uname -r)".)

Recomenda-se instalar as atualizações dos kernels, uma vez que elas são principalmente atualizações de segurança.

    
por jarno 19.05.2016 / 15:21
0

No Ubuntu 16.04.1, o código a seguir funciona

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

o é uma melhoria do código do Superlexx, o sudo é adicionado

dpkg -l | grep linux-image

Você encontrará:

% bl0ck_qu0te%

observe que a tag agora lê hi , não ii

para remover o pino

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done
    
por Chen Deng-Ta 10.08.2016 / 09:42
0

Versão mais curta: (Substitua "hold" por "install" para remover o pino)

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

Para ver o estado de todas as imagens e cabeçalhos do kernel, execute:

 dpkg --get-selections | grep "linux-"
    
por Per Mejdal Rasmussen 18.01.2017 / 21:14