我在 Ubuntu 20.04 上使用 Tomcat 9。
apt 安装 Tomcat 9.0.31,它有一个与 HTTPS 相关的错误,导致我们的 Web 应用程序无法正常运行。
为了解决这个问题,我正在手动将 Tomcat 更新到较新的版本 (9.0.40),通过从 Tomcat 网站下载 ZIP 存档并替换 /usr/share/tomcat 中旧版本的二进制文件。
这种方法直到最近才有效。自 2022 年 3 月(大约)以来,我观察到安装的 Tomcat 偶尔会从 9.0.40 降级到 9.0.31!
我想知道我该如何防止这种情况发生?为什么操作系统会在未经同意的情况下降级软件?
答案1
有不同的方法可以阻止软件包:使用 dpkg、apt、dselect、aptitude 或 Synaptic。
软件包
保留包裹:
echo "<package-name> hold" | sudo dpkg --set-selections
解除保留:
echo "<package-name> install" | sudo dpkg --set-selections
显示所有包裹的状态:
dpkg --get-selections
显示单个包的状态:
dpkg --get-selections <package-name>
显示所有保留的包裹:
dpkg --get-selections | grep "\<hold$"
易于
持有包裹:
sudo apt-mark hold <package-name>
解除保留:
sudo apt-mark unhold <package-name>
显示所有保留的包裹:
sudo apt-mark showhold
取消选择
使用 dselect 进入 [S]elect 屏幕,找到您想要保留其当前状态的包并按 = 或 H。退出 [S]elect 屏幕后,更改将立即生效。
以下方法的局限性在于,锁定/保留 aptitude 或 synaptic 中的包不会影响 apt-get/apt。
资质
持有包裹:
sudo aptitude hold <package-name>
解除保留:
sudo aptitude unhold <package-name>
使用 Synaptic 包管理器锁定
转到 Synaptic 包管理器(系统 > 管理 > Synaptic 包管理器)。
单击搜索按钮并输入包名称。
找到该包后,选择它并转到“包”菜单并选择“锁定版本”。
该包现在将不会显示在更新管理器中,也不会被更新。