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

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

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

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

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

我已经看过 apt-python 绑定,但它们似乎有很高的学习曲线,并且它们似乎也发生了很多变化——我想要一些至少可以像 lucid 一样工作的东西,而不需要在不同的 Ubuntu 版本上做不同的事情。

答案1

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

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

如果不需要重新启动,则不会有任何输出。

答案2

为什么你不能运行它?

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

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

答案3

当我在最小 docker 容器内搜索用于检查更新的脚本方法时,我发现了一条注释/usr/lib/update-notifier/apt-check

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

这允许脚本更新检查,而无需安装程序update-notifier-common

答案4

您可以使用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--> 有重要更新可用

参考:

相关内容