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

4 способа отключить/заблокировать определенные обновления пакетов с помощью команды Yum


Менеджер пакетов — это программное обеспечение, которое позволяет пользователю устанавливать новое программное обеспечение, обновлять систему или обновлять какое-либо конкретное программное обеспечение и тому подобное. В случае систем на базе Linux, в которых одно программное обеспечение имеет множество зависимостей, которые должны присутствовать в системе для полной установки этого программного обеспечения, такое программное обеспечение, как менеджер пакетов, становится очень необходимым инструментом в каждой системе.

Каждый дистрибутив Linux поставляется со своим менеджером пакетов по умолчанию для вышеуказанных функций, но из всех наиболее часто встречающихся являются: yum в системах RHEL и Fedora. (где в настоящее время он заменяется на DNF, начиная с Fedora 22+) и apt из Debian.

Если вы ищете инструмент APT для блокировки или отключения определенных обновлений пакетов, вам следует прочитать эту статью.

Dnf или Danified yum заменяет yum в системах Fedora, который является еще одним в нашем списке. При правильном изучении эти менеджеры пакетов можно использовать для следующих функций:

  1. Установка нового ПО из репозитория.
  2. Устраните зависимости программного обеспечения, установив эти зависимости перед установкой программного обеспечения.
  3. Ведение базы данных зависимостей каждого программного обеспечения.
  4. Понизить версию любого существующего программного обеспечения.
  5. Обновление версии ядра.
  6. Список пакетов, доступных для установки.

Мы уже рассмотрели подробные статьи отдельно о каждом отдельном менеджере пакетов с практическими примерами, вам необходимо прочитать их, чтобы контролировать и управлять управлением пакетами в ваших соответствующих дистрибутивах Linux.

Читайте также:

  1. Освойте команду Yum с помощью 20 практических примеров
  2. 27 команд DNF для управления пакетами в версиях Fedora 22+
  3. Изучите 25 команд APT для управления пакетами Ubuntu

В этой статье мы увидим, как заблокировать/отключить определенные обновления пакетов с помощью менеджера пакетов Yum в системах RHEL/CentOS и Fedora (применимо до Fedora 21, а затем и более новой версии Fedora). поставляется с dnf в качестве менеджера пакетов по умолчанию).

Отключить/заблокировать обновления пакетов с помощью Yum

Yellow Dog Updater, Modified (yum) — это инструмент управления пакетами в дистрибутивах на основе RedHat, таких как CentOS и Fedora. Ниже обсуждаются различные стратегии, используемые для блокировки/отключения обновлений пакетов с помощью Yum:

1. Навсегда отключить пакет для установки или обновления.

1. Откройте и отредактируйте файл yum.conf, который находится в /etc/yum.conf или в /etc/. ням/yum.conf.

Это выглядит следующим образом:

[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=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

Здесь, чтобы исключить определенный пакет из установки или обновления, вам просто нужно добавить переменную исключения вместе с именем пакета, который вы хотите исключить. Например, если я хочу исключить обновление всех пакетов python-3, я просто добавлю следующую строку в yum.conf:

exclude=python-3*

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

exclude=httpd php 
[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=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

Примечание: чтобы включить эти пакеты, игнорируя записи в yum.conf, используйте «-disableexcludes» и установите его в all|main|repoid, где 'main' – это значения, введенные в yum.conf и 'repoid'. > — это те, исключение которых указано в каталоге repos.d, как описано ниже.

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

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. Временно отключите пакет для установки или обновления.

2. Выше было постоянное решение для исключения пакета, поскольку, если файл не будет отредактирован, этот пакет не будет обновляться. Вот временное решение и для этого. В тот момент, когда вы переходите к любому обновлению, используйте переключатель -x в команде yum, чтобы исключить пакет, который вы не хотите обновлять, например:

yum -x python-3 update

Приведенная выше команда обновит все пакеты, обновления которых доступны, за исключением python-3 в вашей системе.

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

yum -x httpd -x php update
OR
yum -x httpd,php update

3. Использование переключателя --exclude работает так же, как -x, просто нужно заменить -x на . >–exclude и передайте ему список имен пакетов, разделенный ','.

yum --exclude httpd,php

3. Отключите обновления пакетов с помощью репозитория.

4. Для любого пакета, установленного из любого внешнего источника путем добавления репозитория, существует другой способ остановить его обновление в будущем. Это можно сделать, отредактировав файл .repo, который создан в /etc/yum/repos.d/ или /etc/yum.repos.d< каталог.

Добавьте параметр исключения с именем пакета в репозиторий. Например: чтобы исключить какой-либо пакет, например wine, из epel repo, добавьте следующую строку в файл epel.repo:

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

Теперь попробуйте обновить пакет wine. Вы получите ошибку, как показано ниже:

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

4. Отключите обновление пакета с помощью опции блокировки версий.

5. Другой способ в yum замаскировать версию любого пакета и сделать его недоступным для обновления — использовать опцию versionlock yum, но для этого вам нужно В системе должен быть установлен пакет yum-plugin-versionlock.

yum -y install yum-versionlock

Например, чтобы заблокировать версию пакета, например httpd, только до 2.4.6, просто напишите следующую команду от имени пользователя root.

yum versionlock add httpd
Пример вывода
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

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

yum versionlock list httpd
Пример вывода
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

Заключение

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