Por que o apt autoremove não remove todos os pacotes antigos do kernel de uma só vez?

1

Eu tenho atualizado o kernel de nossos servidores Ubuntu desde que eles lançaram um patch para a vulnerabilidade do Meltdown. Notei que praticamente em todos os servidores, depois de reiniciar tenho que executar apt autoremove duas vezes para limpar todos os kernels antigos que ainda estão no sistema.

Se eu executar pela primeira vez, ele remove duas versões antigas do kernel no começo:

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-103 linux-headers-4.4.0-103-generic linux-headers-4.4.0-104 linux-headers-4.4.0-104-generic linux-image-4.4.0-103-generic linux-image-4.4.0-104-generic
  linux-image-extra-4.4.0-103-generic linux-image-extra-4.4.0-104-generic
0 upgraded, 0 newly installed, 8 to remove and 2 not upgraded.
After this operation, 596 MB disk space will be freed.

Mas, depois que terminar e eu executar apt autoremove novamente, ele remove uma versão mais antiga:

% sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-headers-4.4.0-96 linux-headers-4.4.0-96-generic linux-image-4.4.0-96-generic linux-image-extra-4.4.0-96-generic
0 upgraded, 0 newly installed, 4 to remove and 2 not upgraded.
After this operation, 298 MB disk space will be freed.

Eu estou pensando, por que não pode fazer isso de uma só vez?

    
por Oldskool 12.01.2018 / 10:27

1 resposta

3

Os scripts de mantenedores do kernel, especificamente /etc/kernel/postinst.d/apt-auto-removal , criam uma lista de kernels para manter, armazenados como configuração do APT em /etc/apt/apt.conf.d/01autoremove-kernels . Este processo mantém o kernel atualmente em execução, o kernel sendo configurado e os dois últimos kernels instalados.

Presumivelmente, a última vez que o script foi executado antes de sua primeira limpeza, -96 acabou protegido porque caiu em uma dessas categorias. Após sua primeira limpeza, ela não funcionou mais e tornou-se um candidato para remoção. Se você quiser descobrir por que , o arquivo 01autoremove-kernels contém informações de depuração; olhando para ele antes da primeira limpeza, e novamente depois, deve revelar por que várias versões do kernel estão protegidas.

A remoção automática do kernel é propositalmente conservadora e erra por precaução. Você pode lidar com isso automaticamente (eventualmente) usando unattended-upgrades ; veja o wiki do Ubuntu para detalhes.

    
por 12.01.2018 / 11:04