2026-09-18
Шпаргалка по yum/dnf: менеджер пакетов RPM в Rocky Linux и CentOS

Шпаргалка по yum/dnf: менеджер пакетов RPM в Rocky Linux и CentOS

Шпаргалка по работе с пакетным менеджером dnf (Rocky Linux, CentOS Stream, AlmaLinux) и yum (CentOS 7 и ниже). Команды yum работают и в новых RPM-дистрибутивах, но в современные рекомендуется использовать dnf: начиная с RHEL 8 именно он является основным инструментом.


Репозитории

Репозитории описывают, откуда система забирает пакеты. Конфиги — в /etc/yum.repos.d/.

Управление репозиториями

1. Просмотр.

yum repolist              # включённые
yum repolist all          # включённые и отключённые
yum repolist -v           # подробно
yum repolist disabled     # только отключённые

2. Добавление командой.

dnf install dnf-utils     # современный аналог yum-utils
yum install yum-utils
yum-config-manager --add-repo https://yum.mariadb.org/10.5/centos8-amd64

Утилита не задаёт «красивое» имя репозитория, и при длинном URL возникает ошибка:

Bad id for repo: , byte = $ 42

Обходной путь — добавить короткий репозиторий, затем подменить URL:

yum-config-manager --add-repo http://repo-name
yum-config-manager --save --setopt=repo-name.baseurl=https://yum.mariadb.org/10.5/centos8-amd64/yum/redhat/$releasever/mariadb/1.7/x86_64

3. Добавление через файл.

vi /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1

где:

  • name — имя репозитория;
  • baseurl — путь к пакетам;
  • gpgkey — путь до открытого GPG-ключа;
  • gpgcheck — проверять ли подпись пакетов;
  • enabled — включён ли репозиторий.

Для защищённого репозитория с аутентификацией:

[mariadb-private]
...
username=your_username
password=your_password

4. Временное включение/отключение во время операций.

yum update --disablerepo=epel
yum update --enablerepo=epel
yum update --disablerepo=* --enablerepo=epel
yum install --disablerepo=epel
yum install --enablerepo=epel

5. Постоянное включение/отключение.

yum-config-manager --disable yum.mariadb.org_10.5_centos8-amd64
yum-config-manager --enable  yum.mariadb.org_10.5_centos8-amd64

Или в файле:

enabled=0   # 1 — включён, 0 — отключён

6. Настройка опций.

yum-config-manager --save --setopt=mariadb.module_hotfixes=1
yum-config-manager --save --setopt=mirror-yandex.gpgcheck=1
yum-config-manager --save --setopt=mirror-yandex.gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

Пример с gpgcheck и gpgkey: ключ по указанному пути должен существовать.

Обслуживание

yum clean --enablerepo=* all
yum clean all --disablerepo="*" --enablerepo="epel,nginx-thirdparty"
yum makecache

Порядок обязателен: сначала disablerepo, потом enablerepo.

Настройка репозитория

Пример — базовый репозиторий РЕД ОС:

vi /etc/yum.repos.d/RedOS-Base.repo

baseurl — пути к метаданным (можно несколько через запятую и с переменными):

baseurl=https://repo1.red-soft.ru/redos/7.3/$basearch/os,https://mirror.yandex.ru/redos/7.3/$basearch/os

gpgcheck — проверка подписи:

gpgcheck=0

priority — приоритет; чем ниже число, тем выше приоритет:

priority=1

Если priority не указан, репозиторий имеет меньший приоритет, чем тот, где он задан.


Установка, обновление, удаление

yum install                  # установка пакета
yum update                   # обновление всех пакетов
yum update <pkg>             # обновление конкретного пакета
yum --disablerepo="*" --enablerepo=thirdparty install nginx
yum downgrade nginx-1.13.1   # понижение версии
yum remove <pkg>             # удаление
yum install --downloadonly --downloaddir=/tmp nodejs   # только скачать
rpm2cpio <pkg.rpm> | cpio -idmv                        # распаковать rpm

