Jawaban:
Sebagai alternatif untuk jawaban lgarzo, Anda dapat mengambil dari grep
mana Anda tertarik /var/log/dpkg.log
. Misalnya, jika Anda ingin melihat semua yang Anda instal atau tingkatkan kemarin, Anda dapat menjalankan:
cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "
Satu hal yang perlu diperhatikan: ini juga akan mencantumkan paket yang diinstal secara manual ( sudo dpkg -i ...
), yang tidak akan muncul dalam riwayat apt.
Bahkan lebih baik menggunakan zgrep jika sudah diinstal sehingga Anda dapat menemukan baris dalam file yang di-gzip juga
zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*
Sekarang dimungkinkan untuk melakukan ini melalui pusat perangkat lunak juga! Pergi ke Riwayat dan Anda dapat menampilkan semua pembaruan dan instalasi Anda.
Menjadi bermanfaat bagi kita untuk memiliki jawaban yang sedikit lebih mudah dan akurat untuk pertanyaan "kapan terakhir kali kita menambal hal ini?". Jadi saya menyatukan ini. Saya mengujinya pada 12,04 dan 14,04 dan 16,04. Ini mengembalikan jawaban yang cukup akurat untuk pertanyaan itu. Catatan: "cukup akurat" mungkin tidak "sepenuhnya akurat". Catatan: "hanya untuk pertanyaan itu".
keluaran sampel:
xenial% 9: ./linuxpatchdate
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2
subrutin dan 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";
}