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


11

有没有办法仅使用apt列出或安装安全升级?

如果我列出以下升级:

apt list --upgradable

我还能在不知道软件包和库的情况下看到哪些升级是相关的安全升级

而且还有一个选项,可以通过跳过任何其他选项仅应用那些选项,因此下次我运行时会再次提示与安全性无关的升级apt upgrade


1
因此,您有两个问题,1.打印安全更新,2.仅更新选定的软件包,我知道sources.list中有6个链接,其中两个是与安全相关的回购链接,您可以看到将下载哪些可升级软件包从每个链接通过以下命令:sudo apt upgrade --no-upgrade --assume-no --print-uris
Brian SP2

1
但是关于第二个问题,显然您可以选择一个软件包,可以通过以下命令sudo apt upgrade --upgrade-only <软件包名称>进行升级,但这对我不起作用,对不起
Brian SP2

Answers:


7

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作业。


Aptitude的TUI似乎不再单独显示安全更新-一年前大约16.04,现在是18.04。其他人看到了吗?
格雷格·贝尔

@Greg它仍然对我有用(在Debian 10上),而且我看不到Ubuntu的任何变化都会影响到它。也许安全更新将自动应用之前,你可以看到他们在aptitude例如,unattended-upgrades...
斯蒂芬·基特

不,我的无人值守升级仅限于雷鸟,sshd和Firefox。奇怪的是,能力搜索'〜U'发现了很多东西。我可以看到它仍然适用于智能0.7.4; aptitude 0.8.10是Ubuntu 18.04附带的功能。您有什么版本?
格雷格·贝尔

@Greg我有0.8.11,它在各自的部分中显示了安全更新。显示是可配置的,这可能是这里的问题-当您按G时,将显示什么软件包分组机制?默认值为task,status,section(subdirs,passthrough),section(topdir)
史蒂芬·基特

此处的分组机制相同。而且我已经〜/ .aptitude来确保它不是我设置的愚蠢的东西。
格雷格·贝尔

5

要显示此安全更新,可以使用:

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.