Gdzie mogę sprawdzić historię aktualizacji?


140

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

Odpowiedzi:


132

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

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


45

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

wprowadź opis zdjęcia tutaj


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.


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)


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*

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


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";
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.