有没有办法仅使用 apt 列出或安装安全升级?
如果我列出升级:
apt list --upgradable
我也可以看看吗不知道与升级相关的包和库安全升级。
此外,是否有一个选项可以仅通过跳过任何其他选项来应用这些选项,因此与安全无关的升级下次运行时会再次提示吗apt upgrade
?
答案1
apt
无法(尚)提供您想要的信息。aptitude
尽管有些令人困惑,但可以:
aptitude search '~U ~ODebian' -F "%p %O"|awk '/Debian-Security/ {print $1}'
~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
这会带来不幸的副作用,即清除升级包上的“自动安装”标记。
您可以使用
unattended-upgrades
,其默认操作是仅应用安全升级:unattended-upgrades -v
如果您不希望自动安装升级,则需要禁用
unattended-upgrades
的每日 cron 作业。
答案2
要显示安全更新,您可以使用:
apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++'
仅应用 1 个程序包的安全更新:
apt-get install --only-upgrade pckg_name
仅应用列表中的安全更新:
list=$(apt-get --just-print upgrade | grep -i security | awk '{print $2}' | awk '!seen[$0]++')
apt-get install --only-upgrade $list