Wo kann ich meinen Update-Verlauf nachschlagen?

140

Gibt es einen Ort, an dem ich nach Updates suchen kann, die ich installiert habe?

vrcmr
quelle

Antworten:

132

Sie können die history.logDatei einlesen /var/log/apt.

Z.B. less /var/log/apt/history.log.

lgarzo
quelle
45

In 10.10 hat Ubuntu Software Center eine Liste aller Updates, die Sie in der Vergangenheit heruntergeladen haben.

Bildbeschreibung hier eingeben

Jesaja
quelle
4
+1 Diese Antwort funktioniert auch bei neueren Versionen.
James Bradbury
4
@JamesBradbury Diese Option wurde von Ubuntu 16.04 auf
feeela
25

/ var / log / apt enthält einen Verlauf der Paketinstallationen. Standardmäßig wird jedoch verwaltet logrotate, wie alte Einträge komprimiert und veraltet sind.

msw
quelle
Ist dies der beste Ort für mich, um den Verlauf auf Ubuntu Server zu überprüfen?
Brettski
21

Klicken Sie unter 10.04 auf (System> Administration> Synaptic Package Manager> Datei> Verlauf).

vrcmr
quelle
11
Ich erhalte nur eine Liste der Pakete, die ich über Synaptic installiert habe. Es werden nicht alle Pakete angezeigt, die ich über den Update Manager aktualisiert habe.
Jesaja,
19

Als Alternative zu lgarzos Antwort können Sie aus, grepwas Sie interessiert /var/log/dpkg.log. Wenn Sie beispielsweise alles sehen möchten, was Sie gestern installiert oder aktualisiert haben, können Sie Folgendes ausführen:

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

Eines ist zu beachten: Hier werden auch manuell installierte Pakete ( sudo dpkg -i ...) aufgelistet , die in der apt-Historie nicht angezeigt werden.

Verwenden Sie zgrep noch besser, wenn es installiert ist, damit Sie auch Zeilen in gzippten Dateien finden können

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

Dies ist jetzt auch über das Software-Center möglich! Gehen Sie zum Verlauf und Sie können alle Ihre Updates und Installationen anzeigen.

Software Center-Geschichte

Nick Pascucci
quelle
Ich nehme an es ist 10.10?
vrcmr
Sicher ist. Ich glaube nicht, dass dies in früheren Distributionen verfügbar war ...
Nick Pascucci
3

Es hat sich für uns als nützlich erwiesen, die Frage "Wann haben wir das letzte Mal dieses Ding gepatcht?" Etwas einfacher und genauer zu beantworten. Also habe ich das zusammengestellt. Ich habe es am 12.04 und am 14.04 und am 16.04 getestet. Es gibt einigermaßen genaue Antworten auf diese Frage. Hinweis: "Einigermaßen genau" ist wahrscheinlich nicht "vollständig genau". Hinweis: Nur für diese Frage.

Beispielausgabe:

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

Unterprogramme und Programm:

#!/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
quelle