题 如何在Debian / Ubuntu的命令行中获取安全更新列表


在GUI工具中,您可以获得包含安全更新的列表包。可以在Debian或Ubuntu的命令行上完成吗?

通常我可能会使用“apt-get upgrade”来显示正在升级的内容,但我想知道哪些是安全更新。


17
2017-09-05 10:59






答案:


使用无人参与升级应用程序。

sudo unattended-upgrade

这使您只能自动安装安全更新,但您可以根据需要手动调用它。


4
2017-09-05 12:18



我喜欢这个答案,因为你实际上已经考虑过我可能会尝试做什么,无人值守 - 升级是我今天安装的尝试。 - Stephen Paulger
它实际上并没有回答这个问题。 - reinierpost
如果这是答案,那么问题就错了。至少,它是进化的,应该相应地进行编辑和/或标记为副本 askubuntu.com/questions/194/... - mc0e


apt-get upgrade -s | grep -i security

...是Nagios check-apt插件用于计算待定安全更新的内容,这与您正在寻找的类似。


29
2017-09-05 13:54



但它无法找到shellshock的bash安全更新? - linjunhalida
这会给名称中包含“security”的包带来误报,例如“xml-security-c-utils”,“debian-security-support”,“modsecurity-crs”,“node-security”等。 - Shnatsel
@Shnatsel进行命令行检查,这很容易......你可以很容易地看出它是否是误报。此外,如果你知道你的操作系统的当前名称,你可以写 grep -i xenial-security 它应该将误报减少到几乎为零。 - Alexis Wilke


在ubuntu上你应该能够使用apt-check,它是用你可用的安全更新数量来填充你的motd的。


10
2017-09-05 12:22



我在debian或ubuntu上看不到。 - Stephen Paulger
apt-check位于/ usr / lib / update-notifier /中。尝试/ usr / lib / update-notifier / apt-check --human-readable以获得简单的消息。 - u2702
我不相信这显示任何有用的东西。要获取列表,您需要添加 --package-names (-p),但它似乎没有区分定期更新和安全更新。 - Auspex


您可以使用此命令获取列表:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'

5
2017-12-09 08:28



您发送了所有输出 /dev/null 所以你不会碰到任何东西! - Auspex
@Auspex谢谢,修复。 - Fabrizio Regini
这看起来不可靠。它显示了所有需要更新的包。 - Dreaded semicolon
我想它会告诉你无人值守升级将要做什么,如果你把它配置为只做安全更新,也许这个配方可行。答案虽然充其量不完整。 - mc0e
今天我解决了这个需要修改一点apt-check的问题。检查这个要点: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b - Paolo Perego


我有一个修改过的版本 update-notifier 需要额外的开关: --security-package-names 它仅输出与安全相关的包名称。我把它作为一个要点(直到我在启动板的相关项目中创建合并请求)。在此之前,它可以运行如下:

curl -s https://gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

产量

这给出了格式的输出: 包裹名字安装版,和 候选版本

...
thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...

3
2017-07-06 23:32





基于Fabrizio Regini的上述答案。

对于12.04 /精确:

sudo unattended-upgrade --dry-run -d 2>&1 /dev/null | grep 'Checking' | grep security | awk '{ print $2 }'

对于14.04 / Trusty:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'

3
2017-07-22 18:54





我相信回答OP问的问题是如何看待 名单 包,而不是如何只安装安全包。建立在@topdog的答案你应该使用: /usr/lib/update-notifier/apt-check -p 在哪里 -p 国旗代表包


0
2017-07-09 21:11



这列出了所有包,而不仅仅是安全更新 - confiq
Debian Jessie似乎没有apt-check。它仍然在更新的Wheezy系统上,但新安装不再具有更新通知程序。你知道另一种选择吗? - jan
@jan它仍然存在,作为其中的一部分update-notifier-common - Auspex
@Auspex杰西不再存在这个包。只有 update-notifier 这是一个过时的过渡包 gnome-packagekit。看到 这里。 - jan
@jan抱歉,我接受了debian的话。我搜索了文件, packages.debian.org/... 它告诉我 You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results.,但是当你实际点击该结果的链接时,它会告诉你 Package not available in this suite. - Auspex