답변:
lgarzo의 답변에 대한 대안으로 grep
에서 관심있는 것을 할 수 있습니다 /var/log/dpkg.log
. 예를 들어 어제 설치하거나 업그레이드 한 모든 것을 보려면 다음을 실행할 수 있습니다.
cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "
한가지주의해야 할 점 : 이것은 수동으로 설치된 패키지 ( sudo dpkg -i ...
) 도 나열 하며, 해당 패키지 는 apt 기록에 표시되지 않습니다.
zgrep이 설치되어 있으면 더 잘 사용할 수 있으므로 gzip 파일에서도 줄을 찾을 수 있습니다.
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";
}