Güncelleme geçmişime nereden bakabilirim?


140

Hangi güncellemeleri yüklediğime bakabileceğim bir yer var mı?

Yanıtlar:


132

history.logDosyayı okuyabilirsiniz /var/log/apt.

Örneğin. less /var/log/apt/history.log.


45

10.10’da, Ubuntu Yazılım Merkezi geçmişte indirdiğiniz tüm güncellemelerin bir listesine sahiptir.

görüntü tanımını buraya girin


4
+1 Bu cevap daha yeni versiyonlarda da çalışıyor.
James Bradbury

4
@JamesBradbury Bu seçenek Ubuntu 16.04 tarihinde
açıklandı

25

/ var / log / apt, paket kurulumlarının bir geçmişini içerir. Ancak, varsayılan olarak, logrotateeski girdileri sıkıştıran ve yaşlandıran şekilde yönetilir .


Peki burası, Ubuntu Sunucusu'ndaki geçmişi kontrol etmek için en iyi yer mi?
Brettski

21

10.04'te (Sistem> Yönetim> Synaptic Paket Yöneticisi> Dosya> Geçmiş) öğesine tıklayın.


11
Tek aldığım Synaptic aracılığıyla yüklediğim paketlerin bir listesi, Güncelleme Yöneticisi ile güncellediğim paketleri göstermiyor.
İşçi

19

Lgarzo'nun cevabına alternatif olarak grep, ilgilendiğiniz şeyi yapabilirsiniz /var/log/dpkg.log. Örneğin, dün yüklediğiniz veya yükselttiğiniz her şeyi görmek isterseniz, koşabilirsiniz:

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

Unutulmaması gereken bir şey: bu ayrıca sudo dpkg -i ..., apt'nin tarihinde görünmeyen manüel olarak kurulmuş paketleri ( ) listeler .

Zgrep'i daha da iyi kullanın, eğer yüklüyse gzip dosyalarında da satırlar bulabilirsiniz.

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

11

Bunu artık yazılım merkezinden de yapmak mümkün! Geçmişe gidin ve tüm güncellemelerinizi ve kurulumlarınızı görüntüleyebilirsiniz.

Yazılım Merkezi Tarihi


Sanırım 10.10 mu?
vrcmr

Tabii ki. Bunun önceki dağıtımlarda mevcut olduğunu sanmıyorum ...
Nick Pascucci

3

"Bu şeyi en son ne zaman geçirdik?" Sorusuna biraz daha kolay ve doğru bir cevap vermemiz faydalı oldu. Bu yüzden bunu bir araya getirdim. 12.04 ve 14.04 ve 16.04'te test ettim. Bu soru için oldukça doğru cevaplar verir. Not: "makul derecede doğru" muhtemelen "tamamen doğru" değildir. Not: Sadece "bu soru için".

örnek çıktı:

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

alt yordamlar ve 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";
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.