¿Dónde puedo buscar mi historial de actualizaciones?

141

¿Hay algún lugar donde pueda ver qué actualizaciones he instalado?

vrcmr
fuente

Respuestas:

133

Puedes leer el history.logarchivo en /var/log/apt.

P.ej. less /var/log/apt/history.log.

lgarzo
fuente
45

En 10.10, el Centro de software de Ubuntu tiene una lista de todas las actualizaciones que ha descargado en el pasado.

ingrese la descripción de la imagen aquí

Isaias
fuente
44
+1 Esta respuesta también funciona en versiones más recientes.
James Bradbury
44
@JamesBradbury Esta opción ha desaparecido de Ubuntu 16.04 en adelante
feeela
25

/ var / log / apt contiene un historial de instalaciones de paquetes. Sin embargo, de forma predeterminada, se gestiona mediante logrotatela compresión y la caducidad de las entradas antiguas.

msw
fuente
Entonces, ¿es este el mejor lugar para que revise el historial en Ubuntu Server?
Brettski el
21

El 10.04 Haga clic en (Sistema> Administración> Administrador de paquetes Synaptic> Archivo> Historial)

vrcmr
fuente
11
Todo lo que obtengo es una lista de paquetes que instalé a través de Synaptic, no muestra todos los paquetes que actualicé a través de Update Manager.
Isaías el
19

Como alternativa a la respuesta de lgarzo, puede grepsaber qué le interesa /var/log/dpkg.log. Por ejemplo, si desea ver todo lo que instaló o actualizó ayer, puede ejecutar:

cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "

Una cosa a tener en cuenta: esto también enumerará los paquetes instalados manualmente ( sudo dpkg -i ...), que no se mostrarán en el historial de apt.

Incluso mejor use zgrep si está instalado para que también pueda encontrar líneas en archivos comprimidos

zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*
htorque
fuente
11

¡Ahora también es posible hacerlo a través del centro de software! Vaya a Historial y puede mostrar todas sus actualizaciones e instalaciones.

Historia del centro de software

Nick Pascucci
fuente
Supongo que es 10.10?
vrcmr
Seguro es. No creo que esto estuviera disponible en distribuciones anteriores ...
Nick Pascucci
3

Nos resultó útil tener una respuesta un poco más fácil y precisa a la pregunta "¿cuándo fue la última vez que reparamos esto?". Así que armé esto. Lo probé en 12.04 y 14.04 y 16.04. Devuelve respuestas razonablemente precisas para esa pregunta. Nota: "razonablemente exacto" probablemente no sea "completamente exacto". Nota: "solo para esa pregunta" solamente.

salida de muestra:

xenial% 9: ./linuxpatchdate 
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2

subrutinas y programa:

#!/usr/bin/perl

#------------------ subroutines --------------------

sub parseRecord {
    my $sdate = "";
    my $useful = 0;
    my $packages = 0;
    my @ptmp;
    while (my $recordLine = shift() ) {

       if ($recordLine =~ m/^Start-Date: ([\d\-]*).*/) {
          $sdate = $1;
       }
       elsif ($recordLine =~ m/^Commandline:.*upgrade/) {
          $useful = 1;
       }
       elsif ($recordLine =~ m/^Install: (.*)/) {
          $recordLine =~ s/\([^\)]*\)//g;
          @ptmp = split(/,/,$recordLine);
          $packages = $packages + $#ptmp + 1;
       }
       elsif ($recordLine =~ m/^Upgrade: (.*)/) {
          $recordLine =~ s/\([^\)]*\)//g;
          @ptmp = split(/,/,$recordLine);
          $packages = $packages + $#ptmp + 1;
       }
    }



    if ($useful) {
       return ($sdate,$packages);
    }
    else {
       return ("0",0);
    }
}


#------------------ main program --------------------

@lines = split(/\n/,`/bin/zcat -f /var/log/apt/history.log  /var/log/apt/history*gz`);
my %patchHash;
my $line;
my @inputLines;
my $pushDate = "";
my $pushNum = "";

foreach $line (@lines) {
    # all records separated by blank lines
    if ($line !~ /./) {
       # no-op
    }
    elsif ($line =~ m/^Start-Date: ([\d\-]*).*/) {
       @inputLines = ();
       push (@inputLines, $line);
    }
    elsif ($line =~ m/^End-Date: ([\d\-]*).*/) {
       ($pushDate, $pushNum) = parseRecord(@inputLines);
       if ($pushNum != 0) {
          $patchHash{$pushDate} += $pushNum;
       }
    }
    else {
       push (@inputLines, $line);
    }
}

foreach $pushDate (sort(keys(%patchHash))) {
   print "$pushDate $patchHash{$pushDate}\n";
}
JsinJ
fuente