nat*_*ath 12 security debian apt upgrade
有没有办法只使用 apt 列出或安装安全升级?
如果我列出升级:
apt list --upgradable
Run Code Online (Sandbox Code Playgroud)
我也可以在不知道软件包和库的情况下看到哪些升级是相关的安全升级。
此外,是否有一个选项可以通过跳过任何其他选项来仅应用这些选项,以便下次运行时再次提示与安全无关的升级apt upgrade?
apt不能(还)提供您想要的信息。aptitude可以,尽管有点令人困惑:
aptitude search '~U ~ODebian' -F "%p %O"|awk '/Debian-Security/ {print $1}'
Run Code Online (Sandbox Code Playgroud)
这会~U从官方 Debian 存储库 ( ~ODebian) 中搜索所有可升级 ( ) 软件包,并显示它们的软件包名称 ( %p) 和“来源” ( %O)。后者实际上显示了存储库标签,即 Debian 9 安全存储库的“Debian-Security:9/stable”。您最终会得到安全存储库中的可升级包名称列表。
有多种方法可以只安装安全升级,但没有一种是理想的。
aptitude的文本界面只允许应用安全升级,只需滚动到“安全更新”标题(应该是第一个)并点击+。
您可以提供上面提取的软件包列表apt以安装升级:
aptitude search '~U ~ODebian' -F "%p %O" |
awk '/Debian-Security/ {print $1}' |
xargs apt-get install --only-upgrade
Run Code Online (Sandbox Code Playgroud)
这具有清除升级包上的“自动安装”标记的不幸副作用。
您可以使用unattended-upgrades,其默认操作是仅应用安全升级:
unattended-upgrades -v
Run Code Online (Sandbox Code Playgroud)
如果您不想自动安装升级,则需要禁用unattended-upgrades的日常 cron 作业。
要显示安全更新,您可以使用:
apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++'
Run Code Online (Sandbox Code Playgroud)
仅应用 1 个软件包的安全更新:
apt-get install --only-upgrade pckg_name
Run Code Online (Sandbox Code Playgroud)
仅应用列表中的安全更新:
list=$(apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++')
apt-get install --only-upgrade $list
Run Code Online (Sandbox Code Playgroud)