Remover pacotes do kernel sem executar update-initramfs e grub

1

Estou no Ubuntu 14.04 e tenho muitos kernels antigos que quero remover.

Esta questão pode ajudar a encontrá-los e removê-los, mas há um problema:

Each time dpkg removes a single kernel, it runs /etc/kernel/postinst.d/zz-update-grub and update-initramfs over all the kernels currently remaining.

Como resultado, a desinstalação leva uma eternidade!

Desejo remover todos os pacotes de uma só vez e, em seguida, executar update-grub uma vez no final. Como posso desativar as etapas desnecessárias?

Eu uso unattended-upgrades . Talvez tenha sido assim que entrei nessa situação.

    
por joeytwiddle 22.12.2016 / 14:39

1 resposta

3

Aqui está o que eu fiz:

  1. Edite o arquivo /usr/sbin/grub-mkconfig (como root) e adicione a seguinte linha no topo: (*)

    exit 0
    
  2. Em seguida, execute apt-get purge ou dpkg -P , conforme sugerido na pergunta vinculada, para remover os pacotes indesejados. Por exemplo, eu corri:

    sudo apt-get purge $(dpkg --list | grep -E 'linux-(image|signed-image|headers)' | awk '{ print $2 }' | sort -V | grep -vF "$(uname -r | grep -o '[0-9.-]*' | sed 's/-$//')")
    
  3. Em seguida, não se esqueça de editar o arquivo novamente e remover a linha:

    exit 0
    
  4. Finalmente, execute:

    sudo update-grub
    

    para atualizar seu gerenciador de inicialização.

Este processo recuperou 11 GB de espaço em menos de 30 minutos.

Eu também segui esta excelente sugestão para evitar que unattended-upgrades compilasse meus pacotes do kernel novamente no futuro.

(*) I also considered disabling /usr/sbin/dkms and /usr/sbin/extlinux-update and /usr/sbin/update-initramfs using the exit 0 trick, but these didn't save that much time, and they left files around in /lib/modules/[kernel_version]/ and /boot/initrd.img-[kernel_version]

    
por joeytwiddle 22.12.2016 / 14:39