Você pode usar um desses dois one-liners. Ambos produzem exatamente a mesma saída na minha máquina e são mais precisos do que todas as soluções propostas até agora (6 de julho de 2014) nesta questão.
Usando apt-mark
:
comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
Usando aptitude
:
comm -23 <(aptitude search '~i !~M' -F '%p' | sed "s/ *$//" | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)
Pouquíssimos pacotes ainda estão perdidos, embora eu suspeite que esses sejam realmente instalados pelo usuário, logo após a instalação, por meio da configuração de localização de idioma ou, por exemplo, através do instalador do codec Totem. Além disso, as versões do cabeçalho do Linux também parecem se acumular, mesmo que eu tenha instalado apenas o metapacote não específico da versão. Exemplos:
libreoffice-help-en-gb
openoffice.org-hyphenation
gstreamer0.10-fluendo-mp3
linux-headers-3.13.0-29
Como funciona:
- Obtenha a lista de pacotes instalados manualmente. Para o aptitude, o
sed
adicional retira os espaços em branco restantes no final da linha. - Obtenha a lista de pacotes instalados logo após uma nova instalação.
- Compare os arquivos, apenas imprima as linhas no arquivo 1 que não estão presentes no arquivo 2.
Outras possibilidades também não funcionam:
- Usando o arquivo
ubuntu-14.04-desktop-amd64.manifest
( aqui para o Ubuntu 14.04) de/var/log/installer/initial-status.gz
. Mais pacotes são mostrados como instalados manualmente, mesmo que não sejam. - Usando
apt-mark showauto
em vez de/var/log/installer/initial-status.gz
.apt-mark
, por exemplo, não inclui o pacote xserver-xorg, enquanto o outro arquivo faz.
Eu usei várias outras postagens do StackExchange como referências, mas nenhuma funciona tão bem quanto a solução acima:
Ambos listam mais pacotes do que a solução acima.
EDIT: O que fazer se você fez upgrade de uma versão anterior:
Se você atualizou o Ubuntu de um lançamento para o outro, provavelmente precisará ajustar esse processo. Nesse caso, eu verificaria o arquivo de manifesto da versão mais recente (veja acima) além do arquivo initial-status.gz da versão atual. Você pode facilmente fazer isso apenas adicionando outra comparação. Usar apenas o arquivo de manifesto não funcionará, pois o arquivo de manifesto infelizmente não contém tudo o que o arquivo initial_status.gz faz (eu verifiquei).