GNU/Linux >> Linux Esercitazione >  >> Debian

Debian:elencare i pacchetti su un sistema basato su Apt per data di installazione?

Come faccio a elencare i pacchetti installati in base alla data di installazione?

Devo farlo su debian/ubuntu. Sarebbero utili anche le risposte per altre distribuzioni.

Ho installato un sacco di cose per compilare un determinato pezzo di codice e voglio ottenere un elenco dei pacchetti che ho dovuto installare.

Risposta accettata:

Le distribuzioni basate su RPM come Red Hat sono facili:

rpm -qa --last

Su Debian e altre distribuzioni basate su dpkg, anche il tuo problema specifico è facile:

grep install /var/log/dpkg.log

A meno che il file di registro non sia stato ruotato, nel qual caso dovresti provare:

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

In generale, dpkg e apt non sembra tenere traccia della data di installazione, vista la mancanza di un campo simile nella dpkg-query pagina man.

E alla fine il vecchio /var/log/dpkg.log.* i file verranno eliminati dalla rotazione del registro, quindi non è garantito che in questo modo venga fornita l'intera cronologia del sistema.

Un suggerimento che appare alcune volte (ad esempio questo thread) è di guardare il /var/lib/dpkg/info directory.
I file lì suggeriscono che potresti provare qualcosa come:

ls -t /var/lib/dpkg/info/*.list | sed -e 's/.list$//' | head -n 50

Per rispondere alla tua domanda sulle selezioni, ecco un primo passaggio.

crea l'elenco dei pacchetti in base alle date

$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%nt%y' {} ; | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,t,' | 
    sort > ~/dpkglist.dates

crea l'elenco dei pacchetti installati

$ dpkg --get-selections | sed -ne '/tinstall$/{s/[[:space:]].*//;p}' | 
    sort > ~/dpkglist.selections

unisciti alle 2 liste

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.dates 
    > ~/dpkglist.selectiondates

Per qualche motivo non sta stampando molte differenze per me, quindi potrebbe esserci un bug o un'ipotesi non valida su cosa --get-selections significa.

Ovviamente puoi limitare i pacchetti usando find . -mtime -<days> o head -n <lines> e cambia il formato di output come preferisci, ad es.

$ find /var/lib/dpkg/info -name "*.list" -mtime -4 | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.list$,,' | 
    sort > ~/dpkglist.recent

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.recent 
    > ~/dpkglist.recentselections

per elencare solo le selezioni che sono state installate (modificate?) negli ultimi 4 giorni.

Probabilmente potresti anche rimuovere sort comandi dopo aver verificato l'ordinamento utilizzato da dpkg --get-selections e fai il find comando più efficiente.


Debian
  1. Come elencare tutti o pacchetti specifici installati sul sistema Debian/Ubuntu Linux

  2. Aggiungi il dispositivo a blocchi cdrom all'elenco delle fonti di Debian apt

  3. Debian – Non è possibile avviare l'installazione di Devuan/debian?

  4. Debian:come convertire un sistema basato su Debian a 32 bit (x86) in 64 bit?

  5. Come elencare tutti i pacchetti in un repository su Ubuntu, Debian o Linux Mint [APT]

Come configurare sources.list su Debian 10

Come configurare sources.list su Debian 9

Come installare i pacchetti su Debian 10

Come elencare i pacchetti installati ordinati per data di installazione in Linux

Come elencare tutti i pacchetti aggiornabili in Ubuntu, Debian e Mint

Come rimuovere i pacchetti da Ubuntu e Debian