软件包管理器是一种软件,它允许用户安装新软件、升级系统或更新特定软件等。在基于 Linux 的系统上,软件通常具有许多依赖项,这些依赖项必须存在于系统中才能完成安装,因此软件包管理器等工具在每个系统上都必不可少。
每个 Linux 发行版都附带了用于上述功能的默认包管理器,但最常见的是:RHEL 和 Fedora 系统上的Yum (从Fedora 22+开始它被DNF取代)和基于 Debian 的系统上的Apt。
如果您正在寻找一个APT工具来阻止或禁用Ubuntu/Debian系统上的某些特定的软件包更新,那么您应该阅读这篇文章。
DNF(Dandified YUM)正在取代Fedora 系统上的YUM,后者是我们列表中的另一个。如果探索得当,这些包管理器可用于以下功能:
从存储库安装新软件。
通过在安装软件之前安装这些依赖项来解决软件的依赖关系。
维护每个软件的依赖关系数据库。
降级任何现有软件的版本。
升级内核版本。
列出可供安装的软件包。
在本指南中,我们将探讨使用Yum和DNF命令禁用或锁定某些软件包更新的四种简单方法。
1. 使用排除选项永久禁用软件包更新
阻止特定软件包更新的最简单方法之一是使用Yum或DNFexclude配置文件中的选项,该选项告诉包管理器避免更新某些包。
打开Yum或DNF配置文件:
sudo nano /etc/yum.conf #Yum Configuration File
sudo nano /etc/dnf/dnf.conf #DNF Configuration File
exclude在文件底部添加该行,后跟要阻止的包名称。
exclude=kernel* httpd
这会阻止系统更新所有与内核相关的软件包和 Apache 网络服务器 ( httpd )。
在 DNF 中排除软件包更新
现在让我们尝试安装或更新指定的包,看看Yum或DNF命令是否会禁止它被安装或更新。
sudo dnf install httpd
2. 使用排除选项暂时禁用软件包更新
如果不想永久修改配置文件,您可以在运行Yum或DNF–exclude更新时使用命令行中的选项暂时排除特定的软件包。
sudo yum update –exclude=nginx php
sudo dnf update –exclude=nginx php
3. 排除存储库中的特定包
对于通过添加存储库从任何外部源安装的任何软件包,还有另一种方法可以阻止其将来升级。这可以通过编辑在/etc/yum/repos.d/或/etc/yum.repos.d目录repo-name.repo中创建的配置文件来实现。
打开存储库配置文件。
sudo nano /etc/yum.repos.d/repo-name.repo
在[repository]部分下添加排除行:
exclude=package1 package2
例如,如果您想mysql从 epel 存储库中排除该包的更新,请打开/etc/yum.repos.d/epel.repo并添加:
exclude=mysql*
这将阻止来自该特定存储库的mysql更新。
4.使用 versionlock 选项禁用软件包更新
Yum和DNF都提供可以锁定软件包特定版本的插件,防止它们被更新,这是使用versionlock插件完成的。
对于Yum来说:
安装 versionlock 包:sudo yum install yum-plugin-versionlock
锁定特定的软件包版本:sudo yum versionlock add httpd
查看所有锁定的包:sudo yum versionlock list
要从版本锁中删除软件包:sudo yum versionlock delete httpd
对于Dnf来说:
安装 versionlock 包:sudo dnf install dnf-plugins-core
锁定特定的软件包版本:sudo dnf versionlock add httpd
查看所有锁定的包:sudo dnf versionlock list
要从版本锁中删除软件包:sudo dnf versionlock delete httpd
总结,通过使用这四种方法,修改Yum或DNF配置文件、使用–exclude命令中的选项、利用 versionlock 插件或配置存储库排除 – 您可以轻松地在基于 RPM 的 Linux 系统中禁用或锁定软件包更新。