SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-09-04

Команды dnf для пользователей apt: шпаргалка

Полная таблица соответствия команд apt и dnf для Rocky Linux, AlmaLinux и Fedora. Узнайте, как выполнять установку, обновление и откат транзакций без ошибок в RHEL.

Краткий ответ

Переход с apt на dnf — это по большей части смена терминологии. apt install nginx заменяется на dnf install nginx. apt remove nginx заменяется на dnf remove nginx. У apt update нет прямого аналога, так как dnf самостоятельно обновляет метаданные репозиториев при устаревании кэша. Простая часть перевода занимает один экран. Полезная часть состоит из четырех операций, которые не имеют прямых соответствий: добавление репозитория, отмена транзакции, установка группы пакетов и запуск автоматических обновлений.

Все приведенные ниже команды предназначены для выполнения на вашем сервере. Внимательно читайте сводку транзакции, которую выводит dnf, перед тем как ответить y, особенно при удалении пакетов.

Какие дистрибутивы используют dnf, а какие — apt

dnf является менеджером пакетов в Fedora, Red Hat Enterprise Linux (RHEL) и в дистрибутивах, основанных на RHEL: Rocky Linux, AlmaLinux и CentOS Stream. apt используется в Debian и во всех производных от него системах, что на VPS почти всегда означает Ubuntu. Третьего варианта не существует. Если в списке образов вашего провайдера есть Rocky Linux или AlmaLinux, вы будете работать с dnf. Если Ubuntu — с apt. Причины, по которым одна сторона этого разделения имеет четыре названия для по сути одной и той же системы, стоит изучить до выбора дистрибутива, и в статье как Red Hat Linux стала Fedora, RHEL, CentOS, Rocky и AlmaLinux объясняется происхождение каждого из них.

Формат пакетов зависит от используемого инструмента. dnf устанавливает файлы .rpm, а его база данных находится в rpm. apt устанавливает файлы .deb, а его база данных — в dpkg. Именно поэтому на страницах установки многих вендоров есть отдельные вкладки для каждого семейства, и именно поэтому .deb, скачанный со страницы релиза проекта, бесполезен в Rocky Linux.

Вне зависимости от выбранного семейства, после первого входа в систему предстоит одна и та же работа. Статья Первые десять минут на новом VPS актуальна для обоих случаев. Различаются только команды установки.

Каждая команда apt и её аналог в dnf

Установка, удаление, поиск и отображение информации. Эти команды практически идентичны в обеих системах.

# apt
sudo apt install nginx
sudo apt remove nginx
apt search nginx
apt show nginx

# dnf
sudo dnf install nginx
sudo dnf remove nginx
dnf search nginx
dnf info nginx

apt show — это dnf info. Это единственный переименованный глагол в группе, но одно различие в поведении часто сбивает пользователей с толку. dnf remove также удаляет зависимости, которые больше не нужны другим пакетам, в то время как apt remove оставляет их установленными до последующего apt autoremove. Поэтому удаление одной небольшой утилиты в Rocky Linux может привести к предложению удалить десяток библиотек вместе с ней. Читайте список перед подтверждением.

Обновление метаданных, проверка ожидающих обновлений и обновление системы.

# apt
sudo apt update
apt list --upgradable
sudo apt install --only-upgrade nginx
sudo apt upgrade

# dnf
sudo dnf makecache
dnf check-update
sudo dnf upgrade nginx
sudo dnf upgrade

apt update обязательна для apt, так как apt использует метаданные, которые уже есть на диске, и может установить версию, которая была удалена из архива несколько месяцев назад. dnf проверяет возраст своего кэша перед каждой транзакцией и самостоятельно загружает свежие метаданные, поэтому sudo dnf makecache нужна только для принудительной загрузки прямо сейчас, а не во время следующей установки.

apt разделяет полное обновление системы на две части, а dnf — нет. apt upgrade отказывается удалять любые установленные пакеты, поэтому процесс останавливается, если для обновления требуется удаление какого-либо пакета. apt full-upgrade — это версия, которой разрешено удаление. У dnf нет такого ограничения, что означает, что dnf upgrade является эквивалентом apt full-upgrade, а не apt upgrade. dnf update — это старый псевдоним той же команды, который всё ещё работает.

