Existem várias maneiras de mostrar os pacotes instalados manualmente apt, como:
apt-mark showmanual
Mas, às vezes, esse resultado é demais. Por exemplo, se o usuário instalou o pacote manualmente foo:
apt-get install foo
... e foodependia bare baz, em seguida apt-mark showmanual, produziria:
bar
baz
foo
Como podemos listar apenas os pacotes de nível superior instalados manualmente ( ie foo ) sem suas dependências ( ie não baz, nem bar)?
O código a seguir parece funcionar, mas a chamada GNU algumas centenas de vezes é muito lenta (três horas com uma CPU de 4 núcleos):parallelapt-rdepends
apt-mark showmanual |
tee /tmp/foo |
parallel "apt-rdepends -f Depends,PreDepends,Suggests,Recommends {} |
tail +2" 2> /dev/null |
tr -s ' ' '\n' |
grep -v '[():]' |
sort -Vu |
grep -wv -f - /tmp/foo