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


34

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

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

有没有我可以运行的命令(最好是没有该命令sudo),仅给出该信息?

我看过apt-python绑定,但是它们似乎有很高的学习曲线,而且它们似乎也发生了很大的变化-我希望某些东西至少可以追溯到清醒的时候,而无需在不同的Ubuntu版本上执行不同的操作。

Answers:


33

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

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

如果不需要重新启动,它将没有任何输出。


我正在检查运行11.04的计算机,byobu显示需要44个更新。cat您建议的文件为空,并且您首先指向的脚本在该计算机上不存在-是否需要安装某些软件包?我有/usr/lib/update-manager,但没有update-notifier目录。
KayEss 2011年

在11.04桌面上测试。这些文件属于update-notifier-common在全新安装中自动安装的文件(不是从10.10升级)。
enzotib

我看了更多的机器。对于那些/var/lib/update-notifier/apt-check看起来像这样的人,它会返回两个数字,即43; 24(43个更新,其中24个是安全数字),但即使这并没有出现在我的所有计算机上。我想这个文件可能已经在不同版本的软件包之间移动了。
KayEss 2011年

21

你为什么不能只运行这个?

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

至少在我使用的Ubuntu版本(12.10)中,/ usr / lib / update-notifier / update-motd-updates-available就是这样做的。


刚刚检查了Lucid,它也可以在这里工作
KayEss 2013年

2
它将其输出写入stderr。谁会这样做?
KayEss 2013年

2
最好选择这种方法,因为它完全绕开了整个update-motd软件包及其思想。感谢您提供直接命令。
jefflunt

3

当我在/usr/lib/update-notifier/apt-check以下位置找到评论时,我也在最小的Docker容器中搜索一种检查更新的检查方法:

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

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


0

您可以使用(Nagios)中的check_apt插件,其优点是根据更新是否可用获得不同的返回码:monitoring-plugins-basic

$ /usr/lib/nagios/plugins/check_apt
APT WARNING: 18 packages available for upgrade (0 critical updates). |available_upgrades=18;;;0 critical_updates=0;;;0
$ echo $?
1

返回码具有以下含义:

  • 0 ->没有可用于升级的软件包
  • 1 ->非关键包可供升级
  • 2 ->提供重要更新

参考文献:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.