Como posso obter uma lista de pacotes que instalei usando apt-get? [duplicar]

Esta pergunta já tem respostas aqui :

Comentários

  • ambas as respostas mencionam history.log arquivos em /var/log/apt/. É ' importante observar que, por padrão, o logrotate é configurado para manter apenas os últimos 12 meses desses arquivos. O mesmo é verdadeiro para the /dpkg.log arquivos em /var/log (que fornecem informações semelhantes em um formato (IMO) mais facilmente analisado). Edite /etc/logrotate.d/{apt,dpkg} para alterar a política de retenção do seu sistema.

Resposta

Você pode listar o pacote instalado usando apt usando o seguinte comando:

apt --installed list 

Edite

Use o seguinte comando para listar o pacote instalado por meio de apt-get:

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po "^Commandline: apt-get install (?!.*--reinstall)\K.*" 

Fonte: Askubuntu

Comentários

  • Como você afirmou, isso lista todos os pacotes instalados. Quero pacotes que instalei manualmente usando os comandos apt-get.
  • @ user598200 – Considere aceitar esta resposta. 🙂
  • Com base em esta resposta do askubuntu , chego a (zcat $(ls -tr /var/log/apt/history.log*.gz); cat /var/log/apt/history.log) 2>/dev/null | egrep '^(Commandline: apt(-get)? install)' | grep -v aptdaemon | egrep '^Commandline:'
  • zgrep -hPo '^Commandline: apt-get install (?!.*--reinstall)\K.*' /var/log/apt/history.log{.*.gz,} produz a mesma saída sem os desnecessários zcat e cat. se você não ' se preocupar com a ordem exata dos nomes dos pacotes na saída, /var/log/apt/history.log* servirá para o argumento do nome do arquivo.

Resposta

zgrep -h " install " /var/log/dpkg.log* | sort | awk "{print $4}" 

Isso lhe dará uma lista de pacotes que têm foram instalados, na ordem em que foram instalados.

De acordo com meu comentário, apenas os arquivos /var/log/dpkg.log* dos últimos 12 meses são mantidos por padrão. Para mudar isso, edite /etc/logrotate.d/dpkg. Por exemplo, altere rotate 12 para rotate 1200 para manter os últimos 1200 meses (100 anos) valendo – efetivamente para sempre, nunca exclua os registros antigos.

A propósito, se você quiser ver quando os pacotes foram atualizados, altere install para upgrade. por exemplo,

zgrep -h " upgrade " /var/log/dpkg.log* | sort 

mesmo para remove e purge.

Resposta

Se você deseja exibir apenas uma lista com os pacotes que possui instalado manualmente , você pode executar:

apt --installed list | grep -v automatic 

para não listar os pacotes sinalizados como instalados automaticamente

-v, --invert-match Invert the sense of matching, to select non-matching lines. 

Outra opção que não excluirá erroneamente um pacote infeliz com " automático " em seu nome está:

apt-mark showmanual 

Comentários

  • Curto e agradável, e classificado em ordem alfabética.
  • Se por acaso um nome de pacote contiver " automático ", ele será filtrado por grep.

Resposta

Isso se baseia em aptitude, mas o seguinte fornecerá uma lista de pa ckages que são instalados manualmente, ou seja, não são instalados apenas por causa da dependência:

aptitude search -F %p "~i!~M" 

Dependendo de como a imagem está configurada, provavelmente também incluirá alguns instalados pelo sistema básico. Você pode se livrar de uma parte razoável deles alternando-os para instalação automática e, em seguida, basta marcar como manuais os poucos que deseja manter, apesar de não ter nada dependendo deles. Isso é fácil de fazer com M dentro de aptitude em um sistema vazio.

Resposta

Use dpkg para listar todos os pacotes instalados em um sistema: dpkg --get-selections

Para listar todos os pacotes instalados usando apt-get veja /var/log/apt/history.log. Este registro também contém pacotes que você removeu. Você pode grep para as linhas que começam com Install:.

Comentários

  • Como você afirmou, isso lista todos os pacotes instalados. Quero pacotes que instalei manualmente usando os comandos apt-get.
  • @ user598200 Ah. Obrigado por esclarecer. Veja minha resposta editada. Não tenho certeza se apt-get tem essa funcionalidade. Mas sempre que você instala algo, ele é anexado ao arquivo de log que mencionei na resposta.
  • Obrigado.Posso passar por todos os /var/log/apt/history.log* arquivos e imprimir os nomes dos pacotes em um único acesso?
  • @ user598200 Você pode usar grep. grep "Install: package" /var/log/apt/history.log*

Resposta

Ubuntu 14.04 e superior usam apt list --installed para versões mais antigas, use dpkg --get-selections | grep -v deinstall

Resposta

Um pouco mais curto e classificado

gunzip -c /var/log/apt/history.log.*.gz | grep "apt-get install" | cut -f4- -d" " | tr " " $"\n" | sort -u 

Comentários

  • Alguma explicação do motivo disso melhor do que a resposta que @ GAD3R deu seria útil.
  • Em primeiro lugar, é ' s mais curto, em segundo lugar, a saída é classificada
  • A idéia em U & L é que você melhore sua resposta (ou pergunta, caso tenha postado uma) editando a postagem, em vez de ocultar informações valiosas nos comentários. Como eu cortaria e colaria o comando 26 bytes a menos não é tão interessante, mas o fato de sua saída ser classificada realmente pertence à própria resposta. Se tal melhoria foi uma reação a um pedido de esclarecimento, um simples " atualizou minha resposta " como comentário fará, o comentador ( neste caso, eu) serei notificado desse comentário. Acho que a concisão também é a causa de alguém rebaixar sua resposta.
  • Se você quiser jogar golfe, tente zgrep -Pho '(?<=apt-get install ).*' /var/log/apt/history.log.*.gz | tr ' ' $'\n' | sort -u.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *