Gdzie mogę sprawdzić historię aktualizacji?

140

Czy jest miejsce, w którym mogę sprawdzić, jakie aktualizacje zainstalowałem?

vrcmr
źródło

Odpowiedzi:

132

Możesz odczytać history.logplik w /var/log/apt.

Na przykład. less /var/log/apt/history.log.

lgarzo
źródło
45

W 10.10 Centrum oprogramowania Ubuntu zawiera listę wszystkich aktualizacji pobranych w przeszłości.

wprowadź opis zdjęcia tutaj

Izajasza
źródło
4
+1 Ta odpowiedź działa również na nowsze wersje.
James Bradbury,
4
@JamesBradbury Ta opcja zniknęła z Ubuntu 16.04 w dniu
opłata
25

/ var / log / apt zawiera historię instalacji pakietów. Jednak domyślnie jest zarządzany przez, logrotatektóry kompresuje i starzeje stare wpisy.

msw
źródło
Czy to najlepsze miejsce do sprawdzenia historii na Ubuntu Server?
Brettski,
21

W dniu 10.04 Kliknij (System> Administracja> Menedżer pakietów Synaptic> Plik> Historia)

vrcmr
źródło
11
Jedyne, co otrzymuję, to lista pakietów, które zainstalowałem przez Synaptic, nie wyświetla wszystkich pakietów, które zaktualizowałem za pomocą Menedżera aktualizacji.
Izajasza
19

Alternatywą dla odpowiedzi lgarzo jest to, grepco Cię interesuje /var/log/dpkg.log. Na przykład, jeśli chcesz zobaczyć wszystko, co wczoraj zainstalowałeś lub zaktualizowałeś, możesz uruchomić:

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

Należy zwrócić uwagę na jedną rzecz: wyświetli się także lista ręcznie zainstalowanych pakietów ( sudo dpkg -i ...), które nie pojawią się w historii apt.

Jeszcze lepiej użyj zgrep, jeśli jest zainstalowany, aby można było również znaleźć wiersze w plikach gzip

zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*
htorque
źródło
11

Można to teraz zrobić również za pośrednictwem centrum oprogramowania! Przejdź do Historii i możesz wyświetlić wszystkie swoje aktualizacje i instalacje.

Historia centrum oprogramowania

Nick Pascucci
źródło
Przypuszczam, że jest 10.10?
vrcmr
Jasne, że tak. Nie sądzę, by było to dostępne w poprzednich dystrybucjach ...
Nick Pascucci
3

Przydało się nam nieco łatwiejsze i dokładniejsze udzielenie odpowiedzi na pytanie „kiedy po raz ostatni załataliśmy tę rzecz?”. Więc złożyłem to w całość. Przetestowałem go 12.04, 14.04 i 16.04. Zwraca dość dokładne odpowiedzi na to pytanie. Uwaga: „dość dokładne” prawdopodobnie nie jest „całkowicie dokładne”. Uwaga: tylko „dla tego pytania”.

próbka wyjściowa:

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

podprogramy i 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";
}
JsinJ
źródło