¿Es posible obtener una lista de los paquetes instalados más recientemente?

157

¿Es posible obtener una lista de los paquetes que se instalaron más recientemente a través de apt-get?

Olivier Lalonde
fuente
serverfault.com/questions/175504/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
1
Ahora, si alguien me dijera cómo enumerar los paquetes instalados manualmente que aún no he eliminado. Suspiro, Linux.
Aleksandr Dubinsky
1
@AleksandrDubinsky apt-mark showmanual | lessno lo hace?
GKFX
@GKFX quise decir en el contexto de los paquetes instalados recientemente.
Aleksandr Dubinsky
@AleksandrDubinsky Tendrías que usarlo comm -12 a bcon auna copia ordenada apt-mark showmanualy buna lista ordenada de una de las respuestas a continuación.
GKFX

Respuestas:

180

Comando para enumerar los paquetes instalados recientemente que se instalaron mediante cualquier método ( apt-get, Software Center et al.):

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

Salida de ejemplo:

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

Puede ejecutar este comando para enumerar solo los nombres de paquetes instalados recientemente,

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

Comando para enumerar el historial de apt-get(NOTA: esto no enumera las dependencias instaladas, simplemente enumera los apt-getcomandos anteriores que se ejecutaron):

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

Salida de ejemplo:

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
Isaias
fuente
El problema con Synaptic es que no muestra lo que haces con aptitude, apt-get y dpkg, por esta razón +1 para esta opción
hhlp
Este comando no mostrará actualizaciones. Use el centro de software para ver todo.
HDave
1
Podría ser mejor guardar un archivo de texto como estecat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS
44
grep " install " /var/log/dpkg.logSerá suficiente. No hay necesidad de usar cat. Ver también esto .
augurar
1
tenga en cuenta que esto solo parece encontrar paquetes que se instalaron recientemente. Paquetes para los que se ha instalado una nueva versión aparecen como upgradeendpkg.log
Andre Holzner
14

El Centro de software de Ubuntu muestra el historial completo de todos los paquetes que se instalaron / actualizaron / eliminaron. Simplemente haga clic en "Historial" al final de la lista a la izquierda.

Rafał Cieślak
fuente
44
Este botón de historial ahora se encuentra en la parte superior de la GUI y puede mostrar los paquetes instalados y las actualizaciones. Esta debería ser la respuesta aceptada a la pregunta, ya que es la única respuesta que funciona para las actualizaciones.
HDave
Esta pregunta no especifica un entorno de escritorio (GUI), pero la respuesta aceptada es válida tanto en escenarios con GUI como sin GUI.
msanford
@HDave Definitivamente no es cierto, dpkg.logregistra actualizaciones.
GKFX
10

Para ver también los paquetes más antiguos ordenados por hora de instalación:

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

Y para paquetes instalados hace mucho tiempo:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "
Valentas
fuente
Encontré un paquete que se instaló hace 2 días /var/log/dpkg.log, pero no en /var/log/apt/history.log. Todavía no sé por qué ...
Samuel Li
5

El siguiente truco responde a la solicitud de Aleksandr Dubinsky de limitar esto a los paquetes instalados manualmente:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 enumera líneas comunes a dos archivos ordenados.
  • <(command)se expande al nombre de un archivo que contiene la salida de command.
  • apt-mark showmanualenumera paquetes instalados manualmente; es decir. aquellos que nunca deberían ser eliminados automáticamente.
  • grep " install " /var/log/dpkg.log se toma de la respuesta aceptada.

Una alternativa, que muestra más información, en orden cronológico y accede a todos los registros disponibles, es:

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 los resultados a nuevas instalaciones. Podría, por ejemplo, usar grep para limitar la búsqueda a un período de tres meses agregando grep 2016-0[567]a la primera tubería; Es muy flexible.

GKFX
fuente
Esto se está acercando. Cosas que podrían mejorarse: 1) mostrar los paquetes en orden cronológico, 2) mostrar más detalles como la fecha / hora de instalación, la versión, tal vez incluso el tamaño 3) mostrar todos los paquetes instalados desde que se instaló el sistema operativo.
Aleksandr Dubinsky
¡Asombroso! ¿Te importa si limpio tu respuesta para ser más conciso con más explicaciones sobre cada comando?
Aleksandr Dubinsky
@AleksandrDubinsky Gracias por esa edición; He corregido la descripción para que coincida con los cambios que realizó.
GKFX
¿Te importa si elimino el ruido "siguiente truco responde a la solicitud de Aleksandr Dubinsky", el primer comando que no es útil, pon un buen encabezado, pon el comando principal en la parte superior, agrego una salida de muestra e intento describir todos los comandos ¿involucrado?
Aleksandr Dubinsky
1
Hay un error en el último comando, porque grep -Fencuentra coincidencias parciales. Por ejemplo, si python3está instalado, también coincidirá con todas las bibliotecas de python3 ( python3-click-package), incluidas las que ya no están instaladas. Además, grep -Fwno ayuda porque -es un límite de palabra.
Aleksandr Dubinsky
5

Todo en una línea; para uso de comando

Seleccione e imprima solo los nombres de paquetes instalados recientemente, todo en una línea.

Para hacerlo, cambie la respuesta más votada a:

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

Esto da como resultado una sola línea de nombres de paquetes. Tal línea se puede agregar fácilmente a un sudo apt-get purgecomando.

Salida de ejemplo

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

Listado de paquetes uno debajo del otro

Por demanda popular, aquí hay una versión ligeramente adaptada para enumerar los paquetes uno debajo del otro:

cat /var/log/dpkg.log |awk '/ install / {printf "%s\n",$4}'
Serge Stroobandt
fuente
No analice la salida del catcomando. ¿Y qué tal esto awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj,
@AvinashRaj Su awkcomando imprime los paquetes uno debajo del otro; el mío uno al lado del otro. Es por eso que un ejemplo de salida puede ser útil de vez en cuando.
Serge Stroobandt
2

Hay un paquete llamado wajig. Compruébalo en la línea de comando, es lo primero que instalo ahora. Al igual que aptitude, excepto que funciona como esperarías que funcione un despachador de comandos. Entonces, realmente, no es como la aptitud. Los comandos a continuación son solo un pequeño 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
fuente
55
No estoy seguro de cómo wajigayuda a enumerar los últimos paquetes. No veo un comando para eso después de una mirada superficial a través de los comandos. ¿Sabes cuál es el comando?
Ehtesh Choudhury
1

Además de la respuesta de DoR, para aquellos que prefieren una GUI, hay un elemento de menú Archivo -> Historial en Synaptic.

JanC
fuente
2
Y como señala rafalcieslak , esta función también está disponible en el Centro de software.
belacqua
3
El historial de Synaptic solo muestra lo que instaló a través de Synaptic ... totalmente inútil.
HDave
1

Aquí hay un shell para listar los archivos instalados de dpkg. (que debe incluir todos los paquetes instalados 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

Esto no incluye información de hora / fecha de instalación. Pero puede ser útil para determinar las diferencias en los paquetes instalados desde os install hasta current.

usuario2697383
fuente
-1

El problema con la visualización del historial de instalación en el Centro de software o Synaptic es que es difícil copiar / pegar el contenido en un correo electrónico (por ejemplo, cuando se habla con el soporte técnico). La alternativa es ver el contenido de los archivos de registro /var/log/aptcomo root.

Ian Dickinson
fuente
2
Solo para aclarar, para ver simplemente los contenidos /var/log/apt, NO es necesario que sea root o que tenga privilegios de administrador.
Samuel Li