インストールした更新プログラムを確認できる場所はありますか?
history.log
の/var/log/apt
ファイルを読むことができます。
例えば。 less /var/log/apt/history.log
。
/ var/log/aptには、パッケージのインストールの履歴が含まれています。ただし、デフォルトでは、logrotate
によって管理され、古いエントリを圧縮して期限切れにします。
10.04で(システム>管理> Synaptic Package Manager>ファイル>履歴)をクリックします
Lgarzoの答えに代わるものとして、/var/log/dpkg.log
からgrep
興味のあるものを見つけることができます。たとえば、昨日インストールまたはアップグレードしたすべてを表示したい場合は、次を実行できます。
cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "
注意すべき点が1つあります。これは、手動でインストールされたパッケージ(Sudo dpkg -i ...
)もリストしますが、これらはaptの履歴には表示されません。
Zgrepがインストールされている場合は、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";
}