Yanıtlar:
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*
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.
"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";
}