È possibile ottenere un elenco dei pacchetti installati più di recente?


157

È possibile ottenere un elenco di pacchetti installati di recente tramite apt-get?



1
Ora, se solo qualcuno mi dicesse come elencare i pacchetti installati manualmente che non ho già rimosso. Sospiro, Linux.
Aleksandr Dubinsky,

1
@AleksandrDubinsky apt-mark showmanual | lessnon lo fa?
GKFX,

@GKFX Intendevo nel contesto dei pacchetti installati di recente.
Aleksandr Dubinsky,

@AleksandrDubinsky Dovresti usare comm -12 a bcon auna copia ordinata di apt-mark showmanuale bun elenco ordinato da una delle risposte di seguito.
GKFX,

Risposte:


180

Comando per elencare i pacchetti installati di recente che sono stati installati tramite qualsiasi metodo ( apt-get, Software Center et al.):

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

Esempio di output:

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

È possibile eseguire questo comando per elencare solo i nomi dei pacchetti installati di recente,

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

Comando per elencare la cronologia di apt-get(NOTA: questo non elenca le dipendenze installate, elenca semplicemente i apt-getcomandi precedenti che sono stati eseguiti):

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

Esempio di output:

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

il problema con synaptic è che non mostra cosa fai con aptitude, apt-get e dpkg, per questo motivo +1 per questa opzione
hhlp

Questo comando non mostrerà gli aggiornamenti. Utilizza il centro software per vedere tutto.
HDave

1
Potrebbe essere meglio salvare un file di testo come questocat /var/log/apt/history.log | grep "\ install\ " > install.log
CrandellWS,

4
grep " install " /var/log/dpkg.logsarà sufficiente. Non c'è bisogno di usare cat. Si veda anche questo .
agosto

1
si noti che questo sembra trovare solo i pacchetti che sono stati appena installati. I pacchetti per i quali è stata installata una nuova versione appaiono come upgradeindpkg.log
Andre Holzner,

14

Il Software Center di Ubuntu mostra l'intera cronologia di tutti i pacchetti che sono stati installati / aggiornati / rimossi. Fai clic su "Cronologia" nella parte inferiore dell'elenco a sinistra.


4
Questo pulsante della cronologia è ora nella parte superiore della GUI e può mostrare i pacchetti e gli aggiornamenti installati. Questa dovrebbe essere la risposta accettata alla domanda in quanto è l'unica risposta che funziona per gli aggiornamenti.
HDave

Questa domanda non specifica un ambiente desktop (GUI), ma la risposta accettata è valida sia in scenari GUI che non.
msanford,

@HDave Sicuramente non vero, dpkg.logregistra gli aggiornamenti.
GKFX,

10

Per vedere anche i pacchetti meno recenti ordinati in base al momento dell'installazione:

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

E per i pacchetti installati molto tempo fa:

gunzip -c `ls -tr /var/log/dpkg.log.*.gz` | grep " install "

Ho trovato un pacchetto installato 2 giorni fa in /var/log/dpkg.log, ma non in /var/log/apt/history.log. Ancora non so perché ...
Samuel Li

5

Il seguente trucco risponde alla richiesta di Aleksandr Dubinsky di limitare questo ai pacchetti installati manualmente:

comm -12 <(apt-mark showmanual | sort) <(grep " install " /var/log/dpkg.log | cut -d " " -sf4 | grep -o "^[^:]*" | sort)
  • comm -12 elenca le linee comuni a due file ordinati.
  • <(command)si espande nel nome di un file contenente l'output di command.
  • apt-mark showmanualelenca i pacchetti installati manualmente; vale a dire. quelli che non dovrebbero mai essere rimossi automaticamente.
  • grep " install " /var/log/dpkg.log è tratto dalla risposta accettata.

Un'alternativa, che mostra più informazioni, in ordine cronologico e accede a tutti i registri disponibili, è:

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 i risultati a nuove installazioni. Ad esempio, è possibile utilizzare grep per limitare la ricerca a un periodo di tre mesi aggiungendo grep 2016-0[567]alla prima pipeline; è molto flessibile.


Questo si sta avvicinando. Cose che potrebbero essere migliorate: 1) mostra i pacchetti in ordine cronologico, 2) mostra più dettagli come la data / ora di installazione, la versione, forse anche la dimensione 3) mostra tutti i pacchetti installati dall'installazione del sistema operativo.
Aleksandr Dubinsky,

Sorprendente! Ti dispiace se pulisco la tua risposta per essere più conciso con più spiegazioni su ciascun comando?
Aleksandr Dubinsky,

@AleksandrDubinsky Grazie per la modifica; Ho corretto la descrizione in modo che corrisponda alle modifiche apportate.
GKFX,

Ti dispiace se rimuovo il rumore "seguente trucco risponde alla richiesta di Aleksandr Dubinsky", il primo comando che non è utile, metto una buona intestazione, metto il comando principale in cima, aggiungi l'output di esempio e provo a descrivere tutti i comandi coinvolti?
Aleksandr Dubinsky,

1
C'è un bug nell'ultimo comando, perché grep -Ftrova corrispondenze parziali. Ad esempio, se python3installato, corrisponderà anche a tutte le librerie python3 ( python3-click-package) incluse quelle che non sono più installate. Inoltre, grep -Fwnon aiuta perché -è una parola limite.
Aleksandr Dubinsky,

5

Tutto su una riga; per uso comando

Seleziona e stampa solo i nomi dei pacchetti installati di recente, tutti su una riga.

Per fare ciò, modifica la risposta più votata a:

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

Ciò si traduce in una singola riga di nomi di pacchetti. Tale riga può essere facilmente aggiunta a un sudo apt-get purgecomando.

Esempio di output

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

Elenco dei pacchetti uno sotto l'altro

A grande richiesta, ecco una versione leggermente adattata per elencare i pacchetti uno sotto l'altro:

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

Non analizzare l'output del catcomando. E che dire di questo awk '$3~/^install$/ {print $4;}' /var/log/dpkg.log?
Avinash Raj,

@AvinashRaj Il tuo awkcomando stampa i pacchetti uno sotto l' altro; il mio uno dopo l' altro. Ecco perché un esempio di output potrebbe essere utile di volta in volta.
Serge Stroobandt,

2

Esiste un pacchetto chiamato wajig Dai un'occhiata alla riga di comando, è la prima cosa che installo ora. Come aptitude, tranne per il fatto che funziona come ci si aspetterebbe che funzioni un dispatcher di comandi. Quindi davvero, non è come l'attitudine. I comandi di seguito sono solo un piccolo sottoinsieme.

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.

5
Non sono sicuro di come wajigaiuti a elencare gli ultimi pacchetti. Non vedo un comando per questo dopo una rapida occhiata attraverso i comandi. Sai qual è il comando?
Ehtesh Choudhury,

1

Oltre alla risposta di DoR, per coloro che preferiscono una GUI, c'è una voce di menu File -> Cronologia in Synaptic.


2
E come sottolinea rafalcieslak , questa funzione è disponibile anche in Software Center.
belacqua,

3
La storia di Synaptic mostra solo ciò che hai installato tramite Synaptic ... totalmente inutile.
HDave

1

Ecco alcune shell per elencare i file installati di dpkg. (che dovrebbe includere tutti i pacchetti apt / aptitude / software center / synaptic installati)

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

Ciò non include le informazioni sull'ora / data di installazione. Ma può essere utile nel determinare eventuali differenze nei pacchetti installati da os install a corrente.


-1

Il problema con la visualizzazione della cronologia di installazione in Software Center o Synaptic è che è difficile copiare / incollare i contenuti in un'e-mail (ad esempio quando si parla con il supporto tecnico!). L'alternativa è visualizzare il contenuto dei file di registro /var/log/aptcome root.


2
Solo per chiarire, per visualizzare semplicemente i contenuti /var/log/apt, NON è necessario essere root o con privilegi di amministratore.
Samuel Li
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.