在哪里可以查看已安装的更新?

#1 楼

您可以在history.log中阅读/var/log/apt文件。

例如。 less /var/log/apt/history.log

评论


值得一提的是,该文件夹中可能存在较旧的历史记录文件,而不仅仅是/var/log/apt/history.log。也许像/var/log/apt/history.log.1.gz

– Max Bileschi
19年11月22日在16:17

甚至还在仿生上工作。以防万一有人因回应的年龄而感到恐惧。

– Alfabravo
20年5月20日在15:24

#2 楼

在10.10中,Ubuntu软件中心列出了您过去下载的所有更新。



评论


+1此答案也适用于最新版本。

–詹姆斯·布拉德伯里(James Bradbury)
2014年7月26日19:05

@JamesBradbury此选项已从Ubuntu 16.04移除

–feeela
18年4月3日在11:00

#3 楼

/ var / log / apt包含软件包安装的历史记录。但是,默认情况下,它由logrotate管理,该压缩和老化旧条目。

评论


那么这是我查看Ubuntu Server历史记录的最佳场所吗?

–布雷特斯基
2011年4月6日17:26

#4 楼

在10.04上,单击(系统>管理> Synaptic软件包管理器>文件>历史记录)

评论


我得到的只是通过Synaptic安装的软件包的列表,它没有显示我通过Update Manager更新的所有软件包。

–以赛亚书
2010-11-21在19:39

#5 楼

作为lgarzo答案的替代方法,您可以从grep中查询感兴趣的内容。例如,如果您想查看昨天安装或升级的所有产品,则可以运行:

cat /var/log/dpkg.log | grep "^2012-03-25.*\ installed\ "


注意事项:这还将列出手动安装的软件包(/var/log/dpkg.log) ,它不会显示在apt的历史记录中。

如果已安装zgrep,则最好使用zgrep,以便您也可以在gzip压缩文件中找到行。

zgrep "^2012-03-25.*\ installed\ " /var/log/dpkg.log*


#6 楼

现在也可以通过软件中心来执行此操作!转到“历史记录”,然后可以显示所有更新和安装。



评论


我想是10.10吗?

–vrcmr
10-11-21在19:36



当然可以我认为以前的发行版中没有这个功能...

–尼克·帕斯库奇(Nick Pascucci)
2010-11-21在19:53

#7 楼

对我们“何时才是最后一次修补此问题?”这个问题做出更简单,准确的回答对我们很有用。所以我把这放在一起。我在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 = ;
       }
       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";
}