Como obter a lista de pacotes instalados sem dependências?

Como obter a lista de pacotes instalados sem dependências?

De alguma forma, o Software Center mostra uma lista bastante curta de pacotes instalados. Como obtê-lo em arquivo de texto?

Tentei:

> dpkg --get-selections|wc -l
3265

> aptitude search '~i!~M'|wc -l
1181

> dpkg -l | grep ^ii | sed 's_  _\t_g' | cut -f 2|wc -l
3076

> dpkg --get-selections | grep -v deinstall|wc -l
3076

> apt-mark showmanual|wc -l
1181

Eu sei que instalei algumas dezenas de pacotes, não milhares. Preciso na lista exatamente os pacotes que escolhi sem dependências para revisá-los.

ATUALIZAR

Muito obrigado a @kos, finalmente consegui a lista com esse comando:

> zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install \K.*' | tr ' ' '\n' | grep -v '\-\-reinstall'|grep -v '\-\-force-yes'|grep -v '\-y'|grep -v '\-f'|sort|uniq wc -l
103

Responder1

Isso não responde exatamente à pergunta: em vez disso, fornece um comando para listar todos os apt-get installcomandos já executados, juntamente com alguns conselhos sobre como analisar a lista ainda mais, a fim de obter uma lista de todos os apt-get installcomandos já executados, excluindo aqueles executados pela Ubiquity, já que a solução perfeita para esta tarefa parece não existir.

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*'
  • zcat /var/log/apt/history.log.*.gz: descompacta todos os aptlogs compactados /var/log/apt, concatena-os e imprime em stdout;
  • cat - /var/log/apt/history.log: anexa /var/log/apt/history.loge imprime em stdout;
  • grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*': seleciona apenas as linhas que começam com Commandline: apt-getcontendo installum espaço à esquerda e à direita e imprime o restante de cada linha selecionada em stdout;

Isto irá gerar a lista de todos os apt-get installcomandos já executados (a única saída indesejada poderia ser um comando apt-get-non- installmencionando um installpacote, mas esse pacote não existe (ainda?), pelo menos nos repositórios padrão);

Observação:Na minha instalação (Ubuntu 15.04 64 bits), os primeiros quatro comandos listados são aqueles executados pela Ubiquity durante a instalação; para excluí-los, você pode canalizar a saída para sed:

sed '1,4d'

Para que o finalaproximadocomando para Ubuntu 15.04 de 64 bits seria:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?= apt-get)(?=.* install ) \K.*' | sed '1,4d'

Responder2

manual do show do apt-mark

fornecerá uma lista de todos os pacotes instalados manualmente sem as dependências - o importante a observar é que também mostrará quais pacotes foram instalados durante a configuração do Ubuntu.

Para gravar a saída em um arquivo:

apt-mark showmanual > algum arquivo

Na verdade, existem muitas outras maneiras, como usar este comando

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) 

Embora eu não tenha absolutamente nenhuma ideia de como funciona o acima;)

Para visualizar os pacotes instalados por data:

Pacotes instalados por data use cat /var/log/dpkg.log | grep "\ install\ > somefile"
Pacotes instalados usando dpkguse ls -l /var/log/dpkg* > somefile- este é provavelmente o que você está procurando.

Para visualizar pacotes instalados usando dpkg:

Este arquivo contém as informações acima:/var/log/dpkg.log

Responder3

Na verdade, isso é mais complicado do que parece, e existem algumas perguntas semelhantes no Ask Ubuntu.

Descobri que olhando para /var/log/apt/history.logas versões compactadas mais antigas desse log, qualquer coisa instalada por um apt-get installcomando é listada como instalada por esse comando.

Então:

grep "apt-get install" /var/log/apt/history.log

Mostrará todos eles durante o período coberto pelo registro atual do histórico do apt. Você precisará dos gunzipseus logs mais antigos e grep-los para reunir todas as suas informações. Todos os comandos grep podem ser redirecionados para um arquivo de texto para fornecer uma boa lista.

Provavelmente, isso só será útil para o seu caso se o Software Center usar apt-get installdurante a instalação. Eu sei que o Software Center é um front-end, aptmas não tenho certeza se ele usa esse comando explicitamente.

Responder4

Este comando fornecerá uma lista de pacotes instalados manualmente, bem como aqueles onde suas dependências reversas "instaladas automaticamente" foram removidas (por exemplo, se você remover o metapacote ubuntu-server, suas dependências não serão mais marcadas como automáticas e serão agora esteja nesta lista):

apt list --installed | grep -v automatic

Em outras palavras, a lista acima retornará todos os pacotes sem dependências reversas ou onde também estão marcados como instalados manualmente.

informação relacionada