Поиск по сайту:

Как отключить обновления пакетов с помощью YUM/DNF в RHEL Linux


DNF (Dandified Yum) — это версия YUM (Yellowdog Updater, Modified) нового поколения. Это менеджер пакетов по умолчанию с открытым исходным кодом для дистрибутивов Linux на базе Red Hat, который используется для получения, установки, обновления, удаления, и запрос пакетов из официальных репозиториев программного обеспечения и сторонних репозиториев.

Иногда при обновлении системы мы не обновляем определенные пакеты, такие как Apache Server (HTTP), MySQL, PHP, или любое другое важное приложение, поскольку обновление такого программного обеспечения может привести к поломке работающих в данный момент веб-приложений на сервере и вызвать серьезные проблемы. Рекомендуется прекратить обновление такого программного обеспечения до тех пор, пока в приложение не будут добавлены новые обновления.

В этой статье мы покажем вам, как мы можем исключить (отключить) определенные обновления пакетов с помощью менеджера пакетов YUM и DNF в дистрибутивах на основе RPM, таких как RHEL. , CentOS, Fedora, Rocky Linux и AlmaLinux. Мы также можем исключить или отключить определенные обновления пакетов из любых сторонних репозиториев.

Синтаксис исключения будет следующим.

exclude=package package1 packages*

Вышеуказанная директива exclude определена в файле конфигурации /etc/yum.conf или /etc/dnf/dnf.conf со списком пакетов. исключить из обновлений или установок.

Приведенный выше синтаксис исключает «пакет», «пакет1» и список обновлений или установок «пакет». Каждое ключевое слово должно быть разделено пробелом для исключения пакетов.

Как исключить пакеты в YUM или DNF

Чтобы исключить (отключить) определенные обновления пакета, откройте файл с именем /etc/yum.conf или /etc/dnf/dnf.conf в выбранном вами редакторе.

vi /etc/yum.conf
OR
vi /etc/dnf/dnf.conf

Добавьте следующую строку внизу файла с ключевым словом exclude, как показано ниже.

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

This is the default, if you make this bigger yum won't see if the metadata 
is newer on the remote and so you'll "gain" the bandwidth of not having to
download the new metadata and "pay" for it by yum not having correct
information.
 It is esp. important, to have correct metadata, for distributions like
Fedora which don't keep old packages around. If you don't like this checking
interupting your command line usage, it's much better to have something
manually check the metadata once an hour (yum-updatesd will do this).
metadata_expire=90m

PUT YOUR REPOS HERE OR IN separate files named file.repo
in /etc/yum.repos.d

## Exclude following Packages Updates ##
exclude=httpd php mysql

В приведенном выше примере строка exclude отключит обновления для «httpd», «php» и «mysql». пакеты. Давайте попробуем установить или обновить один из них с помощью команды YUM, как показано ниже.

yum update httpd
OR
dnf update httpd
Пример вывода
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.01link.hk
 * extras: centos.01link.hk
 * updates: mirrors.hns.net.in
base                                                   | 3.7 kB     00:00
extras                                                 | 3.0 kB     00:00
updates                                                | 3.5 kB     00:00
updates/primary_db                                     | 2.7 MB     00:16
Setting up Update Process
No Packages marked for Update

Как исключить пакеты из репозитория EPEL

Чтобы исключить установку или обновление пакетов из репозитория EPEL, откройте файл с именем /etc/yum.repos.d/epel.repo.

vi /etc/yum.repos.d/epel.repo

Добавьте строку исключения, указав пакеты, которые будут исключены из обновлений.

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
## Exclude following Packages Updates ##
exclude=perl php python

Теперь попробуйте обновить указанные выше файлы из репозитория EPEL с помощью команды yum/dnf, как показано.

dnf update perl php python
OR
yum update perl php python
Пример вывода
Last metadata expiration check: 0:00:37 ago on Wednesday 17 November 2021 03:41:28 AM EST.
Package perl available, but not installed.
No match for argument: perl
No match for argument: php
No match for argument: python
Error: No packages marked for upgrade.

Вы также можете использовать параметр командной строки yum/dnf, чтобы исключить пакеты без добавления их в файлы репозитория.

yum --exclude=httpd update
Or
dnf --exclude=httpd update

Чтобы исключить список пакетов, используйте команду следующим образом.

yum --exclude=mysql\* --exclude=httpd\* update
Or
dnf --exclude=mysql\* --exclude=httpd\* update

Таким образом, вы можете исключить обновления для любых пакетов, которые захотите. Есть много других способов сделать это, например, недавно мы подготовили статью о 4 полезных способах заблокировать/отключить или заблокировать определенные пакеты с помощью команды yum в Linux.