Как устанавливать и управлять пакетами в DNF на RPM-дистрибутивах

DNF — современный пакетный менеджер для RPM-дистрибутивов (Fedora, RHEL). Он заменил YUM, разрешает зависимости, хранит историю транзакций и позволяет устанавливать, обновлять, удалять и восстанавливать пакеты с удобными командами. В статье — быстрые команды, сценарии для администраторов и пользователей, чек-листы, матрица сравнения и рекомендации по безопасности.
Одно из самых удобных преимуществ Linux — лёгкость установки или автоматизации установки программ из защищённых удалённых репозиториев. В этой статье подробно описано, как устанавливать и управлять пакетами в RPM-системах (Fedora, RHEL) с помощью DNF — современного пакетного менеджера.
Что такое DNF?
DNF (Dandified YUM) — преемник YUM и стандартный менеджер пакетов в Fedora и RHEL. Его основная задача — упростить установку, поиск, обновление и удаление пакетов, автоматически решая зависимости. DNF совместим с оболочными сценариями, написанными для YUM: команда yum на новых системах обычно является символьной ссылкой на dnf.
Краткое определение: DNF — это менеджер пакетов для RPM, который автоматически разрешает зависимости и ведёт историю транзакций.
Пример проверки символьной ссылки:
ls -l /usr/bin/yumВывод покажет, что yum ссылается на dnf.
Основные команды DNF
Ниже — быстрый список команд для повседневной работы. Все команды, которые изменяют систему, выполняйте с правами root или через sudo.
- Поиск пакетов: dnf search <ключевое_слово>
- Подробная информация: dnf info <пакет>
- Список доступных: dnf list available
- Список установленных: dnf list installed
- Установка: sudo dnf install <пакет>
- Удаление: sudo dnf remove <пакет>
- Переустановка: sudo dnf reinstall <пакет>
- Проверка обновлений: sudo dnf check-update
- Обновление всех пакетов: sudo dnf update
- Удаление неиспользуемых зависимостей: sudo dnf autoremove
- Очистка кеша пакетов: sudo dnf clean packages
- Очистка метаданных: sudo dnf clean metadata
- Просмотр истории транзакций: dnf history
- Откат транзакции: sudo dnf history undo
- Просмотр зависимостей пакета: dnf deplist <пакет>
Каждая команда имеет дополнительные опции; запускайте man dnf или dnf –help для подробностей.
Поиск пакетов и получение информации
Поиск пакетов полезен на раннем этапе — когда не знаете точного имени пакета. Пример: поиск браузеров.
dnf search browserВывод содержит пакеты, в имени или описании которых встречается «browser». Для подробной информации о конкретном пакете используйте:
dnf info firefoxЭто покажет архитектуру, размер пакета, версию, лицензию и другие метаданные.
Для просмотра всех доступных пакетов удобно использовать постраничный вывод:
dnf list available | lessНавигация в less: F — вперёд, B — назад, / — поиск, Q — выход.
Список установленных пакетов:
dnf list installedУстановка пакетов
Установка простая, но требует повышенных привилегий. Пример установки Firefox:
sudo dnf install firefoxDNF автоматически загрузит и установит необходимые зависимости. Чтобы увидеть, какие зависимости будут установлены вместе с пакетом:
dnf deplist firefoxРекомендация: перед установкой пакетов на сервер убедитесь, что у вас есть резервные копии конфигураций, особенно если пакет затрагивает системные сервисы.
Удаление и откат установок
Простейший способ удалить пакет:
sudo dnf remove firefoxDNF ведёт историю транзакций. Просмотр истории показывает список операций — установки, удаления и обновления:
dnf historyВы можете откатить транзакцию по её идентификатору, но делайте это осторожно:
sudo dnf history undo 3Перед откатом полезно просмотреть детали транзакции:
sudo dnf history info 3Замените 3 на нужный ID.
Очистка и удаление неиспользуемых зависимостей
Со временем на диске накапливаются пакеты и зависимости, которые уже не нужны. Удалите их командой:
sudo dnf autoremoveДля удаления загруженных пакетов и метаданных используйте:
sudo dnf clean packages
sudo dnf clean metadataЭто полезно для очистки места и устранения проблем с некорректным кешем репозиториев.
Переустановка пакета
Если какие-то файлы пакета были повреждены или удалены, переустановите пакет так:
sudo dnf reinstall firefoxЭто заменит файлы пакета на версии из репозитория, не затрагивая пользовательские конфигурации в /etc, если они отмечены как конфигурационные файлы пакета.
Обновление пакетов
Регулярные обновления важны для безопасности и стабильности. Сначала проверьте доступные обновления:
sudo dnf check-updateЗатем примените их ко всем пакетам:
sudo dnf updateМожно обновлять отдельный пакет:
sudo dnf update firefoxПолезная практика: сначала тестируйте обновления на тестовой машине или в контейнере, особенно для серверов.
Альтернативы и современные способы распространения
Помимо DNF, на Fedora и RHEL можно использовать RPM и YUM. Современные универсальные форматы, такие как Flatpak, Snap или AppImage, позволяют распространять пакеты независимо от базовой системы.
Краткая матрица сравнения:
| Подход | Что делает | Когда выбрать |
|---|---|---|
| DNF/YUM/RPM | Устанавливает системные пакеты из RPM-репозиториев, управляет зависимостями | Для системных сервисов и библиотек, когда нужен репозиторий ОС |
| Flatpak | Изолированные приложения в песочнице, одна версия для разных дистрибутивов | Десктоп-приложения с графическим интерфейсом |
| Snap | Похож на Flatpak, централизованный магазин | Если нужна простая доставка приложений для разных дистрибутивов |
| AppImage | Портативные бинарные файлы без установки | Быстрая проверка приложения без привязки к системе |
Частые проблемы и их решения
“Проблемы с зависимостями” — проверьте репозитории, выполните sudo dnf clean all и затем sudo dnf update. Если конфликт возникает между репозиториями, временно отключите проблемный репозиторий через –disablerepo=<имя>.
“Пакет не найден” — убедитесь, что репозитории настроены и метаданные обновлены (sudo dnf makecache). Проверьте написание имени пакета.
“Проблемы с сертификатами репозитория” — проверьте дату/время системы и настройки SSL. Иногда помогает обновление CA-пакета.
“Откат транзакции приводит к удалению важных пакетов” — перед откатом изучите dnf history info
, создайте резервную копию конфигураций.
Решения для бизнеса и безопасности
Факты и рекомендации:
- Частые обновления снижают риск эксплойтов. Тестируйте обновления в staging перед production.
- Используйте только доверенные репозитории и подписанные пакеты (GPG-подпись).
- Отключайте ненужные сторонние репозитории, если они конфликтуют с базовыми.
- Журналируйте и храните dnf history для аудита изменений.
Рекомендации по усилению безопасности:
- Включите проверку GPG-подписей в конфигурации /etc/dnf/dnf.conf.
- Настройте мониторинг наличия обновлений и автоматические уведомления.
- Для критичных серверов используйте ограниченный набор проверенных репозиториев и периодические тесты ролбэка.
Приватность и соответствие требованиям
При добавлении сторонних репозиториев учитывайте, какие метаданные собираются. Обычно DNF не отправляет персональные данные при установке, но репозитории могут вести учёт загрузок. Для соответствия GDPR/локальным требованиям используйте внутренние зеркала репозиториев и контролируйте доступ.
Чек-листы по ролям
Администратор сервера:
- Проверить и зарегистрировать репозитории.
- Настроить GPG-подписи и контроль доступа.
- Настроить расписание обновлений и тестового обновления в staging.
- Делать резервные копии конфигураций перед крупными обновлениями.
Десктоп-пользователь:
- Использовать sudo dnf update регулярно.
- Устанавливать Flatpak для графических приложений, если нужно изолированное окружение.
- Очищать кэш (dnf clean) при нехватке места.
Разработчик пакетов:
- Проверять deplist и убедиться, что зависимости минимальны.
- Подписывать пакеты GPG-ключом организации.
- Тестировать установку/удаление в чистой виртуальной машине.
Правила принятия изменений
Критерии приёмки установки пакета:
- Пакет успешно установился без ошибок в stdout/stderr.
- Служба (если есть) запустилась и работает корректно.
- Конфигурационные файлы не потеряны или сохранены резервные копии.
- Все тесты интеграции, затронутые пакетом, проходят.
Быстрые шаблоны команд и примеры для сценариев
Обновление системы с логами:
sudo dnf update -y | tee ~/dnf-update-$(date +%F).logАвтоматическое удаление пакетов и очистка кеша:
sudo dnf autoremove -y && sudo dnf clean allОткат последней транзакции:
LAST=$(dnf history | awk 'NR==3{print $1}')
sudo dnf history undo $LAST(проверяйте, какой ID возвращает команда перед выполнением)
Мини-методология для безопасных обновлений в Production
- Создайте тестовую копию сервера или снимок виртуальной машины.
- Выполните sudo dnf check-update и примените обновления в тестовой среде.
- Прогоните smoke-tests и регрессионные тесты.
- Если всё в порядке — примените обновления в production в окно обслуживания.
- Мониторьте логи и сервисы 24–48 часов; при проблемах используйте dnf history undo.
Диаграмма принятия решения
flowchart TD
A[Нужно обновить пакет?] --> B{Это критичный сервер?}
B -- Да --> C[Тестирование в staging]
C --> D{Тесты пройдены?}
D -- Да --> E[Плановое обновление в maintenance window]
D -- Нет --> F[Откат/исправление и повторное тестирование]
B -- Нет --> G[Обновить напрямую на рабочей машине]Короткие ответы на часто задаваемые вопросы
Как проверить, какой репозиторий предоставляет пакет?
dnf repoquery --info <пакет>Можно ли одновременно использовать DNF и Flatpak для одного приложения?
Да, но тогда у вас будут две отдельные установки и разные пути конфигурации. Flatpak изолирует окружение.
Как вернуть систему в состояние до обновления?
Используйте dnf history info
Итог
DNF — мощный и надёжный инструмент управления пакетами в RPM-системах. Он прост в повседневном использовании и достаточно гибок для корпоративных сценариев при корректной настройке репозиториев, политики GPG-подписей и процедур тестирования. Для десктопа можно дополнять DNF Flatpak’ом или AppImage, а для серверов — следовать описанной mini-методологии и чек-листам.
Важно
Перед массовыми изменениями всегда тестируйте и делайте резервные копии. Используйте подписанные репозитории и храните историю dnf для аудита.
Краткое резюме
- DNF заменил YUM и решает зависимости автоматически.
- Основные команды: install, remove, update, check-update, history, deplist.
- Тестирование обновлений и использование GPG-подписей — ключ к безопасности.
1-строчная глоссарий
DNF — менеджер пакетов для RPM-дистрибутивов, который управляет установкой, обновлением и удалением пакетов с автоматическим разрешением зависимостей.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone