Erro no disco rígido cheio: apt-get incapaz de instalar ou remover

24

Encontrei o seguinte erro ao atualizar meu servidor Ubuntu 12.04. Agora apt-getnão é possível instalar ou remover nenhum pacote.

Descompactando linux-headers-3.13.0-62 (de ... / linux-headers-3.13.0-62_3.13.0-62.102 ~ precision1_all.deb) ...
dpkg: erro ao processar /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb (--unpack):
 incapaz de criar `/usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h.dpkg-new ' 
(durante o processamento de `./usr/src/linux-headers-3.13.0-62/arch/arm/include/asm/ptrace.h '): Nenhum espaço restante no dispositivo 
Nenhum relatório de apport escrito porque a mensagem de erro indica um disco erro completo
 dpkg-deb: error: a pasta do subprocesso foi eliminada pelo sinal (canal quebrado)
Foram encontrados erros durante o processamento:
 /var/cache/apt/archives/linux-headers-3.13.0-62_3.13.0-62.102~precise1_all.deb
E: O subprocesso / usr / bin / dpkg retornou um código de erro (1)

Embora eu não esteja realmente sem espaço em disco,

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.8G  4.7G  1.8G  69% /  

De qualquer forma, meus inodes estão cheios,

# df -i
Filesystem     Inodes   IUsed  IFree IUse% Mounted on
/dev/sda1      458752  455214   3538  100% /

Eu tenho mais de dez núcleos antigos, mas não consigo removê-los, pois o meu apt-getpróprio é coxo. Portanto, não consigo seguir este post que relata um problema semelhante.

A única opção parece excluir manualmente alguns kernels antigos. Isso causará algum problema?

Existe alguma saída melhor? Por enquanto, posso usar o espaço reservado para root e remover os kernels mais antigos?

souravc
fonte
1
Na verdade, eu removi manualmente alguns kernels antigos /usr/srcpara me livrar da situação. Felizmente, tudo correu bem e aptcomeçou a funcionar novamente. Mas solicitarei que você faça o backup antes de fazer isso em uma máquina de produção. Eu fiz isso em uma máquina virtual que tinha backup completo.
souravc 10/09/2015
Funciona! Fiz o mesmo aqui (ubutu 14.04.1) para atualizar para o kernel 4.4.0-51-generic. Só não tenho certeza se isso causará algum problema no futuro. Obrigado.
Moreno

Respostas:

36

Sei que este post é um pouco antigo, mas encontrei uma resposta aqui para qualquer um que possa se deparar com este post: https://help.ubuntu.com/community/RemoveOldKernels

Caso esse link esteja quebrado, eis o snippet relevante:

Remoção segura de núcleos antigos

Para usuários de sistemas LVM, sistemas criptografados ou sistemas de armazenamento limitado, o problema mais frequente é que a partição / boot está simplesmente cheia. O gerenciador de pacotes não pode instalar uma atualização pendente devido à falta de espaço. Além disso, o apt-get não pode remover um pacote devido a uma dependência quebrada.

Esse problema pode ser corrigido de maneira rápida e fácil a partir do shell. Basta identificar um ou dois kernels antigos para remover manualmente, o que fornecerá ao gerenciador de pacotes espaço suficiente para instalar a atualização na fila.


$ sudo rm -rv ${TMPDIR:-/var/tmp}/mkinitramfs-*  
                                  ## In Ubuntu 16.04 and earlier there may be leftover temporary
                                  ## files to delete.
                                  ## See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=814345

$ uname -r                        ## This command identifies the currently-running kernel
4.2.0-21-generic                  ## This is the current kernel.
                                  ## DO NOT REMOVE it!

$ dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)
                                  ## This command lists all the kernels excluding the booted
                                  ## kernel in the package database, and their status.
rc  linux-image-4.2.0-14-generic  ## The oldest kernel in the database
                                  ## Status 'rc' means it's already been removed
ii  linux-image-4.2.0-15-generic  ## The oldest installed kernel. Eligible for removal.
                                  ## Status 'ii' means Installed.
ii  linux-image-4.2.0-16-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-18-generic  ## Another old installed kernel. Eligible for removal
ii  linux-image-4.2.0-19-generic  ## The previous good kernel. Keep
iU  linux-image-4.2.0-22-generic  ## DO NOT REMOVE. Status 'iU' means it's not installed,
                                  ## but queued for install in apt.
                                  ## This is the package we want apt to install.

                                  ## Purge the oldest kernel package using dpkg instead of apt.
                                  ## First you need to remove the image initrd.img file manually
                                  ## due to Bug #1678187.
$ sudo update-initramfs -d -k 4.2.0-15-generic
$ sudo dpkg --purge linux-image-4.2.0-15-generic linux-image-extra-4.2.0-15-generic
                                  ## If the previous command fails, some installed package
                                  ## depends on the kernel. The output of dpkg tells the name
                                  ## of the package. Purge it first.

                                  ## Also purge the respective header package.
$ sudo dpkg --purge linux-headers-4.2.0-15-generic
                                  ## Try also purging the common header package.
$ sudo dpkg --purge linux-headers-4.2.0-15
                                  ## Do not worry, if the previous command fails.

$ sudo apt-get -f install         ## Try to fix the broken dependency.

Eu segui isso com:

sudo apt-get autoremove --purge
Junkle
fonte
9

Eu encontrei agora uma saída da situação e removi alguns kernels antigos /usr/srcpara me livrar da situação. Felizmente tudo correu bem e o apt começou a funcionar novamente.

É altamente recomendável fazer o backup antes de remover os kernels antigos de uma máquina de produção.

souravc
fonte
Qualquer solução melhor ainda é bem-vinda. Eu posto este comentário como resposta, pois pode ajudar alguém.
souravc
1
Depois de removido alguns kernels antigos e correu apt-get autoremove e instalado alguns dependacies apt-get -f installfixo meus problemas
Thamaraiselvam
OBRIGADO. I removido todo o * linux- sob /bootmas não utilizá dkpgassim ainda havia os *-headerarquivos/usr/src
Dylan Pierce