Como remover pacotes obsoletos após a atualização de versão com falha via do-release-upgrade no Ubuntu?

14

Às vezes, quando eu atualizo um sistema via do-release-upgrade, o processo de atualização falha e o script diz para concluir o processo manualmente via dpkg --configure -a. Esse não é um problema sério - depois de resolver manualmente o problema das dependências e o processo de atualização final, tudo funciona bem.

Mas o do-release-upgradescript tem um processo de limpeza após concluir a atualização:

Remove obsolete packages?  
XXX packages are going to be removed.  
Continue [yN]  Details [d]y

que remove alguns pacotes obsoletos da versão antiga do sistema.

Parece que esse processo não é executado quando a atualização automática falha e eu concluo a atualização manualmente, portanto, os pacotes obsoletos da versão antiga permanecem instalados no sistema.

Como posso executar o processo "Remover pacotes obsoletos" manualmente após concluir a atualização manualmente?

Murz
fonte

Respostas:

16

Teste isto:

Abra um terminal,

Pressione Ctrl+ Alt+T

Executá-lo:

sudo -i

apt-get update

apt-get autoremove

apt-get clean

UNUSCONF=$(dpkg -l|grep "^rc"|awk '{print $2}')

apt-get remove --purge $UNUSCONF

NEWKERNEL=$(uname -r|sed 's/-*[a-z]//g'|sed 's/-386//g')

ADDKERNEL="linux-(image|headers|ubuntu-modules|restricted-modules)"

METAKERNEL="linux-(image|headers|restricted-modules)-(generic|i386|server|common|rt|xen)"

UNUSKERNELS=$(dpkg -l|awk '{print $2}'|grep -E $ADDKERNEL |grep -vE $METAKERNEL|grep -v $NEWKERNEL)

apt-get remove --purge $UNUSKERNELS

update-grub
kyodake
fonte
1
Obrigado, esses comandos é exatamente o que eu quero, o principal deles é dpkg -l|grep "^rc"|awk '{print $2}'que mostra os pacotes a serem removidos. É estranho que o apt-get ou o aptitude não desejem vê-lo para remoção.
Murz 26/10
2
Uma linha de comando CLI para pacotes obsoletos retirar após falha façam-release-upgrade com base no seu exemplo é: sudo dpkg -l|grep "^rc"|awk '{print $2}' | xargs sudo apt-get remove -y --purge. Atenção, este comando remove pacotes sem confirmação, mas é útil para automatizar sistemas de limpeza rápida.
Murz 26/10
No meu sistema, os '^rc'pacotes marcados nem estavam instalados, mas a atualização falhou pouco antes de procurar por pacotes obsoletos. Portanto, essa resposta parece incompleta. Isso não removerá todos os pacotes existentes do-release-upgrade, caso seja bem-sucedido.
Ruslan
2

Eu acredito que o "Remover pacotes obsoletos", na verdade, apenas executa um sudo apt-get autoremove. Experimente, veja se ajuda.

Dan Johansen
fonte
2
sudo apt-get autoremoveé remover apenas uma pequena parte dos pacotes, que remove do-release-upgrade, por exemplo, do-release-upgradeno mesmo sistema remove cerca de 150 pacotes, mas apt-get autoremove- remove apenas cerca de 5 a 10 pacotes.
Murz 26/10