我需要列表(不计算或安装)Ubuntu 14.04 系统上所有待处理的安全更新。我已阅读帖子如何使用 apt-get 创建仅安全更新的列表?并且其接受的答案(apt-show-versions | grep upgradeable | grep security
)确实给了我一个列表。
但是,该命令列出了 62 个待处理的安全更新。 /usr/lib/update-notifier/apt-check
告诉我有 75 个待处理的安全更新,但似乎没有办法列出它们。我该如何协调这两个数字?这两个命令中是否有一个执行了我想要以外的操作?
答案1
apt list --upgradable
列出所有可用的更新apt list --upgradable | grep "\-security"
列出所有安全更新。apt list --upgradable 2>/dev/null | grep "\-security" | wc -l
计算可用的安全更新数量。并将 stderr (如“WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
”) 重定向为 null
答案2
如果您只想快速完成一次,而不是创建单独的存储库并编写一些自动化脚本等。如果您不应该在审核系统或其他情况下进行更改,那么这很好。
这两个命令将输出列表。通过管道传输到 wc -l 以查看落后多少。;-)
grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -oDir::Etc::SourceParts=/some/valid/dir/false -s
对于较旧的发行版仍然有效,或者如果你关闭了更新存储库,但启用了安全性:
sudo apt-get upgrade -s | grep ^Inst | grep -i security
答案3
必须有一种方法来请求有多少个软件包可更新以及有多少个安全更新现在,但如果你满足于每天问一次,你可以简单地阅读文件/var/lib/update-notifier/更新可用,似乎每天都会由脚本更新/etc/cron.daily/update-notifier-common属于包更新通知程序通用
例子:
$ sudo cat /var/lib/update-notifier/updates-available
355 packages can be updated.
1 update is a security update.
测试地点:
- Ubuntu 14.04 LTS
- Ubuntu 16.04 LTS
- Ubuntu 18.04 LTS
问候,
/天使
答案4
这里给出的其他答案并非都列出了相同的安全升级。
Ubuntu 有两种标准的软件包升级策略:apt-get upgrade
比 更为保守apt-get dist-upgrade
。后者通常会升级更多软件包,并且可能包含前者忽略的安全升级。
登录时显示的通知(默认)是输出的缓存副本apt-check
:
$ /usr/lib/update-notifier/apt-check --human-readable
92 packages can be updated.
3 updates are security updates.
这些数字统计将要升级的软件包apt-get dist-upgrade
;您可以按如下方式列出这些安全升级:
sudo apt-get --no-download -s dist-upgrade -V | awk '/^Inst.*security/ {print $2}'
或者
apt-get -s dist-upgrade -V | awk '/^Inst.*security/ {print $2}'
要查看安全升级apt-get upgrade
,请执行以下操作
apt-get -s upgrade -V | awk '/^Inst.*security/ {print $2}'
或者
apt list --upgradable
默认情况下,unattended-upgrades
仅运行upgrade
,而不是dist-upgrade
。
这也解释了为什么unattended-upgrades
即使配置为自动安装安全升级,也并不总是安装报告的所有安全升级apt-check
。
所有这些工具都使用本地包索引 - 因此要检查主机正在使用的 Ubuntu 镜像的状态,请首先使用 进行更新 sudo apt update
。
原则上,镜子可能会过时,因此如果您想在源代码处检查,您需要在 Launchpad 上检查 - 至少对于 Ubuntu 分发的软件包。