Como apt-get autoremove
(sugerido por Aaron) removerá todos os "pacotes auxiliares", nada parece depender mais, às vezes você quer manter alguns deles por um motivo ou outro. Então, se isso diz respeito a você, outra possibilidade seria:
$(apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}')
Usando o Bash como seu shell, isso basicamente faria o seguinte:
-
apt-cache depends postgresql
listaria todos os pacotes dos quais o postgresql depende, incluindo o próprio postgresql. Mas cada linha seria parecida comdepends on: <package>
- então nós enviamos a saída para ... -
awk '{print "sudo apt-get remove "$NF}'
, que tomaria a última palavra em cada linha (que é o nome do pacote), e imprime depois de precedê-la com o nosso comando pretendido:sudo apt-get remove
(você poderia também usarapt-get purge
). - finalmente, usando a construção
$()
, aconselhamos o Bash a interpretar a saída como um comando a ser executado.
Você pode alternativamente substituir o terceiro passo e redirecionar a saída para um arquivo:
apt-cache depends postgresql|awk '{print "sudo apt-get remove "$NF}' >pg_remove.sh
E, em seguida, inspecionar o arquivo, opcionalmente, fazer alguns ajustes (como comentar / remover linhas onde você deseja manter um pacote) e, finalmente, executar o script usando
bash pg_remove.sh
Agora você tem muitas possibilidades para escolher:)
EDITAR: Verificação com meta-pacotes mais complexos, como, por exemplo, lubuntu-desktop, as declarações acima precisam ser refinadas:
apt-cache depends <packageName>|grep "Depends on"|awk '{print "sudo apt-get remove "$NF}'
O grep
é necessário para restringir o resultado às dependências (e pular as recomendações, etc.).
IMPORTANTE: Você deve usar isto apenas para metapacotes !!! caso contrário, você pode acabar com um disco vazio (por exemplo, postgresql-9.1 depende da libc6, e remover a libc6 certamente necessário por muitos pacotes).
Portanto, tenha cuidado e redirecione melhor para um arquivo primeiro (conforme explicado) e investigue antes da execução.