本文介绍将某个软件包锁定在一个特定版本中,使它不随系统的更新而升级,将它固定在维护的老版本,适用于 Debian、Ubuntu、Linux Mint 操作系统下,实现这一目的,有三种常用的方法,下面为你图解说明。
需求背景 为什么要阻止软件包更新呢?通常是用户对某个软件版本有特定的需求,或更新之后会导致问题,所以才要维持特定版本不进行升级。例如:LotServer 就需要特定的 Linux Kernel 版本,我就是用 apt-mark 阻止内核升级的。 需要注意的是:如果你要保持特定版本的软件包被其它软件所依赖,那么阻止其升级可能会导致问题。因此,尽量不要将太多软件包固定在老版本,尤其是库。
方法1、使用 GUI 工具防止程序包更新(推荐该方法,图形操作更简单。) 新立得包管理器是一款用于 apt 的 GTK 图形包管理程序,可以用于锁定并阻止特定应用程序更新升级。 你可以使用以下命令安装 Synaptic Package Manager: sudo apt install synaptic 在新立得中防止软件更新,请选中要锁定的软件包,在软件包菜单中勾选锁定版本选项。请看下面图示标号:
如果要查看在 Synaptic 中已锁定的所有软件包,可以点击左侧状态,选择标记为永不升级的软件包进行查看。请看图示:
需要注意的是: 1.使用新立得包管理器锁定的软件包并不能阻止 apt upgrade 或 apt-get upgrade 命令对应用程序的更新。 2.新立得包管理器中锁定的软件包仅能阻止 Ubuntu 软件或一些其它图形化包管理器对软件版本的升级。 3.新立得包管理器中锁定的软件包不能阻止 使用 Linux Mint Update Manager 更新软件包。
方法2、使用 apt-mark 锁定应用程序版本 使用 apt-mark 命令可以阻止 Ubuntu 软件和终端命令(apt upgrade 或 apt-get upgrade)对锁定的应用程序进行升级。 你可以使用以下命令锁定版本: sudo apt-mark hold PACKAGE 可以使用以下命令检查标记为保留(锁定)的包: sudo apt-mark showhold 要解除锁定可以使用如下命令: sudo apt-mark unhold PACKAGE
hold 和 unhold 参数后可以指定多个包,就像使用 apt 安装软件一样(用空格分隔开就行)。
方法3、使用 dpkg 防止软件包更新 此前有段时间一些不遵守规则的图形包管理器直接给忽略了 apt-mark 锁定的软件(好加在我没中招),为了保险和一些在使用老旧 Debian、Ubuntu、Linux Mint 版本的用户,还可以使用 dpkg 防止软件包更新。 要使用 dpkg 阻止程序包升级,请使用: echo "PACKAGE hold" | sudo dpkg --set-selections 你可以使用以下命令查看所有 hold 的软件包: dpkg --get-selections | grep hold 要删除保留(允许升级包),请使用: echo "PACKAGE install" | sudo dpkg --set-selections
与 apt-mark 不同,此方法不允许一次指定多个包。
结语 以上就是在 Debian、Ubuntu、Linux Mint 下锁定软件包的方法,可以参考在Ubuntu系统上软件锁定版本不更新的方法一文。如果是在Deepin系统中要固定软件包版本请看 Deepin降级保护措施的实现方法。
相关主题 |