É possível obter uma lista dos pacotes instalados mais recentemente?

157

É possível obter uma lista dos pacotes que foram instalados mais recentemente através do apt-get?

Olivier Lalonde
fonte
serverfault.com/questions/175504/…
Ciro Santilli escreveu
1
Agora, se alguém me dissesse como listar os pacotes instalados manualmente que ainda não removi. Suspiro, Linux.
Aleksandr Dubinsky
1
@AleksandrDubinsky apt-mark showmanual | lessnão faz isso?
GKFX
@GKFX eu quis dizer no contexto de pacotes recentemente instalados.
Aleksandr Dubinsky
@AleksandrDubinsky Você teria que usar comm -12 a bcom auma cópia ordenada de apt-mark showmanuale buma lista ordenada de uma das respostas abaixo.
GKFX

Respostas:

180

Comando para listar os pacotes recentemente instalados que foram instalados por qualquer método ( apt-get, Software Center et al.):

grep " install " /var/log/dpkg.log

Exemplo de saída:

2010-12-08 15:48:14 install python-testtools <none> 0.9.2-1
2010-12-08 15:48:16 install quickly-widgets <none> 10.09
2010-12-08 22:21:31 install libobasis3.3-sdk <none> 3.3.0-17
2010-12-09 12:00:24 install mc <none> 3:4.7.0.6-1
2010-12-09 23:32:06 install oggconvert <none> 0.3.3-1ubuntu1
2010-12-09 23:34:50 install mpg123 <none> 1.12.1-3ubuntu1
2010-12-09 23:34:52 install dir2ogg <none> 0.11.8-1
2010-12-09 23:34:53 install faad <none> 2.7-4
2010-12-09 23:34:54 install wavpack <none> 4.60.1-1
2010-12-10 11:53:00 install playonlinux <none> 3.8.6

Você pode executar este comando para listar apenas os nomes de pacotes instalados recentemente,

awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log

Comando para listar o histórico de apt-get(NOTA: isso não lista dependências instaladas, simplesmente lista os apt-getcomandos anteriores que foram executados):

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

Exemplo de saída:

Commandline: apt-get install libindicate-doc
Commandline: apt-get install googlecl
Commandline: apt-get --reinstall install ttf-mscorefonts-installer
Commandline: apt-get install valac libvala-0.10-dev
Commandline: apt-get install libgtksourceview-dev
Commandline: apt-get install python-sphinx
Commandline: apt-get install python-epydoc
Commandline: apt-get install quickly-widgets
Commandline: apt-get install libreoffice3* libobasis3.3*
Commandline: apt-get install mc
Isaías
fonte
o problema com o sináptico é que ele não mostra o que você faz com o aptitude, apt-get e dpkg, por este motivo +1 para esta opção
hhlp
Este comando não mostrará atualizações. Use o centro de software para ver tudo.
usar o seguinte comando
1
Talvez seja melhor salvar um arquivo de texto como estecat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS 16/13
4
grep " install " /var/log/dpkg.logserá suficiente. Não há necessidade de usar cat. Veja também isso .
augurar
1
note que isso parece apenas encontrar pacotes que foram instalados recentemente. Os pacotes para os quais uma nova versão foi instalada aparecem como upgradeemdpkg.log
Andre Holzner
14

O Centro de Software do Ubuntu mostra todo o histórico de todos os pacotes que foram instalados / atualizados / removidos. Basta clicar em "Histórico" na parte inferior da lista à esquerda.

Rafał Cieślak
fonte
4
Este botão de histórico está agora na parte superior da GUI e pode mostrar pacotes e atualizações instalados. Essa deve ser a resposta aceita à pergunta, pois é a única resposta que funciona para atualizações.
usar o seguinte código
Esta pergunta não especifica um ambiente de área de trabalho (GUI), mas a resposta aceita é válida nos cenários de GUI e não-GUI.
precisa saber é
@ HDave Definitivamente não é verdade, dpkg.logregistra atualizações.
GKFX
10

Para ver também pacotes mais antigos classificados por hora da instalação:

grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log

E para pacotes instalados há muito tempo:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "
Valentas
fonte
Encontrei um pacote instalado há 2 dias em /var/log/dpkg.log, mas não em /var/log/apt/history.log. Ainda não sei porquê ...
Samuel Li
5

O truque a seguir responde à solicitação de Aleksandr Dubinsky de limitar isso a pacotes instalados manualmente:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 lista linhas comuns a dois arquivos classificados.
  • <(command)expande para o nome de um arquivo que contém a saída de command.
  • apt-mark showmanuallista pacotes instalados manualmente; ie aqueles que nunca devem ser removidos automaticamente.
  • grep " install " /var/log/dpkg.log é retirado da resposta aceita.

Uma alternativa, mostrando mais informações, em ordem cronológica e acessando todos os logs disponíveis, é:

zcat -f /var/log/dpkg.log* | grep " install " | sort > /tmp/dpkg.log
grep -F "`comm -12 <(apt-mark showmanual | sort) <(cat /tmp/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)`" /tmp/dpkg.log | grep \<none\>

grep \<none\>limita os resultados a novas instalações. Você pode, por exemplo, usar grep para limitar a pesquisa a um período de três meses adicionando grep 2016-0[567]ao primeiro pipeline; é muito flexível.

