为什么“包可以更新”和“apt list –upgradeable”之间存在不匹配?

当我登录到我的Ubuntu VM时,收到以下消息,通知我8个软件包可以升级:

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-112-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 8 packages can be updated. 0 updates are security updates. Last login: Mon Jan 29 14:55:34 2018 from 172.16.117.1 

但是,当我发布一个apt list --upgradeable我得到26个包。

 $ apt list --upgradeable Listing... Done cloud-initramfs-copymods/xenial-updates,xenial-updates 0.27ubuntu1.5 all [upgradable from: 0.27ubuntu1.4] cloud-initramfs-dyn-netconf/xenial-updates,xenial-updates 0.27ubuntu1.5 all [upgradable from: 0.27ubuntu1.4] cpp-5/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] distro-info-data/xenial-updates,xenial-updates 0.28ubuntu0.7 all [upgradable from: 0.28ubuntu0.3] g++-5/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] gcc-5/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] gcc-5-base/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libasan2/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libatomic1/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libcc1-0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libcilkrts5/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libgcc-5-dev/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libgnutls-openssl27/xenial-updates 3.4.10-4ubuntu1.4 amd64 [upgradable from: 3.4.10-4ubuntu1.3] libgnutls30/xenial-updates 3.4.10-4ubuntu1.4 amd64 [upgradable from: 3.4.10-4ubuntu1.3] libgomp1/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libitm1/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] liblsan0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libmpx0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libquadmath0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libseccomp2/xenial-updates 2.3.1-2.1ubuntu2~16.04.1 amd64 [upgradable from: 2.2.3-3ubuntu3] libstdc++-5-dev/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libstdc++6/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libtsan0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] libubsan0/xenial-updates 5.4.0-6ubuntu1~16.04.6 amd64 [upgradable from: 5.4.0-6ubuntu1~16.04.5] python3-update-manager/xenial-updates,xenial-updates 1:16.04.10 all [upgradable from: 1:16.04.7] update-manager-core/xenial-updates,xenial-updates 1:16.04.10 all [upgradable from: 1:16.04.7] 

为什么不匹配?

他们在不同的时间运行。

项目会在所有时间(而不是每天一次)上传到存储库中,因此如果您在一天的不同时间比较–upgradable,那么随着时间的推移,您将获得越来越多的结果。

Apt不会在启动时检查包 – 这会不必要地延迟启动。 登录消息(当天消息[motd]的一部分)是在每日运行apt-daily期间生成的…在某个前一个会话期间(如昨天)。 生成并保存文本以供您下次登录。 这是一个提醒,缺乏准确性是一个众所周知的小问题。