Шпаргалка по 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
Тонкости и подводные камни
yumvsdnf— в 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.