Linux - 仅使用 apt 显示或升级安全更新

Linux - 仅使用 apt 显示或升级安全更新

有没有办法仅使用 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

相关内容