如何从命令行快速获取软件包最近更新的原因?

有没有一个命令行命令可以快速确定软件包更新的原因?最好是一个命令,可以将所有相关信息的URL集合输出。
例如(很长的例子 - 抱歉),今天我的所有系统都更新了这5个软件包:
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be upgraded:
  login openssh-client openssh-server openssh-sftp-server passwd
5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,977 kB of archives.
After this operation, 24.6 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main login amd64 1:4.1.5.1-1ubuntu9.2 [301 kB]
Get:2 http://archive.ubuntu.com/ubuntu/ trusty-updates/main passwd amd64 1:4.1.5.1-1ubuntu9.2 [759 kB]
Get:3 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-sftp-server amd64 1:6.6p1-2ubuntu2.6 [34.2 kB]
Get:4 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-server amd64 1:6.6p1-2ubuntu2.6 [321 kB]
Get:5 http://archive.ubuntu.com/ubuntu/ trusty-updates/main openssh-client amd64 1:6.6p1-2ubuntu2.6 [562 kB] Preconfiguring packages ...
Fetched 1,977 kB in 3s (506 kB/s)
(Reading database ... 88021 files and directories currently installed.) Preparing to unpack .../login_1%3a4.1.5.1-1ubuntu9.2_amd64.deb ...
Unpacking login (1:4.1.5.1-1ubuntu9.2) over (1:4.1.5.1-1ubuntu9.1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Setting up login (1:4.1.5.1-1ubuntu9.2) ...
(Reading database ... 88021 files and directories currently installed.) Preparing to unpack .../passwd_1%3a4.1.5.1-1ubuntu9.2_amd64.deb ...
Unpacking passwd (1:4.1.5.1-1ubuntu9.2) over (1:4.1.5.1-1ubuntu9.1) ...
...

我在Ubuntu安全通告(USN)页面上没有看到任何明显相关的内容,这通常是我首选的地方。这类更新(登录、密码和OpenSSH)往往与安全有关,但表面上看似乎不是这种情况。
apt-cache show login

显示了一个 'http://pkg-shadow.alioth.debian.org/' 的资源,它表示自2014年5月9日以来尚未更新父级 'shadow' 包。好的,不确定为什么 apt-cache show 中没有嵌入到 Launchpad.net 的链接,但无论如何。特别查看 Launchpad 上的 'shadow' 包 'https://launchpad.net/ubuntu/+source/shadow',寻找软件包版本 '1:4.1.5.1-1ubuntu9.2',我看到了更改日志:
18 hours ago

Changelog

shadow (1:4.1.5.1-1ubuntu9.2) trusty; urgency=medium

  * debian/control, debian/rules: re-enable libaudit support. (LP: #1478087)

 -- Mathieu Trudel-Lapierre <email address hidden>  Fri, 22 Jan 2016 11:21:57 -0500

它链接到错误报告#1478087。反过来,这个报告讨论了“libaudit”,它用于跟踪登录尝试以及包更新的原因。

简而言之,经过大约半小时的努力,我终于弄清楚了为什么发生了更新。正如我最初怀疑的那样,这与安全有关,但到达这一认识点花费了太长时间。这又让我回到了最初的问题,即:如何从命令行快速获取软件包更新的原因?


3运行 apt-get changelog pkgname - mikewhatever
@mikewhatever - 如果你把那个作为答案,我会点赞的。它有效果,而且我之前不知道这个。 - Joe
@Joe 很高兴能帮忙。:~) - mikewhatever
1个回答

一个简单的方法来检查一个软件包为什么被更新是查看它的变更日志。
apt-get changelog pkgname

例如,这是openssh-client的当前变更日志。
$ apt-get changelog openssh-client

openssh (1:5.9p1-5ubuntu1.8) precise-security; urgency=medium

  * SECURITY UPDATE: information leak and overflow in roaming support
    - debian/patches/CVE-2016-077x.patch: completely disable roaming option
      in readconf.c.
    - CVE-2016-0777
    - CVE-2016-0778

 -- Marc Deslauriers <marc.deslauriers@ubuntu.com>  Wed, 13 Jan 2016 10:49:17 -0500

openssh (1:5.9p1-5ubuntu1.7) precise-security; urgency=medium

...

+1如约。为了锦上添花:有没有办法在安装更新之前就做到这一点 - 以查看我是否真的需要它等等 - 比如我有一个修改过的版本,想知道是否值得麻烦地重新应用修改到新版本上。 - Joe
该命令将显示存储库中最新版本的更改日志,无论是否已安装。 - mikewhatever