Minha partição de inicialização está em um SSD, portanto, não há espaço para mais de 8 versões de kernel instaladas e, eventualmente, alguma atualização do kernel falhará na instalação porque minha partição de inicialização está cheia de versões antigas. Existem muitas perguntas sobre como remover versões antigas (mesmo como automatizar o processo), mas minha pergunta é simplesmente a seguinte: Por que não as apt-get autoremove
detecta e remove automaticamente, e existe uma maneira de fazê-lo ? Quero dizer, apt-get
é o que os instalou de qualquer maneira, então ele sabe sobre eles, então por que ele escolhe deixar todas as versões antigas por aí?
53
Respostas:
Para responder ao porquê, consulte o arquivo
/etc/apt/apt.conf.d/01autoremove-kernels
Como você pode ver, é dito ao apt para nunca remover automaticamente os kernels, como dito em outro arquivo (script)
/etc/kernel/postinst.d/apt-auto-removal
,. E aqui está:Se você instalar manualmente 2 kernels escolhidos, ou seja, o primeiro e o atual, o apt-autoremove removerá apenas as versões mais antigas que você não instalou manualmente, então você sempre terá essas 2 opções, mais a mais recente.
Atualizar:
No
/etc/kernel/postinst.d/apt-auto-removal
existe esta parte:Portanto, se você comparar a saída do
01autoremove-kernels
arquivo euname -r
perceber que o kernel atualmente em execução e o mais recente antes dele, nunca serão removidos por esse script. Acontece que há outro arquivo/etc/apt/apt.conf.d/01autoremove
, onde há linhas:Então você pode comentar isso, e isso permitirá que você remova automaticamente os kernels
apt-autoremove
, embora lembre-se - faça isso por seu próprio riscofonte
/etc/apt/apt.conf.d/01autoremove-kernels
possui muitas linhas, mas apenas duas versões entre todas: 3.13.0. {39,43}. Masdpkg -l linux-*
lista quatro versões, 3.13.0. {39,40,41,43}, então algo diferente de/etc/apt/apt.conf.d/01autoremove-kernels
manter essas versões intermediárias, certo?01autoremove
é o arquivo que você deseja,01autoremove-kernels
provavelmente é apenas uma proteção, para que o apt não remova o kernel atualmente instalado e o mais recente (apenas no caso de novos01autoremove
mal, é apenas uma proteção contra a remoção automática de pacotes de dependêncialinux-image-extra
. Mudá-lo não deve afetar alinux-image-3.16.0-31-generic
remoção automática ou não . Nenhum dos padrões nele corresponde aos nomes dos pacotes que queremos remover automaticamente./etc/apt/apt.conf.d/01autoremove
. Isso não ajuda você a remover automaticamente os pacotes do kernel com versão antiga, mas pode ter efeitos indesejados. O arquivo não protege contra a remoção automática,linux-image-extra
mas os pacotes que correspondem a expressões regulares naNeverAutoRemove
seção.apt-get autoremove
não remove os kernels não listados/etc/apt/apt.conf.d/01autoremove-kernels
é que eles estão marcados como instalados manualmente; veja minha resposta .Para mim, ajudou a instalar o ubuntu (15.10) mais recente (X). Em versões anteriores, os pacotes do kernel podem ser marcados como instalados manualmente, pelo menos, se instalados usando o Software Updater, para que
sudo apt-get autoremove --purge
não possam ser excluídos. Existem relatórios de erros relacionados ao problema: Bug # 1175637 , Bug # 1439769Na versão anterior, você poderia tentar marcar os pacotes do kernel instalados automaticamente
sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")
esudo apt-get autoremove --purge
depois executar para ver se isso faz diferença. O comando ainda não deve remover os pacotes do kernels mostrados em /etc/apt/apt.conf.d/01autoremove-kernels, mas é mais seguro executar primeiroapt-get autoremove
com a--dry-run
opção.fonte
apt-mark
fez o truque para mim, gostaria de poder upvote 10 vezes: P