GKFX
fonte
Isso está se aproximando. Coisas que poderiam ser melhoradas: 1) mostrar os pacotes em ordem cronológica, 2) mostrar mais detalhes como data / hora da instalação, a versão, talvez até o tamanho 3) mostrar todos os pacotes instalados desde a instalação do sistema operacional.
Aleksandr Dubinsky
Surpreendente! Você se importa se eu limpar sua resposta para ser mais conciso com mais explicações sobre cada comando?
Aleksandr Dubinsky
@AleksandrDubinsky Obrigado por essa edição; Corrigi a descrição para que corresponda às alterações que você fez.
GKFX
Você se importa se eu remover o ruído "a seguir o truque responde à solicitação de Aleksandr Dubinsky", o primeiro comando que não é útil, coloque um bom cabeçalho, coloque o comando principal em cima, adicione amostra de saída e tente descrever todos os comandos envolvido?
Aleksandr Dubinsky
1
Há um erro no último comando, porque grep -Fencontra correspondências parciais. Por exemplo, se python3estiver instalado, também corresponderá a todas as bibliotecas python3 ( python3-click-package), incluindo as que não estão mais instaladas. Além disso, grep -Fwnão ajuda porque -é um limite de palavras.
Aleksandr Dubinsky
5

Tudo em uma linha; para uso de comando

Selecione e imprima apenas os nomes dos pacotes instalados recentemente, todos em uma linha.

Para fazer isso, altere a resposta mais votada para:

cat /var/log/dpkg.log |awk '/ install / {printf "%s ",$4}'

Isso resulta em uma única linha de nomes de pacotes. Essa linha pode ser facilmente adicionada a um sudo apt-get purgecomando.

Saída de exemplo

libgnome-media-profiles-3.0-0 gstreamer0.10-gconf gnome-media gnome-menus librest-0.7-0 libgoa-1.0-common libgoa-1.0-0 libwacom-common libwacom2 ubuntu-docs apg libgnome-control-center1 libgnomekbd-common libgnomekbd7 gnome-control-center-data gnome-icon-theme-symbolic gnome-settings-daemon ubuntu-system-service gnome-control-center gnome-online-accounts gnome-session-bin indicator-power mousetweaks

Listando pacotes um abaixo do outro

Por demanda popular, aqui está uma versão ligeiramente adaptada para listar os pacotes um abaixo do outro:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'
Serge Stroobandt
fonte
Não analise a saída do catcomando. E isso awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj
@AvinashRaj Seu awkcomando imprime os pacotes um abaixo do outro; meu um próximo ao outro. É por isso que um exemplo de saída pode ser útil de tempos em tempos.
Serge Stroobandt
2

Há um pacote chamado wajig. Confira a linha de comando, é a primeira coisa que instalo agora. Como o aptitude, exceto que funciona como você esperaria que um despachante de comando funcionasse. Então, realmente, não é como aptidão. Os comandos abaixo são apenas um pequeno subconjunto.

wajig help
Common JIG commands:

 update         Update the list of downloadable packages

 new            List packages that became available since last update
 newupgrades    List packages newly available for upgrading

 install        Install (or upgrade) one or more packages or .deb files
 remove         Remove one or more packages (see also purge)

 toupgrade      List packages with newer versions available for upgrading
 upgrade        Upgrade all of the installed packages or just those listed

 listfiles      List the files that are supplied by the named package
 listnames      List all known packages or those containing supplied string
 whatis         For each package named obtain a one line description
 whichpkg       Find the package that supplies the given command or file

Run 'wajig -v commands' for a complete list of commands.
chiggsy
fonte
5
Não sei ao certo como wajigajuda para listar os pacotes mais recentes. Não vejo um comando para isso depois de uma análise superficial dos comandos. Você sabe qual é o comando?
Ehtesh Choudhury
1

Além da resposta do DoR, para aqueles que preferem uma GUI, existe um item de menu Arquivo -> Histórico no Synaptic.

JanC
fonte
2
E, como rafalcieslak ressalta, essa função também está disponível no Software Center.
belacqua
3
O histórico Synaptic mostra apenas o que você instalou via Synaptic ... totalmente inútil.
usar o seguinte comando
1

Aqui está um shell para listar os arquivos instalados do dpkg. (que deve incluir todos os pacotes instalados do apt / aptitude / software center / synaptic)

grep -A 1 "Package: " /var/lib/dpkg/status | \
grep -B 1 -Ee "ok installed|half-installed|unpacked|half-configured|config-files" -Ee "^Essential:yes" | \
grep "Package:" | cut -d\  -f2

Isso não inclui informações de hora / data da instalação. Mas pode ser útil para determinar quaisquer diferenças nos pacotes instalados da instalação do sistema operacional para a atual.

user2697383
fonte
-1

O problema com a visualização do histórico de instalação no Software Center ou Synaptic é que é difícil copiar / colar o conteúdo em um email (por exemplo, ao conversar com o suporte técnico!). A alternativa é visualizar o conteúdo dos arquivos de log /var/log/aptcomo raiz.

Ian Dickinson
fonte
2
Apenas para esclarecer, para visualizar apenas o conteúdo /var/log/apt, você NÃO precisa ser root ou ter privilégio de administrador.
Samuel Li