Meu primeiro problema foi quando tentei apt-get update
ou apt-get upgrade
. Na atualização, recebo o seguinte erro:
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.
Eu tentei executar o apt-get install -f e esta foi a saída (depois de dizer sim no prompt)
(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': 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.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Eu tentei correr apt-get autoremove
e isso me dá o mesmo erro que apt-get upgrade
.
Quando corro df
, recebo isso para /boot
:
/dev/sda1 233191 230297 0 100% /boot
Então, li em outro lugar que eu deveria tentar limpar os kernels antigos. Eu verifiquei quais kernels eu tinha com:
$ dpkg -l linux-image-\* | grep ^ii
ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64
ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
Quando tento remover o mais antigo com isso:
$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Como posso liberar ou estender a inicialização sem atrapalhar minha instalação?
upgrade
apt
partitioning
Strifey16
fonte
fonte
Remove-Unused-Dependencies
não é o padrão?Respostas:
Liberando espaço no sistema de arquivos raiz
Para liberar espaço no sistema de arquivos raiz, você pode tentar executar
apt-get clean
.Se isso não funcionar, você pode acessar
/var/cache/apt/archives
e remover manualmente alguns arquivos do cache para recuperar algum espaço, por exemplo:Não vai doer remover todos os
.deb
arquivos aqui, se você precisar - é o queapt-get clean
faz. Eles serão automaticamente baixadosapt
novamente se forem necessários novamente.Liberando espaço no sistema de arquivos / boot
O Pôster original possui uma
/boot
partição separada , e é isso que está cheio e impedindo oapt
funcionamento do sistema. Será necessário liberar espaço lá.Se houver espaço suficiente, acesse
/boot
e remova um ou mais arquivos de configuração:por exemplo, mas usando o nome de uma das versões do kernel que você deseja remover de qualquer maneira. Isso liberará um pouco de espaço (cerca de 144 mil cada).
Se você precisar de mais espaço remover individualmente velhos
vmlinuz
,initrd
,abi
eSystem.map
arquivos até que você tenha espaço suficiente (cerca de 22M para um dos meus versões do kernel i386).Faça o que fizer, não remova todos eles . Você deve pelo menos manter as duas últimas versões correspondentes de cada tipo de arquivo, para cada tipo de kernel que você usa.
Em seguida, prossiga com os comandos do apt-get install. Como mencionado acima, eles podem ter que baixar novamente algumas das debs que você excluiu, mas, se for o caso, isso acontecerá automaticamente. Quando você tiver o apt trabalhando novamente, limpe usando o apt-get para remover os pacotes correspondentes aos arquivos que você removeu - para que tudo corresponda.
O arquivo de configuração
/boot
é a configuração do kernel que foi usada pela equipe do kernel para criar o kernel com o mesmo nome. Deve ser inofensivo removê-lo, a menos que você o queira para referência ou para ajudá-lo a construir seus próprios núcleos.Finalmente, você está removendo manualmente um ou mais pacotes do kernel antigo da
/boot
partição para liberar ainda mais espaço para o novo.fonte
sudo rm
para remover de / boot. Em vez disso, usesudo dpkg --purge
para remover alguns pacotes antigos de imagem linux. Depois disso, usesudo apt-get -f install
para corrigir a dependência quebrada.rm
pode ser usado então.No meu caso, os
apt
comandos edpkg
comandos não puderam terminar e não puderam ser removidos. A atualização automática falhou na instalação2.6.32-56-server
.Meu primeiro passo, foi identificar o espaço a ser usado,
Eu tinha cerca de 30 kernels e arquivos de suporte.
Eu fiz um
uname -a
para obter o kernel em execução, identifiquei que estava no Linux alternativo2.6.32-43-server
e fiz umatar
das 6 versões que não estavam em execução e eram antigas.Fiz então
rm -rf
o que havia feito backup:Estou mostrando esses comandos como exemplos, você terá que decidir com o que trabalhará para sua situação.
Agora que eu tinha algum espaço
/boot
, eu era capaz de correrPara limpar a instalação com falha do
2.6.32-56-server
.Então eu fiz um
Isso me deu espaço para devolver o que eu havia feito backup.
Para limpar, eu poderia executar:
Eu reiniciei e agora estou usando 4% de
/boot
.fonte
Você pode usar em
dpkg
vez deapt-get
remover os kernels antigos:fonte
/boot
partição separada ).Notei que ainda havia alguns arquivos das versões antigas no diretório de inicialização:
E o gerenciador de pacotes listaria as versões antigas:
Portanto, usei esse comando (
autoremove
também removeria imagens mais recentes que não desejo remover)Eu ainda tinha alguns cabeçalhos:
Então eu fiz isso:
Finalmente, havia um pacote que não consegui remover com o apt-get purge:
Fonte: Remova um pacote marcado como rc pelo dpkg
fonte
Verifique o uso de
/var/tmp
comdu -sh /var/tmp/
. Todos os arquivos nessa pasta podem ser excluídos para liberar espaço.Você pode executar o seguinte para remover os kernels antigos:
fonte
/var/tmp
tem a ver com kernels antigos? E nem sempre é seguro excluir tudo em/var/tmp
...Isto é o que eu usei:
Faça isso para todos os kernels antigos e mantenha apenas os dois mais recentes.
Se você deseja remover automaticamente os kernels antigos e atualizar o GRUB, consulte: Documentação do Ubuntu
fonte
Descobri que a única coisa que funcionava para mim era usar o Aptitude.
Então, quando abrir, geralmente dirá algo sobre dependências não atendidas na parte inferior. Você pode pressionar a letra
g
para prosseguir com a remoção sugerida. Ele o levará a uma página onde ele lista o que vai acontecer.Deve haver um sinal de menos
-
ao lado dos grãos quebrados. Pressioneg
novamente e ele removerá os grãos quebrados. Pressioneq
para sair. Então você poderá usarsudo apt-get autoremove
para se livrar dos kernels antigos e liberar espaço.fonte
Você não pode agir sobre pacotes, mas pode agir sobre outros arquivos. Primeiro, acesse sua pasta pessoal e veja se há algo que você possa excluir. Caso contrário, tente mover uma boa quantidade de arquivos para outra partição (ou uma unidade flash) e tente
sudo apt-get install -f
limpar os problemas de dependência de pacotes (provavelmente você instalou um arquivo .debdpkg
) e limpe todos os kernels antigos. Depois de ter pelo menos 10 MB com segurança, tente remover softwares ou arquivos desnecessários.fonte
Use o Synaptic Package Manager. Basta escolher o pacote que você deseja remover e ele solicitará que você também remova os pacotes que dependem dele. Na minha experiência, os pacotes do kernel sempre vêm em grupos de dois (ou mais, dependendo de como você conta) que são interdependentes. Geralmente, você pode encontrar antigos rapidamente usando o filtro "local / obsoleto".
fonte
Eu tenho lutado com esse problema de tempos em tempos e ainda não vi nenhuma solução que realmente faça o trabalho completo. Em alguns casos, a remoção de kernels antigos acaba em dependências que me impedem de remover qualquer coisa e eu tive que remover manualmente os kernels do / boot. No entanto, eu ainda queria fazer o trabalho completo, pois imagino que os kernels excluídos manualmente estão registrados em algum lugar e podem causar problemas futuros, quando algo relata arquivos ausentes por causa de mim sentado rm -rf nos arquivos.
Então, eu escrevi esse script, com base em muitas sugestões pesquisadas aqui que não exigem nenhuma instalação adicional de algo. O script foi modificado algumas vezes para suportar algumas das minhas próprias situações "inesperadas". Por exemplo, executando isso em um raspberry pi, o update-grub provavelmente não existe. E, em alguns casos, ao executar os últimos atualizadores, os servidores estavam presos ao IPv6, onde alguns sites estavam inacessíveis.
O script calcula se é necessário remover com força os kernels completamente bloqueados devido à criação de dependências, ou se é possível fazê-lo da maneira "correta".
fonte
A simples execução
sudo apt-get -f autoremove
resolveu o meu problema.fonte
/dev/sda1
é montado sobre/
Rode isto:
Fonte: Recebo esse erro após a atualização. por favor ajude
fonte
apt
falha ao remover os pacotes do kernel porque o próprio processo de remoção gera arquivos/boot
, que já estão cheios. É por isso queapt-get autoremove
falha. A pergunta que você está procurando é askubuntu.com/q/142926/158442 , que já estáautoremove
listada.Eu vi alguns artigos no / boot estarem cheios, o que não é resolvido pelo dpkg eliminando os kernels antigos do linux, porque o apt-get -f install ou o apt-get -f autoremov reinstala os kernels.
No meu caso, pelo menos, os pacotes assinados e extras também precisavam ser removidos - os kernels eram dependências desses pacotes, portanto, eles foram reinstalados. Geralmente, os pacotes do kernel relacionados devem ser eliminados antes de chamar 'install'. Se você tentou fazer o apt-get upgrade logo após a limpeza, a mensagem de erro deveria dizer quais pacotes tinham uma dependência não atendida do kernel que você acabou de limpar.
No meu caso, a seguinte tática funcionou:
fonte
Instale a ferramenta linux-purge como esta .
Em seguida, execute no terminal:
Em seguida, continue removendo os kernels, por exemplo
Extra:
Se você deseja usar o linux-purge para remoção autônoma do kernel, em vez de usar atualizações autônomas para isso, desabilite a remoção de itens não utilizados editando /etc/apt/apt.conf.d/50unattended-upgrades e configure um serviço systemd executando
quando você quiser.
fonte