Answers:
使用无人值守升级应用程序。
sudo unattended-upgrade
这使您只能自动安装安全更新,但是如果需要,可以手动调用它。
apt-get upgrade -s | grep -i security
...是Nagios check-apt插件用来计算待处理的安全更新的方法,与您正在寻找的相似。
grep -i xenial-security
,它将误报减少到几乎为零。
grep Debian-Security
会更好吗?
regular;security
可用的更新数量很有用。-p
列出可用于更新的软件包名称的选项不能区分常规更新和安全更新(至少在16.04上)...因此,据我所知,这不是获取可用安全更新列表的可行方法。
在ubuntu上,您应该可以使用apt-check,它是使用可用的安全更新数量填充motd的工具。
--package-names
(-p
),但似乎没有区别常规更新和安全更新。
您可以使用以下命令获取列表:
sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
/dev/null
这样您就不会再抓东西了!
我有一个修改后的版本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
...
我相信回答OP提出的问题是如何查看软件包列表,而不是仅安装安全软件包。建立在@topdog的回答,您应该使用:
/usr/lib/update-notifier/apt-check -p
凡-p
国旗代表包
update-notifier-common
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.
这两个命令将吐出列表。用管道输送到wc -l看看后面有多少。;-)
grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s
对于较旧的发行版或已关闭更新存储库仍然有效,但是安全性为:
sudo apt-get upgrade -s| grep ^Inst |grep Security
-oDir::Etc::Sourcelist
选项似乎并未禁用标准存储库集。
我解决了在Ubuntu系统上修改apt-check脚本的问题。它只关心安全更新,如果已提供-p标志,则还显示软件包名称。
您可以在这里找到要点:https://gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b