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

Kay*_*Ess 34 command-line apt automation

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

35 packages can be updated.
22 updates are security updates.
Run Code Online (Sandbox Code Playgroud)

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

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

enz*_*tib 33

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

sudo /usr/lib/update-notifier/update-motd-updates-available
Run Code Online (Sandbox Code Playgroud)

或者,如果您不想使用sudo

cat /var/lib/update-notifier/updates-available
Run Code Online (Sandbox Code Playgroud)

解释

login应用程序显示在文件中找到的输出/etc/motd,即指向/var/run/motd.

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

/etc/update-motd.d/90-updates-available
Run Code Online (Sandbox Code Playgroud)

反过来调用脚本

/usr/lib/update-notifier/update-motd-updates-available
Run Code Online (Sandbox Code Playgroud)

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

/var/lib/update-notifier/updates-available
Run Code Online (Sandbox Code Playgroud)

编辑

关于问题的重启部分,运行这个命令

/usr/lib/update-notifier/update-motd-reboot-required
Run Code Online (Sandbox Code Playgroud)

如果不需要重启,它不会给出任何输出。


小智 21

为什么你不能运行这个?

/usr/lib/update-notifier/apt-check --human-readable
Run Code Online (Sandbox Code Playgroud)

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

  • 它将其输出写入 stderr。谁会那样做? (3认同)
  • 更喜欢这种方法,因为它完全回避了整个“update-motd”包及其思想。感谢您提供直接命令。 (2认同)