Одна деталь важна, если вы пишете скрипты: dnf check-update завершается с кодом 100, когда есть ожидающие обновления, и 0, когда их нет. apt list --upgradable всегда завершается с кодом 0, поэтому скриптам приходится анализировать её вывод.

Список установленных пакетов и поиск того, какому пакету принадлежит файл.

# apt
dpkg -l
dpkg -S /usr/sbin/nginx
dpkg -L nginx
apt-file search /usr/sbin/nginx

# dnf
dnf list --installed
rpm -qf /usr/sbin/nginx
rpm -ql nginx
dnf provides /usr/sbin/nginx

Последняя строка каждого блока отвечает на вопрос, отличный от предыдущих. dpkg -S и rpm -qf ищут только среди уже установленных пакетов, отвечая на вопрос «что поместило этот файл сюда». apt-file search и dnf provides ищут в репозиториях, отвечая на вопрос «что мне нужно установить, чтобы получить этот файл». apt-file — это отдельный пакет в Ubuntu, для его работы перед первым запуском требуется sudo apt-file update. dnf provides не требует ничего дополнительного, хотя первый запуск может быть медленным, так как dnf загружает списки файлов репозиториев для ответа.

Чтобы вывести список файлов внутри пакета, который вы ещё не установили, используйте dnf repoquery -l nginx. В apt это apt-file list nginx.

Автоматическое удаление, очистка кэша, фиксация версии.

# apt
sudo apt autoremove
sudo apt clean
sudo apt-mark hold nginx
apt-mark showhold
sudo apt-mark unhold nginx

# dnf
sudo dnf autoremove
sudo dnf clean all
sudo dnf versionlock add nginx
dnf versionlock list
sudo dnf versionlock delete nginx

versionlock не установлена по умолчанию в Rocky Linux или AlmaLinux, поэтому первая из этих строк завершится ошибкой No such command: versionlock на чистой системе. Сначала установите её с помощью sudo dnf install python3-dnf-plugin-versionlock. apt не требует ничего дополнительного для apt-mark hold, так как фиксация версии (hold) является состоянием dpkg, а не плагином.

Где нарушается соответствие: добавление репозитория

Это тот этап, на котором администраторы Ubuntu начинают искать команду, которой не существует. В dnf нет add-apt-repository, как и нет персональных архивов пакетов (PPA). PPA — это сервис, работающий на базе Launchpad, а Launchpad является инфраструктурой Ubuntu. В мире RPM нет аналогов такого хостинга.

Вместо этого в dnf для каждого репозитория используется один текстовый файл в /etc/yum.repos.d/ с расширением .repo.

[docker-ce-stable]
name=Docker CE Stable
baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

$releasever и $basearch — это переменные dnf. dnf подставляет номер мажорного релиза и архитектуру процессора во время выполнения, поэтому один и тот же файл работает как в версии 9, так и в версии 10, а также на x86_64 и aarch64.

Большинство поставщиков публикуют такой файл и предлагают скачать его. Официальная инструкция Docker для RHEL и его клонов состоит из двух команд:

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

Первая строка нужна, потому что config-manager — это плагин, а не часть самого dnf. Если пропустить её, вторая строка завершится с ошибкой No such command: config-manager. Ничто не мешает вам вручную скачать тот же файл .repo с помощью curl в /etc/yum.repos.d/, результат будет идентичным. В Установка Docker на VPS описан тот же процесс для Debian, где аналогичный шаг требует записи списка источников и ключа подписи в два разных каталога.

Разница в структуре определяет, где искать проблему при некорректной работе репозитория. apt хранит описания в /etc/apt/sources.list и /etc/apt/sources.list.d/, а ключи подписи — отдельно в /etc/apt/keyrings/. dnf хранит всё в /etc/yum.repos.d/, а ключ представляет собой URL внутри файла .repo, поэтому для проверки или удаления достаточно одного файла. Новые версии apt перешли к аналогичному формату deb822, где используется один файл .sources на репозиторий. Если вы столкнулись с ошибкой дублирования источников deb822 в Ubuntu, вы уже встретились с этой частью проблемы в apt.

