Não é possível atualizar devido a problemas no pacote do kernel

4

um usuário do Ubuntu 14.04 LTS aqui.

Basicamente, tive um problema ao executar

sudo apt-get update
sudo apt-get upgrade

Um código de erro foi retornado pelo dpkg porque o pacote do kernel Linux 3.13.0.57 estava sendo marcado como "não totalmente instalado":

Errors were encountered while processing:
 linux-image-3.13.0.57-generic
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Eu digitei uname -r para ver qual é a versão atual do kernel do meu sistema e, surpreendentemente, era 3.13.0.57 . Depois eu reiniciei o sistema e entrei no grub para listar todos os kernels linux instalados e vi que eu tinha 3.8.0-35-generic então eu iniciei com ele para tentar reinstalar a versão 3.13.0.57 . Eu não tenho nenhuma idéia de porque, por padrão, o Ubuntu 14.04 inicializa com o 3.13.0.57 quando o 3.8.0-35 está disponível.

Depois de ter iniciado com 3.8.0 , listei mais uma vez todos os kernels que tenho com o dpkg para ter certeza de que 3.13.0-57 existe .

sudo dpkg --list | grep linux-image
sudo apt-get purge linux-image-3.13.0.57-generic
sudo apt-get purge linux-image-extra-3.13.0-57-generic

Mas o pacote de imagem extra não pode ser removido, enquanto a imagem do Linux puro pode:

Errors were encountered while processing:
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Alguma idéia de como corrigir isso? Eu procurei e vi que uma possível falta de espaço na partição de inicialização pode causar esse tipo de problema, mas acho que meu caso é diferente. Consegui limpar manualmente os 4-5 kernels antigos para ter certeza de que libertei espaço suficiente na partição de inicialização.

Editar 1: Eu vi que o Ubuntu 14.04.2 vem com o Linux Kernel 3.16.x mas eu não o tenho. O mais novo que eu tenho é o 3.8.0-35 e depois vem o 3.13.0-57.

Editar 2: A execução de sudo apt-get autoremove ou sudo apt-get dist-upgrade não ajuda. Parece que não posso executar nenhuma atualização. Aqui está o log de sudo apt-get autoremove :

    $ sudo apt-get autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  linux-image-extra-3.13.0-57-generic
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 152 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 747752 files and directories currently installed.)
Removing linux-image-extra-3.13.0-57-generic (3.13.0-57.95) ...
depmod: FATAL: could not load /boot/System.map-3.13.0-57-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-57-generic
grep: /boot/config-3.13.0-57-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
run-parts: executing /etc/kernel/postinst.d/zz-runlilo 3.13.0-57-generic /boot/vmlinuz-3.13.0-57-generic
Fatal: open /boot/vmlinuz-3.13.0-46-generic.efi.signed: No such file or directory
run-parts: /etc/kernel/postinst.d/zz-runlilo exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-57-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-extra-3.13.0-57-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Eu não sei o que isso - Fatal: open /boot/vmlinuz-3.13.0-46-generic.efi.signed: No such file or directory tem a ver com a remoção de 3.13.0-57.

    
por 0x450 11.07.2015 / 14:31

3 respostas

5

Consegui encontrar uma solução para o problema. No entanto, decidi publicá-lo como uma resposta se alguém com o mesmo problema se esforça.

A causa do problema:

Eu verifiquei o status do dpkg dos pacotes:

dpkg --status linux-image-3.13.0.57-generic
dpkg --status linux-image-extra-3.13.0-57-generic

A saída afirmou claramente que os pacotes estavam em mau estado. Eles "não foram totalmente instalados", como escrevi na pergunta acima.

A solução:

As entradas desses pacotes devem ser excluídas do arquivo de status de dpkg na ordem apt-get para funcionar normalmente. As etapas são as seguintes:

  1. Certifique-se de fazer um backup do arquivo de status se algo der errado.

    sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup

  2. Abra /var/lib/dpkg/status com seu editor de texto preferido e pesquise e exclua SOMENTE as referências dos pacotes quebrados. Você não deve excluir mais nada!

  3. Execute sudo apt-get upgrade para garantir que tudo está resolvido.

por 0x450 11.07.2015 / 19:01
1

wajig remove linux-headers-3.13.0-57-generic funcionou para mim.

Eu reiniciei e estava no 3.13.0-57-generic kernel.

Tenha cuidado embora! Faça backup dos seus dados.

    
por defhlt 12.07.2015 / 01:49
1

Se você quer atualizar para uma nova Versão do kernel, você pode instalá-lo manualmente através dos pacotes "linux-image-lts ..." ou "apt-get dist-upgrade"

Essas falhas ocorrem em full luks criptografadas A causa de Volumens / boot é muito pequena nessas configurações.

Talvez um "apt-get autoremove" ajude também ...

    
por Mr.Gosh 11.07.2015 / 17:16