Espaço em disco livre insuficiente ao atualizar

142

Estou recebendo um erro no atualizador de software quando tento fazer minhas atualizações diárias. diz:

The upgrade needs a total of 25.3 M free space on disk `/boot`.
Please free at least an additional 25.3 M of disk space on `/boot`.
Empty your trash and remove temporary packages of former installations 
using `sudo apt-get clean`.

Tentei digitar no sudo apt-get cleanTerminal, mas ainda recebo a mensagem. Todas as páginas que li parecem ser para Ubuntuers experientes. Estou executando o Ubuntu 12.10. Quero atualizar para o 13.04, mas entendo que preciso finalizá-los primeiro.

Esta é a saída da digitação no cat /etc/fstabTerminal:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu-root /               ext4    errors=remount-ro 0       1
# /boot was on /dev/sda1 during installation
UUID=fa55c082-112d-4b10-bcf3-e7ffec6cebbc /boot           ext2    defaults        0       2
/dev/mapper/ubuntu-swap_1 none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
matty@matty-G41M-ES2L:~$ 

Saída de df -h:

Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu-root  915G   27G  842G   4% /
udev                     984M  4.0K  984M   1% /dev
tmpfs                    397M  1.1M  396M   1% /run
none                     5.0M     0  5.0M   0% /run/lock
none                     992M  1.8M  990M   1% /run/shm
none                     100M   52K  100M   1% /run/user
/dev/sda1                228M  222M     0 100% /boot
matty@matty-G41M-ES2L:~$ 

E dpkg -l | grep linux-imagedá:

ii linux-image-3.5.0-17-generic 3.5.0-17.28 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-18-generic 3.5.0-18.29 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-19-generic 3.5.0-19.30 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-21-generic 3.5.0-21.32 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-22-generic 3.5.0-22.34 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-23-generic 3.5.0-23.35 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-24-generic 3.5.0-24.37 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-25-generic 3.5.0-25.39 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
ii linux-image-3.5.0-26-generic 3.5.0-26.42 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
iF linux-image-3.5.0-28-generic 3.5.0-28.48 i386 Linux kernel image for version 3.5.0 on 32 bit x86 SMP
carmatt95
fonte
1
Além disso, o conteúdo do seu / etc / fstab pode ser útil. O que parece é que / boot está montado em uma partição separada.
Chuck R
1
Como diz @Githlar, o seu fstab pode nos fornecer informações sobre suas partições hd.
ssoto
1
O fstab é um arquivo que contém informações sobre as partições montadas quando você inicializa o computador. Para mostrar o conteúdo deste arquivo, digite cat /etc/fstabum terminal. Copie a saída e adicione-a à sua pergunta (você pode editar sua pergunta). Além disso, copie a saída de df -he dpkg -l | grep linux-image.
Alaa Ali
1
Seu problema é que todos os linux-image...arquivos extras na /bootpartição estão ocupando espaço - você só tem 6 MB livres na partição. sudo dpkg -P purge 'older_linux_image_filename'remover todas, exceto as versões mais recentes = 3.5.0-28.48 e 3.5.0-26.42 Isso deve permitir a atualização / atualização.
Douggro 23/05
2
Eu apenas tive que correr sudo apt-get autoremovepara consertar isso.
Juampy NR

Respostas:

192

Nota: esta resposta deve ser mais uma 'explicação' do que fornecer a melhor / mais fácil maneira de remover kernels antigos. Para a melhor / mais fácil maneira de remover kernels antigos, revise as outras respostas.

Ok, então a partir da saída que /etc/fstabvocê postou, parece que você /bootestá montado em uma partição separada e, a partir da saída df -h, essa partição está cheia. Isso ocorre porque existem kernels antigos instalados que não são necessários; você pode dizer isso olhando a saída do dpkg -l | grep linux-imageque publicou, onde pode ver mais de uma " imagem linux " com versões diferentes. Precisamos remover as versões antigas.

Primeiro, eu quero que você execute o comando uname -rem um terminal, isso mostrará a versão do kernel que você está usando no momento. Nós nunca queremos remover essa versão do kernel. O comando dirá algo como isto . Anote esse número ! Os seguintes comandos assumem que esse é o kernel que você está executando.3.5.0-26-generic26

O comando para remover uma versão antiga do kernel é:

sudo apt-get purge linux-image-x.x.x-xx-generic

... onde os caracteres x são números. Portanto, no seu caso, como você tem muitas versões antigas (17, 18, 19, etc ...), teríamos que executar este comando para cada uma das versões, assim:

  • sudo apt-get purge linux-image-3.5.0-17-generic
  • sudo apt-get purge linux-image-3.5.0-18-generic
  • sudo apt-get purge linux-image-3.5.0-19-generic

...e assim por diante. Mas, há uma maneira de fazer tudo isso através de um comando. O comando é este ( NÃO EXECUTE O COMANDO AINDA! Leia o seguinte. ):

sudo apt-get purge linux-image-3.5.0-{17,18,19,21,22,23,24}-generic

Este comando removerá as versões mencionadas entre colchetes. Não incluí as versões 25, 26 e 28 pelos seguintes motivos:

  • Não incluiu 26, obviamente, porque essa é a versão do kernel que você está executando no momento! Essa é a versão que recebemos do comando uname -r, lembra? Nós nunca queremos remover isso!
  • Não incluiu 28 porque esse é o que sua atualização estava tentando atualizar (você pode dizer isso a partir do iFstatus seguinte, o que significa que ele está "meio configurado").
  • Não incluiu 25, porque geralmente é uma boa prática deixar pelo menos uma versão antiga. Portanto, como você está executando 26, manteremos 25, portanto não o incluiremos no comando acima.

Portanto, se o último número em uname -rfor 26 (ou 28 ou mesmo 25), é seguro executar o comando acima. Digite sua senha quando solicitado e digite yquando solicitado. Isso mostrará várias linhas e, eventualmente, retornará ao prompt de comando (no seu caso matty@matty-G41M-ES2L:~$), espero que sem erros. Quando terminar, faça df -he olhe para a última linha, a que começa /dev/sda1. Você deve achar que agora tem mais espaço e que a porcentagem usada é menor que 100% como era antes. Agora você pode continuar com sua atualização novamente.

Alaa Ali
fonte
1
Funcionou!!! Muito obrigado! Pergunta bônus: quando baixei o Ubuntu pela primeira vez, excluí acidentalmente a pasta "fotos" na área inicial. Por causa disso, não há uma guia "fotos" ao lado. Eu resolvi isso criando uma pasta chamada "figuras", mas ela não aparece na barra lateral. Você sabe como chegar lá? Tentei clicar e arrastar, mas sem sucesso. @Alaa
carmatt95
3
De nada! Para a outra pergunta, crie outra e eu responderei. Dessa forma, as pessoas que estão procurando por esse problema podem encontrá-lo.
Alaa Ali
13
Eu gostaria de poder votar isso toda vez que voltar para fazer referência a ela ... já teria muito.
sevenseacat
4
sim, volte aqui novamente para fazer referência à mesma coisa. Você pensaria que eu me lembraria disso agora.
Sevenseacat
2
Um comando mais conciso para purgar todos os kernels antigos é:sudo apt-get autoremove --purge
ctrueden
42

Você pode instalar o Ubuntu-Tweak. Para instalar, siga os seguintes passos:

Abra o terminal. Adicione o repositório necessário com o comando:

sudo add-apt-repository ppa:tualatrix/ppa

Atualize a lista de software com o comando:

sudo apt-get update

Por fim, instale o Ubuntu Teak com o comando:

sudo apt-get install ubuntu-tweak

Depois disso, abra o traço e digite "ubuntu tweak".

E, em seguida, vá para a janitorguia Apps, selecione Personale Systemmarque as caixas e clique cleanno botão no canto inferior direito.

αғsнιη
fonte
9
Muito melhor do que mexer com a linha de comando e tentar excluir todos os kernels, mas não os atuais, quando eles têm versões diferentes (não apenas -32 no final) e também pacotes -extra. O tweak do Ubuntu me salvou 5 minutos, obrigado!
POMATu
Muito mais conveniente.
Saeed Amiri
Eu não consegui adicionar o PPA, mas baixei o .debsite do projeto ubuntu-tweak.com #
Luigi Siri
não há necessidade de adicionar PPA no ubuntu 14.04
Edward Torvalds
1
@edwardtorvalds É claro que você pode instalá-lo sem adicionar seu PPA no 14.04 e também 14.10 no .debpacote, mas não é o mais preferível. O motivo pelo qual você deseja instalá-lo por meio do PPA é porque ele garante atualizações.
αғsнιη
17

