Wo kann ich meinen Update-Verlauf nachschlagen?


140

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

Antworten:


132

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

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


45

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

Bildbeschreibung hier eingeben


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.


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).


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*

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


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";
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.