保留的包仍然显示为可升级

保留的包仍然显示为可升级

我有一个 Ubuntu 20.04 服务器,用于一个仍然需要特定旧 Java 版本 (8u252-b09) 的应用程序。任何 271 及更高版本的版本都会破坏该应用程序。

我使用 apt-mark 来保存包:

$ sudo apt-mark showhold
openjdk-8-jre-headless

但是当我检查新的软件包时,它仍然显示为可升级:

$ sudo apt update
...
$ sudo apt list --upgradable
Listing... Done
openjdk-8-jre-headless/focal-updates,focal-security 8u352...

如果现在运行它似乎apt upgrade会升级到新的包并破坏应用程序。

我陷入了困境:我必须更新服务器(还有另一个待处理的重要安全更新),但我不能破坏应用程序。我知道我也可以一次手动更新其他可用包,但这在服务器的整个生命周期中会很繁琐,而且很可能有人最终会犯错误,只做基本的apt upgrade

我如何确定这个包不会升级?

答案1

apt list --upgradable当有新版本可用时,会列出被阻止的软件包。

这些软件包不会被升级,apt upgrade因为它们被标记为保留。将软件包标记为保留的意思是防止自动安装、删除或升级软件包。请参阅man apt-mark

PREVENT CHANGES FOR A PACKAGE
       hold
           hold is used to mark a package as held back, which will prevent the package from
           being automatically installed, upgraded or removed.

如果您对此不确定,可以使用-s--simulate选项运行升级命令:

apt upgrade -s

将显示被保留的软件包将不会被升级。

相关内容