DNF (Dandified YUM) — стандартный менеджер пакетов в современных RPM-дистрибутивах: Fedora, RHEL 8+, CentOS Stream, AlmaLinux, Rocky Linux. Полностью совместим с YUM по синтаксису, но использует библиотеку libsolv для разрешения зависимостей — значительно быстрее и надёжнее.
Основные команды
dnf install nginx # установить пакет
dnf update # обновить все пакеты
dnf update nginx # обновить конкретный пакет
dnf remove nginx # удалить пакет
dnf search nginx # поиск по имени и описанию
dnf info nginx # информация о пакете
dnf list installed # список установленных пакетов
dnf history # история транзакций
dnf history undo N # отменить транзакцию N
dnf autoremove # удалить неиспользуемые зависимости
dnf clean all # очистить кэш
Репозитории
Репозитории настраиваются в /etc/yum.repos.d/*.repo. Стандартные: BaseOS, AppStream, Extras. Добавление EPEL (Extra Packages for Enterprise Linux — пакеты от Fedora Project):
dnf install epel-release
dnf install htop tmux mc
Добавление Nginx official repo:
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
dnf install nginx
DNF vs apt
| Параметр | DNF (RHEL/Fedora) | apt (Debian/Ubuntu) |
|---|---|---|
| Формат пакетов | .rpm | .deb |
| Конфиг репозиториев | /etc/yum.repos.d/*.repo | /etc/apt/sources.list.d/*.list |
| Обновление системы | dnf update | apt upgrade |
| Кэш метаданных | dnf makecache | apt update |
История
YUM (Yellowdog Updater Modified) разработан в 2003 году как улучшение RPM. DNF создан в рамках Fedora Project, появился в Fedora 18 (2013) как экспериментальный. Стал основным пакетным менеджером в Fedora 22 (2015). В RHEL 8 (2019) YUM стал псевдонимом для DNF — yum install nginx и dnf install nginx идентичны.
На что обращать внимание
После установки Nginx или MariaDB через DNF сервис не запускается автоматически — нужно systemctl enable --now nginx. sudo обязателен для DNF: пакеты устанавливаются в системные директории. dnf check-update — просмотр доступных обновлений без установки. dnf provides /usr/bin/nginx — найти пакет, предоставляющий файл.
Модульность и потоки
DNF Modules позволяют устанавливать разные версии одного пакета параллельно. Например, dnf module enable php:8.2 переключает поток PHP без конфликтов с системными зависимостями. Это особенно полезно на серверах, где несколько приложений требуют разные версии PHP или Node.js.
Транзакционная история DNF: dnf history показывает все установки/удаления с датами. dnf history undo 5 откатывает пятую транзакцию, возвращая систему к предыдущему состоянию пакетов. Это инструмент восстановления после неудачного обновления.
Практические команды
Поиск пакета: dnf search nginx. Информация о пакете: dnf info nginx. Список установленных: dnf list installed. Обновление всей системы: dnf update -y. Удаление с зависимостями: dnf autoremove nginx.
Репозиторий EPEL добавляет пакеты для AlmaLinux и Rocky Linux, которых нет в базовой поставке. Docker CE устанавливается из официального репозитория Docker через dnf config-manager --add-repo.