我有一个 Ubuntu 20.04 服务器,用于仍然需要特定的古老 java 版本 (8u252-b09) 的应用程序。271 及更高版本的任何内容都会破坏应用程序。
我使用 apt-mark 来保存包:
$ sudo apt-mark showhold
openjdk-8-jre-headless
Run Code Online (Sandbox Code Playgroud)
但是当我检查新软件包时,它仍然显示为可升级:
$ sudo apt update
...
$ sudo apt list --upgradable
Listing... Done
openjdk-8-jre-headless/focal-updates,focal-security 8u352...
Run Code Online (Sandbox Code Playgroud)
如果我apt upgrade现在运行,它将升级到新包并破坏应用程序。
我陷入了困境:我必须更新服务器(还有另一个待处理的重要安全更新),但我无法破坏应用程序。我知道我也可以一次手动更新一个可用的软件包,但这在服务器的整个生命周期中会很乏味,而且很可能有人最终会犯一个错误,只做一个基本的apt upgrade.
我如何确定该软件包不会升级?
被阻止的软件包将在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.
Run Code Online (Sandbox Code Playgroud)
如果您对此不确定,可以使用-s或--simulate选项运行升级命令:
apt upgrade -s
Run Code Online (Sandbox Code Playgroud)
将显示保留的软件包不会升级。
| 归档时间: |
|
| 查看次数: |
1391 次 |
| 最近记录: |