มีสถานที่ที่ฉันสามารถดูอัพเดตที่ฉันติดตั้งไว้หรือไม่
มีสถานที่ที่ฉันสามารถดูอัพเดตที่ฉันติดตั้งไว้หรือไม่
คำตอบ:
คุณสามารถอ่านไฟล์ในhistory.log
/var/log/apt
เช่น. less /var/log/apt/history.log
.
/ var / log / apt มีประวัติของการติดตั้งแพ็คเกจ อย่างไรก็ตามโดยค่าเริ่มต้นจะมีการจัดการโดยlogrotate
ที่บีบอัดและอายุออกรายการเก่า
บน 10.04 คลิก (ระบบ> การดูแลระบบ> Synaptic Package Manager> ไฟล์> ประวัติ)
เป็นอีกทางเลือกหนึ่งสำหรับคำตอบของ lgarzo คุณสามารถทำgrep
สิ่งที่คุณสนใจ/var/log/dpkg.log
ได้ เช่นหากคุณต้องการเห็นทุกสิ่งที่คุณติดตั้งหรืออัปเกรดเมื่อวานนี้คุณสามารถเรียกใช้:
cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "
สิ่งหนึ่งที่ควรทราบ: นี่จะแสดงรายการแพ็คเกจที่ติดตั้งด้วยตนเอง ( sudo dpkg -i ...
) ซึ่งจะไม่แสดงในประวัติของ apt
ใช้ zgrep ยิ่งขึ้นหากติดตั้งไว้เพื่อให้คุณสามารถค้นหาบรรทัดในไฟล์ gzipped ได้เช่นกัน
zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*
ตอนนี้เป็นไปได้ที่จะทำผ่านศูนย์ซอฟต์แวร์เช่นกัน! ไปที่ประวัติและคุณสามารถแสดงการอัปเดตและการติดตั้งทั้งหมดของคุณ
มันมีประโยชน์สำหรับเราที่จะมีคำตอบที่ง่ายและแม่นยำขึ้นเล็กน้อยสำหรับคำถาม "เมื่อครั้งสุดท้ายที่เราทำการแก้ไขสิ่งนี้?" ดังนั้นฉันจึงรวมมันเข้าด้วยกัน ฉันทดสอบในวันที่ 12.04 และ 14.04 และ 16.04 ส่งคืนคำตอบที่ถูกต้องสมเหตุสมผลสำหรับคำถามนั้น หมายเหตุ: "ความแม่นยำอย่างสมเหตุสมผล" อาจไม่ใช่ "แม่นยำอย่างสมบูรณ์" หมายเหตุ: "สำหรับคำถามนั้น" เท่านั้น
ตัวอย่างผลลัพธ์:
xenial% 9: ./linuxpatchdate
2016-07-19 54
2017-02-24 363
2017-03-08 7
2017-03-09 2
รูทีนย่อยและโปรแกรม:
#!/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";
}