Where can I look up my update history?

Is there a place where I can look what updates I’ve installed?

Asked By: vrcmr

||

On 10.04 Click (System > Administration > Synaptic Package Manager > File > History)

Answered By: vrcmr

/var/log/apt contains a history of package installations. However, by default, it is managed by logrotate which compresses and ages out old entries.

Answered By: msw

In 10.10, Ubuntu Software Center has a list of all the updates you have downloaded in the past.

enter image description here

Answered By: Isaiah

It’s now possible to do this through the software center as well! Go to History and you can display all of your updates and installations.

Software Center History

Answered By: Nick Pascucci

You can read the history.log file in /var/log/apt.

Eg. less /var/log/apt/history.log.

Answered By: lgarzo

As an alternative to lgarzo’s answer, you can grep what you are interested in from /var/log/dpkg.log. E.g., if you want to see everything you installed or upgraded yesterday, you could run:

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

One thing to note: this will also list manually installed packages (sudo dpkg -i ...), which won’t show up in apt’s history.

Even better use zgrep if it’s installed so you can find lines in gzipped files as well

zgrep "^2012-03-25.* installed " /var/log/dpkg.log*
Answered By: htorque

It became useful for us to have a slightly more easy and accurate answer to the question "when was the last time we patched this thing?". So I put this together. I tested it on 12.04 and 14.04 and 16.04. It returns reasonably accurate answers for that question.
Note: "reasonably accurate" probably isn’t "completely accurate".
Note: "for that question" only.

sample output:

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

subroutines and program:

#!/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";
}
Answered By: JsinJ
Categories: Answers Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.