EPEL — это репозиторий, который подразумевается в большинстве руководств

Extra Packages for Enterprise Linux (EPEL) — это проект Fedora, который собирает пакеты Fedora для RHEL и его производных. Это максимально близкий аналог универсального PPA в мире Enterprise Linux, и огромное количество руководств подразумевают, что он уже включен. Если dnf install отвечает No match for argument на запрос пакета, который вы видите на официальном сайте проекта, EPEL — это первое, что нужно проверить.

В Rocky Linux и AlmaLinux:

sudo dnf config-manager --set-enabled crb
sudo dnf install epel-release
sudo dnf makecache

CRB — это CodeReady Builder, репозиторий библиотек, который поставляется вместе с дистрибутивом, но не включен по умолчанию. Большинство пакетов EPEL зависят от компонентов из этого репозитория, поэтому включение EPEL без CRB не вызывает ошибку в момент настройки. Она возникает позже, во время установки, из-за неразрешенных зависимостей пакетов, о которых вы могли не слышать. Сначала включите CRB, и этот класс ошибок исчезнет.

В самом RHEL репозиторий CRB доступен через вашу подписку, а не через config-manager, поэтому для этого шага следуйте официальным инструкциям Red Hat по установке EPEL. В Fedora эти действия не требуются, так как основной репозиторий уже содержит то, что EPEL переносит из более новых версий. Политика EPEL запрещает заменять пакеты, поставляемые RHEL, поэтому добавление репозитория не меняет ничего из того, что уже установлено на вашем сервере.

dnf history undo: функция, которой нет в apt

dnf записывает каждую транзакцию и умеет выполнять обратные действия.

sudo dnf history
sudo dnf history info 42
sudo dnf history undo 42

dnf history выводит нумерованный список транзакций с указанием командной строки, которая их инициировала. undo формирует противоположную транзакцию: установленные пакеты удаляются, а обновленные возвращаются к предыдущей версии. Это та функция, которой больше всего не хватает пользователям apt при переходе на dnf.

У этого механизма есть реальные ограничения, о которых стоит знать до того, как полагаться на него. undo может переустановить только ту версию пакета, которая всё ещё доступна в подключенном репозитории. Если старая сборка была удалена с зеркала, операция undo завершится ошибкой поиска. Откат затрагивает только базу данных пакетов. Файлы конфигурации, перезаписанные при обновлении, останутся измененными, а схема базы данных, мигрировавшая при первом запуске сервиса, не вернется к исходному состоянию. dnf восстанавливает файлы, но не восстанавливает ваши данные.

В apt нет прямого аналога. /var/log/apt/history.log записывает историю событий, включая командную строку, но чтение лога — это не отмена действий. Восстановление в apt выполняется вручную: нужно запустить apt list -a nginx, чтобы увидеть, какие версии еще хранятся в архиве, затем sudo apt install nginx=<exact version string> для фиксации версии, и добавить sudo apt-mark hold nginx, чтобы следующее обновление не отменило ваше исправление.

В apt нет аналога групп пакетов

dnf позволяет установить именованный набор пакетов одной командой.

dnf group list
dnf group info "Development Tools"
sudo dnf group install "Development Tools"

В старых руководствах встречается dnf groupinstall "Development Tools". Этот псевдоним работает в dnf 4, но отсутствует в dnf 5, поэтому единственным вариантом, работающим везде, является двухсловная команда dnf group install. Используйте её и не тратьте время на выбор.

В apt нет групп. Ближайший аналог в Debian — метапакет. Это пустой пакет, содержимое которого состоит только из списка зависимостей, например build-essential. Практическое различие заключается в процессе удаления: при удалении метапакета его зависимости остаются в системе до тех пор, пока вы не выполните apt autoremove, в то время как dnf group remove удаляет пакеты группы в рамках одной транзакции.

unattended-upgrades и dnf-automatic

Оба семейства инструментов позволяют устанавливать обновления без участия пользователя. Эти инструменты объединяет только цель, но не реализация.

В Ubuntu и Debian используется пакет unattended-upgrades, который настраивается в /etc/apt/apt.conf.d/50unattended-upgrades, где вы указываете разрешенные источники обновлений. В Настройка unattended-upgrades в Ubuntu рассматривается этот конфигурационный файл и сопутствующий вопрос о перезагрузке.

В Rocky Linux, AlmaLinux и Fedora используется пакет dnf-automatic, а поведение системы определяется активированным systemd-таймером.

sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic-install.timer
systemctl list-timers 'dnf-automatic*'

dnf-automatic-install.timer загружает и применяет обновления. dnf-automatic-download.timer только загружает их и останавливается, оставляя установку за вами. dnf-automatic-notifyonly.timer только отправляет отчеты. Каждый из этих юнитов переопределяет параметр apply_updates в /etc/dnf/automatic.conf, поэтому выбор таймера важнее, чем настройки в конфигурационном файле. Установка обновления не перезапускает процессы, которые продолжают использовать старый код, поэтому стоит проверить какие из этих обновлений требуют перезагрузки, а какие — только перезапуска сервисов, прежде чем считать систему полностью обновленной.

Чтобы ограничить установку только исправлениями безопасности, установите upgrade_type = security в /etc/dnf/automatic.conf. Этот фильтр зависит от того, публикуют ли ваши репозитории данные об уязвимостях (security errata), поэтому сначала проверьте это с помощью dnf updateinfo list security. Пустой результат на системе, где ожидаются обновления, означает отсутствие метаданных, и в этом случае security не установит ничего.

В Fedora, начиная с dnf 5, юнит был переименован. Теперь это dnf5-automatic.timer, который считывает тот же файл /etc/dnf/automatic.conf.

Является ли yum всё ещё актуальной командой?

Да, но сама по себе она ничего не выполняет. В Rocky Linux, AlmaLinux и CentOS Stream /usr/bin/yum представляет собой символическую ссылку, указывающую на dnf. Проверьте свою систему:

ls -l /usr/bin/yum
dnf --version

Старый синтаксис yum продолжает встречаться в руководствах, так как большая его часть по-прежнему корректно обрабатывается. yum install, yum remove и yum update работают без изменений. От одной привычки стоит отказаться: yum-config-manager всё ещё существует как отдельный бинарный файл в системах с dnf 4, однако dnf config-manager — это написание, используемое в актуальной документации, и именно оно будет работать при переходе системы на dnf 5.

dnf 4 и dnf 5: проверяйте команду перед копированием

dnf 5 — это переписанная версия, в которой изменилось написание ряда команд. Fedora 41 и более поздние версии поставляются с dnf. Корпоративные дистрибутивы переходят на новую версию медленнее, поэтому не стоит делать выводы только по названию дистрибутива. Выполните dnf --version на своем сервере и прочитайте первую строку: именно это число определяет, какой синтаксис из приведенных ниже вам нужен.

Самый наглядный пример — Docker, который публикует разные команды для подключения репозитория для каждой версии. В RHEL и его производных с dnf 4:

sudo dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

В Fedora с dnf 5:

sudo dnf config-manager addrepo --from-repofile https://download.docker.com/linux/fedora/docker-ce.repo

Один и тот же поставщик, одна и та же задача, но разные слова. В dnf 5 инструмент config-manager стал использовать подкоманды, поэтому старый флаг --add-repo больше не поддерживается, и вместо подключения репозитория вы получите ошибку использования. Еще одна команда, с которой вы столкнетесь — включение репозитория: dnf config-manager --set-enabled crb в dnf 4 превращается в dnf config-manager setopt crb.enabled=1 в dnf 5.

Выбор, который действительно имеет значение

Выбор дистрибутива сервера исключительно на основе пакетного менеджера — неверный подход. dnf и apt выполняют одну и ту же работу, а изучение синтаксиса команд занимает один вечер. На ваш рабочий процесс в течение года влияет модель выпуска обновлений, лежащая в основе репозитория. Fedora обновляется быстро, и поддержка конкретного релиза прекращается примерно через 13 месяцев после выхода. Это подходит для рабочей станции, но создает сложности для сервера, который вы не хотите переустанавливать. Rocky Linux и AlmaLinux следуют за RHEL, поэтому вы получаете 10-летний цикл поддержки и версии пакетов, которые намеренно остаются неизменными. Ubuntu предлагает оба варианта, и разница между Ubuntu LTS и промежуточными релизами на сервере — это то же самое решение, которое принимается в рамках экосистемы apt.

По состоянию на август 2026 года все эти дистрибутивы являются стандартными образами для VPS. Выберите желаемый период поддержки, а затем изучите 10 команд, приведенных выше.

FAQ

Какой аналог команды apt update существует в dnf?

Отдельной команды для этого запускать не нужно. Перед каждой транзакцией dnf проверяет возраст кэшированных метаданных и загружает свежую копию, если срок действия истек. Поэтому dnf install на сервере, к которому вы не обращались месяц, всё равно увидит актуальные пакеты. Команда sudo dnf makecache существует и действительно принудительно запускает загрузку, но её реальное назначение — перенести задержку на удобное вам время, а не на момент следующей установки. Команда, отвечающая на вопрос «что ожидает обновления», — dnf check-update, которая соответствует apt list --upgradable и завершается с кодом 100, если обновления доступны.

Есть ли аналог PPA в Rocky Linux или Fedora?

Нет. Personal package archives — это сервис платформы Launchpad, а Launchpad является инфраструктурой Ubuntu, поэтому для add-apt-repository нет прямого аналога. В мире RPM это файл .repo в каталоге /etc/yum.repos.d/, содержащий имя, baseurl и gpgkey. Поставщики ПО публикуют этот файл для вас, а sudo dnf config-manager --add-repo <url> в dnf 4 или sudo dnf config-manager addrepo --from-repofile <url> в dnf 5 загружает его в систему. Для получения дополнительного программного обеспечения обычно используется EPEL, который включается командой sudo dnf config-manager --set-enabled crb, за которой следует sudo dnf install epel-release.

Можно ли отменить dnf upgrade, если он нарушил работу сервера?

Да, в определенных пределах. Выполните sudo dnf history, чтобы найти номер транзакции, sudo dnf history info <id>, чтобы увидеть, что именно она изменила, а затем sudo dnf history undo <id>. Отмена не сработает, если старая версия пакета больше не присутствует ни в одном из подключенных репозиториев, так как dnf не сможет найти источник для переустановки. Кроме того, отменяются только изменения самих пакетов. Файл конфигурации, перезаписанный при обновлении, или база данных, мигрированная сервисом при первом запуске, останутся в измененном состоянии. В apt нет аналогичной команды, есть только запись в /var/log/apt/history.log.

Работает ли yum в Rocky Linux и AlmaLinux?

Он работает, потому что /usr/bin/yum является символической ссылкой на dnf. Проверьте это на своем сервере с помощью ls -l /usr/bin/yum. Ввод yum install httpd запускает dnf, поэтому старые руководства по большей части остаются актуальными. Пишите новые скрипты и документацию с использованием dnf, так как имя yum оставлено только для совместимости, и отдавайте предпочтение dnf config-manager вместо старого бинарного файла yum-config-manager.

Почему dnf remove пытается удалить так много пакетов?

Потому что dnf удаляет зависимости, которые больше не нужны, в рамках той же транзакции, тогда как apt remove оставляет их установленными до тех пор, пока вы не запустите apt autoremove отдельно. Поэтому удаление, которое выглядит незначительным в Ubuntu, может вывести длинный список в Rocky Linux. Этот список обычно корректен, но просматривайте его перед подтверждением. Если в списке есть пакет, который вы хотите сохранить, установите его явно перед удалением, чтобы dnf пометил его как необходимый.