Uma maneira rápida de remover todos os kernels e cabeçalhos não utilizados (excluindo o kernel atual em execução) foi apontada por @Lekensteyn em sua resposta à pergunta Como liberar mais espaço no / boot? :

sudo apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')") 

Isso deve liberar espaço suficiente para você atualizar.

marianoju
fonte
3

No meu sistema Ubuntu doméstico, sigo um método semelhante ao postado, mas é um pouco mais simples e limpa mais espaço nos cabeçalhos do kernel, etc.

  1. Verifico qual kernel em execução estou usando, pois é imperativo não interferir nisso.

    uname -a
    
  2. Então, olho para / boot com o objetivo de remover todos os arquivos relacionados ao kernel que não estão diretamente relacionados ao kernel em execução. Isso me fornece uma lista de todas as versões do kernel que desejo remover, por exemplo: 3.5.0-17, 3.5.0-18

    ls -l /boot
    
  3. Agora eu pego a primeira versão do kernel na minha lista de eliminação e encontro todos os pacotes relacionados a ela.

    dpkg -l | grep 3.5.0-17
    
  4. Limpe-os do sistema

    sudo apt-get purge <list of packages separated by spaces>
    
  5. volte para 3 e selecione a próxima versão do kernel na minha lista de eliminação.

  6. Feito

Kiat
fonte
1

Eu estava recebendo esse erro, este artigo ajudou.

Eu costumava df -hidentificar que a inicialização estava cheia, uname -rpor versão, depois usei a purgestring listada acima para remover os kernels antigos. limpeza de kernel único funcionou, multi não (para mim).

Encontrei os arquivos nas janelas; Não pude excluí-los, tive que usar o terminal, mas ele me mostrou as versões antigas que eu tinha lá.

Não faço ideia por que o / boot (sda2) é particionado e por que é tão pequeno. mas agora posso usar o atualizador Ubuntu novamente.

I teve algum sucesso menor com sudo apt-get update, sudo apt-get upgrade, sudo apt-get clean, também tentou BleachBit software livre. Use a sequência de limpeza, mas não a versão atual. Espero que isso ajude alguém.

Brian P
fonte
edit: eu não acho que você tem que adicionar "-generic" para a seqüência de purga
Brian P
0

Você tem algum pacote antigo de imagem do kernel instalado que não está sendo usado? Aqueles podem ocupar espaço no / boot. Eu recomendo revisar o conjunto de pacotes de kernel instalados com um comando como o seguinte:

dpkg -l "linux-image*" | grep "^i"

Isso deve fornecer uma visão geral do conjunto de pacotes de imagens do kernel instalados. Para os pacotes linux-image que não estão sendo usados ​​e que não seriam necessários para fins de recuperação - por exemplo, por exemplo, eu gosto de manter pelo menos uma versão do kernel atrás da versão ativa instalada, para recuperação - caso contrário, você pode remover quaisquer pacotes não utilizados usando sua ferramenta de empacotamento favorita, como o aptitude.

Eu também recomendo dar uma olhada nos pacotes inux-headers , linux-image-extras relacionados (se aplicável), também no linux-source e no linux-tools , para que possam ser instalados junto com qualquer pacote de imagem-linux não utilizado .

Sean Champ
fonte
0

Duvido que muitas pessoas, se houver alguma, se deparem com esse problema, mas eu o coloco aqui para documentação, caso alguém precise.

Meu problema é que eu estava compilando kernels personalizados diferentes até ficar sem espaço. A maneira que eu tinha que limpar o espaço era entrar em cada diretório do kernel em que eu estava trabalhando e executar um sudo make clean.

  • $ cd /usr/src Diretório onde a fonte do kernel está
  • $ cd linux-image-custom_kernel_name
  • $ sudo make clean
Jacksonkr
fonte
0

A resposta de marianoju realmente ajudou, exceto que eu recebi um erro ao usar apt purge. Não consegui encontrar uma opção de força.

A combinação do dpkg de nível inferior permitiu-me continuar:

sudo dpkg -r $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print $2}' \
               | grep -ve "$(uname -r | sed -r 's/-[a-z]+//')")
PascalVKooten
fonte
0

Você pode tentar, com o comando abaixo, remover pacotes antigos de imagens do kernel, se você estiver tendo essas coisas.

sudo apt autoremove

Depois disso, você poderá fazer a atualização

Dinusha Dilanka
fonte