Não vi nenhuma solução aqui funcionando para mim, instalei alguns pacotes deb com o dpkg e alguns dos itens que estava procurando particularmente estavam ausentes.
Um forro bastante longo, mas conveniente para copiar e colar seria:
export DPKG_INITIAL=$(mktemp) DPKG_INSTALLED=$(mktemp) DPKG_CUSTOM=$(mktemp) DPKG_DEPS=$(mktemp) zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > $DPKG_INITIAL ; awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > $DPKG_INSTALLED ; comm -23 installed initial > $DPKG_CUSTOM ; function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; } ; echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > $DPKG_DEPS ; comm -23 custom deps > my-packages ; rm $DPKG_INITIAL $DPKG_INSTALLED $DPKG_CUSTOM $DPKG_DEPS
O comando acima salva uma lista de pacotes em um arquivo no seu diretório de trabalho atual chamado my-packages.
Explicação
Primeiro criei uma lista de pacotes que compunham a linha de base dos pacotes selecionados durante a instalação.
zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > initial
Seguido por uma longa lista de itens instalados em geral.
awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > installed
Em seguida, comparei os dois arquivos initiale installedliste apenas os itens exclusivos a serem instalados.
comm -23 installed initial > custom
A partir daí, eu queria filtrar as dependências; é neste ponto que esse método pode perder alguns pacotes desejados; ele desconhece as dependências que também são explicitamente instaladas.
Eu escrevi uma função rápida do bash para diminuir essas etapas no processamento desses itens.
function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; }
Depois disso, passei cada linha do meu arquivo custompara esta função com xargs.
echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > deps
Depois de ter a longa lista de todas as dependências possíveis (não tenho certeza de todas as declarações possíveis), obtive novamente as linhas que eram exclusivas para um único arquivo.
comm -23 custom deps > manual
E minha lista finalizada de pacotes agora está em um arquivo chamado manualdisponível para revisão.
somethinge nãosomething-commontão bem.