Partição de inicialização completa, não é possível excluir os kernels antigos. Pacotes quebrados

6

Desculpe por perguntar sobre o que é provavelmente muito simples, mas estou pesquisando há uma semana e tentei muitas coisas sem sucesso.

Para começar, eu recebo um pop-up toda vez que eu inicializo dizendo que minha partição / boot está cheia, e o Synaptic Manager diz que o linux-image-generic está quebrado, mas não consegue reinstalar nenhum deles (linux-image -extra-3.13.0-54-generic e linux-image-generic).

Meu terminal me diz para tentar usar install -f para consertar as coisas, então eu tentei isso, e é isso que ele retornou. Infelizmente, eu ainda estou aprendendo e não consegui decifrar o código, gostaria de ajuda

aksel@aksels-PC:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following extra packages will be installed:
 linux-image-3.13.0-54-generic
Suggested packages:
 fdutils linux-doc-3.13.0 linux-source-3.13.0 linux-tools
The following NEW packages will be installed:
 linux-image-3.13.0-54-generic
0 upgraded, 1 newly installed, 0 to remove and 344 not upgraded.
5 not fully installed or removed.
Need to get 0 B/14,7 MB of archives.
After this operation, 32,8 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 431129 files and directories currently installed.)
Preparing to unpack .../linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb ...
Done.
Unpacking linux-image-3.13.0-54-generic (3.13.0-54.91) ...
dpkg: error processing archive /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb (--unpack):
 cannot copy extracted data for './boot/vmlinuz-3.13.0-54-generic' to '/boot/vmlinuz-3.13.0-54-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error

dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.13.0-54-generic /boot/vmlinuz-3.13.0-54-generic
Errors were encountered while processing:
 /var/cache/apt/archives/linux-image-3.13.0-54-generic_3.13.0-54.91_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
    
por Dooblieve 13.06.2015 / 01:10

4 respostas

7

Usando o linux-purge

Eu criei um script auxiliar para essa finalidade. É chamado de linux-purge e sua página de projeto é aqui no Launchpad.net. Na seção de anúncios, há instruções de instalação aqui .

Neste caso específico, você executaria

sudo linux-purge --fix

Para mais perguntas e comentários sobre o script, responda a este tópico do Ubuntuforums.org .

Método manual

Como uma alternativa, há instruções sobre como fazer a tarefa manualmente em Ajuda do Wiki da Comunidade que eu tenho contribuiu para (como jarnos).

De qualquer forma, aqui estão as minhas instruções manuais como arquivo:

Primeiro, remova todos os arquivos temporários restantes das atualizações anteriores do kernel.

sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*

(Pode haver alguns devido ao bug no Ubuntu 16.04 e anteriores.)

Relacione os kernels instalados com sucesso excluindo o kernel inicializado pelo comando:

dpkg-query -W -f='${Status} ${Package}\n' | awk '/^[^ ]+ ok installed linux-image-[0-9]+/{print }' | grep -Fv $(uname -r)

Exclua o arquivo initrd.img de um kernel desnecessário (devido ao bug ); aqui a versão escolhida do kernel é 4.2.0-23-generic:

sudo update-initramfs -d -k 4.2.0-23-generic

Limpar o kernel por

sudo dpkg --purge linux-image-extra-4.2.0-23-generic linux-image-4.2.0-23-generic

para liberar algum espaço em / boot. Se o comando falhar, algum pacote instalado depende do kernel. A saída do dpkg informa o nome do pacote. Purgue-o primeiro.

Você também pode limpar o respectivo pacote de cabeçalho

sudo dpkg --purge linux-headers-4.2.0-23-generic

e até mesmo o pacote de cabeçalho comum

sudo dpkg --purge linux-headers-4.2.0-23

se nenhum outro pacote depender disso; caso contrário, o comando falhará, mas é seguro executar.

Em seguida, execute

sudo apt-get install -f

para corrigir a dependência quebrada. Se isso falhar devido a espaço em disco insuficiente, você precisará remover outro kernel da maneira descrita acima.

Note que ainda pode haver muitos kernels instalados no seu sistema, mas agora você deve poder remover os extras por meio de, por exemplo, sudo apt-get purge seguido pelo (s) nome (s) do pacote do kernel.

    
por jarno 09.02.2016 / 22:50
0

A maneira mais rápida e fácil de remover kernels antigos é:

sudo apt-get autoremove

Isso normalmente reduz o número de kernels instalados para dois ou três. Faça isso após cada atualização de software que instala um novo kernel para evitar que o problema se repita.

    
por Rod Smith 13.06.2015 / 02:01
-1

Bem, não é surpresa que as funções do apt-get estejam falhando se sua partição / boot estiver cheia. Você apenas tem que liberar espaço no seu / boot, você pode fazê-lo graficamente ou via terminal / ssh com o que você estiver mais confortável. Você pode limpar (não remover!) Pacotes desnecessários ocupando espaço (kernels desde sua parte / boot), ou você pode expandir sua partição / boot tornando-a maior, então você pode executar o comando -f novamente. Se tudo isso for um idioma diferente para você, precisarei de mais informações para fornecer os comandos exatos que você precisa executar para fazer isso.

  1. Listar seus kernels instalados com: dpkg -l | grep linux-image-
  2. Como as partições do sistema são apresentadas (o que é cat /etc/fstab output)?
  3. Liste seu espaço em disco com: df command.

Aqui está um link que deve ajudar Removendo Kernels Antigos

    
por JohnRB 13.06.2015 / 01:56
-1

Você ficou sem espaço na sua partição de inicialização. É por isso que o apt-get falha, até mesmo lhe diz

  

Nenhum relatório de relatório escrito porque a mensagem de erro indica um erro disco cheio

Remova os kernels antigos antes de (re) instalar, deixe os mais recentes e os anteriores.

#dpkg -l | grep linux-image-

listará todos os kernels instalados

sudo apt-get autoremove linux-image-##fill-in-with-result-from-previous-command##

irá removê-los

$apt-get install --reinstall linux-image-generic

fará o resto

Página oficial do Ubuntu sobre remoção de kernels antigos

    
por czapa.ols 13.06.2015 / 01:56