Пример downgrade: удалит nginx-1.15.3 и установит nginx-1.13.1.


Просмотр информации о пакетах

1. Список установленных.

dnf list --installed        # Rocky Linux
rpm -qa                     # CentOS 7
dnf list --installed | grep nginx
rpm -qa | grep nginx

2. Зависимости.

dnf deplist nginx
rpm -q httpd --requires
rpm -qp nginx-1.23.1-1.el7.ngx.x86_64.rpm --requires   # из файла

3. Файлы в пакете.

rpm -ql nginx        # установленный
rpm -qlp nginx.rpm   # из файла

4. Связь файлов и пакетов.

yum provides audit-libs-python
yum provides audit-libs-*           # по маске
yum whatprovides /bin/grep          # по полному пути
rpm -qf /bin/grep                   # какой пакет установил файл

5. Постинсталляционный скрипт.

rpm -qp --scripts
rpm -q --scripts

6. provides пакета.

rpm -qp --provides
rpm -q --provides

7. Общая информация.

rpm -qip <pkg.rpm>   # для файла
rpm -qi <pkg>        # для установленного

Управление модулями (потоками)

Модульные репозитории позволяют ставить разные версии одного продукта. Для репозитория можно включить только одну версию модуля.

dnf module list                # все модули
dnf module list --enabled
dnf module list --disabled
dnf module list --installed
dnf module list nodejs
dnf module enable nodejs:12
dnf module disable nodejs:14

Обозначения: [d] — по умолчанию, [e] — включён, [x] — отключён, [i] — установлен.

Переключение потока — сначала сброс, потом включение:

dnf module reset php:7.3
dnf module enable php:7.4

Без сброса получим ошибку:

Error: It is not possible to switch enabled streams of a module.

Блокировка установки и обновления

1. Разово (-x)

yum -x postgresql*,asterisk update

Обновит всё, кроме asterisk и пакетов, начинающихся на postgresql.

2. Постоянно в yum.conf

vi /etc/yum.conf
exclude=postgresql* asterisk

3. В конфиге репозитория

vi /etc/yum.repos.d/pgdg-redhat-all.repo
[pgdg12]
...
exclude=postgresql12*

Возможные ошибки

1. Curl error (60): SSL peer certificate or SSH remote key was not OK

Причина: сертификат репозитория не проходит проверку (просрочен или недоверенный CA).

Решение: на сервере — получить правильный сертификат; на клиенте — отключить проверку SSL:

yum-config-manager --save --setopt=<repo>.sslverify=0

Или в файле репозитория:

sslverify=0

2. Error: GPG validation FAILED

Причина: система не может загрузить/импортировать GPG-ключ.

Решение: отключить проверку GPG:

yum-config-manager --save --setopt=<repo>.gpgcheck=0

Или в файле:

gpgcheck=0

Тонкости и подводные камни

  • yum vs dnf — в RHEL 8+ yum это симлинк на dnf; используйте dnf в новых системах.
  • Bad id for repo — длинные URL недопустимы как ID репозитория; задавайте короткое имя и подменяйте baseurl через setopt.
  • Порядок disablerepo/enablerepo — при очистке кэша disablerepo обязан идти первым.
  • priority — понижает версию пакета в пользу репозитория с приоритетом, даже если есть новее.
  • Модули — нельзя держать два потока одного модуля; переключение только через reset.
  • sslverify=0 / gpgcheck=0 — снижают безопасность; применяйте как временную меру.

Шпаргалка

yum repolist all
yum-config-manager --add-repo URL
yum --disablerepo="*" --enablerepo=thirdparty install nginx
dnf module list / enable / reset
yum -x postgresql*,asterisk update
rpm -qf /bin/grep
rpm -qlp pkg.rpm
yum clean all && yum makecache

Проверено на: Rocky Linux 9, CentOS Stream, AlmaLinux + dnf/yum 4.x.
Дата: Сентябрь 2026.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *