如何从命令行查找需要更新的软件包数量?

我正在使用结构进行一些系统管理自动化,我希望能够监控需要在给定机器上升级的软件包数量。 这与我第一次登录计算机时可以看到的信息相同,即此部分:

35 packages can be updated. 22 updates are security updates. 

是否有一个我可以运行的命令(最好没有sudo )可以提供这些信息?

我看过apt-python绑定,但它们看起来有很高的学习曲线,而且它们似乎也有很多改变 – 我想要的东西至少可以在清醒时使用而不需要在不同的Ubuntu版本上做不同的事情。

要获得该输出,可以使用该命令

 sudo /usr/lib/update-notifier/update-motd-updates-available 

或者,如果你不想使用sudo

 cat /var/lib/update-notifier/updates-available 

说明

login应用程序显示文件/etc/motd中的输出,这是/var/run/motd的符号链接。

最后一个文件由mounted-varrun服务(请参阅/etc/init/mounted-varrun.conf )更新,调用/etc/update-motd.d/所有脚本,特别是

 /etc/update-motd.d/90-updates-available 

然后调用脚本

 /usr/lib/update-notifier/update-motd-updates-available 

此脚本执行各种操作,最后将输出写入文本文件

 /var/lib/update-notifier/updates-available 

编辑

关于问题的重启部分,请运行此命令

 /usr/lib/update-notifier/update-motd-reboot-required 

如果不需要重启,它将不会输出。

为什么你不能这样运行?

 /usr/lib/update-notifier/apt-check --human-readable 

这就是/ usr / lib / update-notifier / update-motd-updates-available收集信息的方式,至少在我正在使用的Ubuntu版本中(12.10)。

当我在/usr/lib/update-notifier/apt-check找到注释时,我还搜索了一个用于在最小的docker容器内进行更新检查的脚本方法:

 apt-get -s -o Debug::NoLocking=true upgrade | grep ^Inst 

这允许进行脚本式更新检查,而无需安装update-notifier-common软件包

那么你可以使用

 sudo apt-get update 

它不会给你列表……或者你可以使用system->administration->update manager但它是图形的:P