aptitude
pode te ajudar na maior parte do caminho com o recurso de pesquisa. Veja como você encontra tudo instalado que não era apenas uma dependência automática:
aptitude search -F "%p" "?installed ?not(?automatic)"
Isso não será ideal, alguns deles podem ser removidos, mas não conheço uma maneira simples de resolver isso. Talvez a resposta esteja em man aptitude
.
Pensando bem, com essa lista você pode percorrê-lo e encontrar os pacotes dependentes (não dependências) para cada um. Se um deles estiver na lista principal, remova o pacote atual da lista ... mas somente depois de ter analisado toda a lista ou você perderá intermediários em uma árvore dep de nível 3+.
Você encontra dependentes com uma consulta como esta:
aptitude search '~i~Dpackage'
Eu tentaria escrever o roteiro, mas estou digitando isso em um minúsculo teclado de telefone. Até eu tenho limites.
Edit: Depois de cinco minutos tentando dormir, comecei a atacar isso. algo assim deveria fazer o trabalho:
orig=$(aptitude search -F "%p" "?installed ?not(?automatic)")
newlist="";
for p in $orig; do
depended=0;
for dependant in 'aptitude search -F "%p" "~i~D$p"'; do
if [[ $orig == "* $dependant *" ]]; then
depended=1;
fi;
done;
if [[ $depended == 0 ]]; then
newlist="$newlist $p";
fi;
done;
echo $newlist
Note que isso leva muito tempo > para ser executado e pode ser exagerado (por exemplo, ele removerá algo que você instalou manualmente, que deseja instalar manualmente, se eles dependerem por outra coisa na lista $ orig que você talvez tenha instalado depois.