dpkg и APT, а в RHEL-подобных системах — RPM, DNF и иногда YUM. Высокоуровневые менеджеры находят пакеты в репозиториях, рассчитывают зависимости и формируют транзакцию; поэтому пакеты, репозитории и команды одного семейства нельзя механически переносить в другое.Пакет — не просто архив с программой
Пакет Linux содержит файлы программы, но этим его роль не ограничивается. В нём есть метаданные: имя, версия, целевая архитектура, описание, сведения о поставщике и правилах установки. Также пакет может объявлять зависимости пакета — другие компоненты и их допустимые версии, без которых программа не сможет быть установлена или работать корректно.
Метаданные могут описывать конфликты и замену пакетов, владение файлами, а также сценарии, выполняемые до или после установки, обновления и удаления. Благодаря этому система знает, какие файлы относятся к какому пакету, и может проверить, не пытается ли новая установка перезаписать файл другого компонента.
Сам пакетный файл обычно содержит только часть необходимого набора. Например, установка серверного приложения может потребовать библиотек, интерпретатора, службы и дополнительных модулей. Высокоуровневый менеджер пакетов сопоставляет требования пакета с доступными версиями и рассчитывает согласованный набор изменений — пакетную транзакцию.
Две пакетные экосистемы
Типичное устройство управления пакетами в распространённых дистрибутивах
| Семейство | Формат пакета | Низкоуровневый инструмент | Высокоуровневый менеджер | Типичные дист рибутивы |
|---|---|---|---|---|
| Debian-подобное | DEB (.deb) | dpkg | APT: apt, apt-get | Debian, Ubuntu Server |
| RHEL-подобное | RPM (.rpm) | rpm | DNF, в отдельных релизах также yum | RHEL, Rocky Linux, AlmaLinux, CentOS Stream |
Это не симметричные названия одной и той же программы. DEB и RPM — форматы пакетов; dpkg и rpm — низкоуровневые средства учёта и обработки локальных пакетов; APT, DNF и YUM — менеджеры, которые работают с источниками пакетов и зависимостями.
DEB, dpkg и APT в Debian и Ubuntu
DEB-пакет обычно имеет расширение .deb. Низкоуровневый dpkg ведёт локальную базу установленных DEB-пакетов, устанавливает и удаляет локальные файлы пакетов, распаковывает их и запускает предусмотренные сценарии. Сам по себе dpkg не предназначен для поиска пакетов в сети и загрузки недостающих зависимостей из репозиториев.
APT — надстройка над этим уровнем. Она читает настройки репозиториев пакетов, получает и хранит локальные индексы пакетов, выбирает подходящие версии и рассчитывает зависимости. В DEB-репозиториях APT использует индексы доступных бинарных пакетов, обычно известные как Packages, и метаданные выпуска репозитория. После расчёта APT передаёт операции установки и настройки dpkg.
Поэтому установка локального .deb через dpkg и установка по имени пакета через APT решают разные задачи. В первом случае администратор отвечает за доступность зависимостей; во втором APT может найти их среди пакетов подключённых репозиториев. Это не отменяет необходимости проверить состав рассчитанной транзакции перед подтверждением.
APT: apt и apt-get
Команды apt и apt-get относятся к одному стеку APT и используют одну пакетную базу, источники и механизм разрешения зависимостей. В документации APT команда apt позиционируется прежде всего как удобный интерфейс для интерактивной работы администратора: она объединяет часто используемые возможности нескольких утилит APT и может менять формат вывода между версиями.
apt-get — более специализированный интерфейс APT, традиционно применяемый в скриптах и автоматизации. Это не означает, что apt-get универсально лучше для любого сценария: доступные параметры, поведение при запросах и требования к автоматизации нужно сверять с документацией целевого дистрибутива Linux и его релиза. Для ручной работы обычно выбирают apt; для существующих скриптов и воспроизводимых процедур часто используют apt-get, явно задавая нужные параметры.
Практические различия apt и apt-get, просмотр доступных версий, обновление индексов и пакетные операции разобраны в статье «APT в Ubuntu и Debian: установка, обновление, удаление и очистка пакетов».
RPM, rpm, DNF и YUM в RHEL-подобных системах
RPM — формат пакета, обычно с расширением .rpm. Утилита rpm работает с локальной базой RPM-пакетов: может устанавливать, запрашивать сведения, проверять и удалять пакеты. Она не является полноценным менеджером репозиториев: при установке отдельного локального RPM ей неоткуда автоматически подобрать и загрузить все недостающие зависимости.
DNF получает сведения из подключённых RPM-репозиториев, выбирает версии, разрешает зависимости и выполняет рассчитанную транзакцию через RPM-стек. RPM-репозитории публикуют метаданные в формате rpm-md: основной указатель обычно расположен в repodata/repomd.xml, а связанные метаданные содержат сведения о доступных пакетах, зависимостях и других свойствах. Это другой формат и структура, чем индексы APT для DEB-репозиториев.
YUM исторически был высокоуровневым менеджером RPM-пакетов. В современных поддерживаемых RHEL-подобных системах основным интерфейсом обычно выступает DNF. Поэтому краткий ответ на вопрос «dnf — что это?» такой: это менеджер пакетов RPM-семейства, который управляет репозиториями, зависимостями и транзакциями поверх RPM.
YUM vs DNF: почему ответ зависит от релиза
Нельзя одинаково описать yum во всех версиях RHEL, Rocky Linux, AlmaLinux и CentOS. Набор пакетов, реализация команды и поддерживаемый синтаксис зависят от конкретного дистрибутива и основного релиза. Например, документация Red Hat для RHEL 8 и RHEL 9 описывает yum как совместимый интерфейс, предоставляемый через DNF: вызов yum направляется на DNF. Это не делает классический YUM и DNF одной программой и не позволяет переносить такое утверждение на любой старый или будущий выпуск.
В RHEL-подобной системе нужно сначала определить фактический релиз и сверить документацию именно для него. Особенно это важно для старых систем, неподдерживаемых выпусков и автоматизации, где различие параметров или поведения может изменить результат. Статус CentOS и различия между его вариантами рассмотрены отдельно в статье «CentOS Stream и CentOS 7: статус поддержки, различия и выбор сценария».
Практические операции DNF и YUM, а также проверка рассчитанных изменений вынесены в материал «DNF и YUM: установка, обновление и удаление пакетов в RHEL-подобных Linux».
Чем DEB отличае тся от RPM
Оба формата решают общую задачу: поставляют файлы программы вместе с метаданными, сведениями о версии, архитектуре и, при необходимости, сценариями обслуживания. Главное практическое различие — не расширение файла, а пакетная экосистема вокруг него: формат метаданных, локальная база установленных пакетов, правила именования зависимостей, репозитории, механизмы разрешения версий и штатные инструменты управления.
DEB-пакет создаётся для Debian-совместимой экосистемы и обрабатывается dpkg/APT. RPM-пакет создаётся для RPM-экосистемы и обрабатывается rpm/DNF или YUM. Один и тот же продукт может выпускаться в обоих форматах, но это будут отдельные сборки, рассчитанные на разные библиотеки, зависимости, расположение файлов и правила целевой ОС.
Почему нельзя переносить пакеты, репозитории и команды
Не смешивайте пакетные семейства
Инструкция для Ubuntu может предполагать имя DEB-пакета, APT-репозиторий, сервисный файл и версию библиотеки, которых нет в RHEL. Инструкция для RHEL, в свою очередь, может ссылаться на RPM-пакет, DNF-плагин или rpm-md-репозиторий, не имеющий аналога в Debian. Даже одинаковое имя приложения не гарантирует одинаковые имя пакета, версию, зависимости или параметры службы.
- Не добавляйте репозиторий другого дистрибутива или другого основного релиза без явно заявленной совместимости поставщика.
- Не заменяйте
aptнаdnfилиyumпростой подстановкой в команде: различаются имена пакетов, параметры и модель репозиториев. - Не устанавливайте локальный пакет, пока не подтверждены его архитектура, целевая ОС, релиз и источник.
- Перед подтверждением транзакции читайте список устанавливаемых, обновляемых и удаляемых пакетов.
Смешивание чужих пакетов или источников может привести к неразрешимым зависимостям, конфликтам файлов, замене системных библиотек либо неподдерживаемой конфигурации. Если пакетная операция уже завершилась ошибкой, не следует удалять блокировки или принудительно менять базу пакетов без выяснения причины: для этого есть материал «Не устанавливаются пакеты в Linux: блокировки, зависимости и ошибки APT/DNF».
Как выбрать правильный инструмент
| Задача | Debian и Ubuntu | RHEL-подобные системы |
|---|---|---|
| Узнать и применить пакеты из штатных репозиториев | APT: обычно apt для интерактивной работы или apt-get в подходящей автоматизации | DNF; доступность yum п роверяют по релизу |
| Учесть или исследовать локальный пакет | dpkg для .deb | rpm для .rpm |
| Работать с зависимостями и несколькими пакетами | APT рассчитывает транзакцию и передаёт операции dpkg | DNF/YUM рассчитывают транзакцию в RPM-экосистеме |
| Выбрать инструкцию | Только для Debian/Ubuntu и точного релиза | Только для RHEL-подобной ОС и точного релиза |
Перед любой пакетной работой определите семейство и релиз установленной ОС, затем используйте её официальную документацию и репозитории. Если задача связана с обновлением сервера, ядра или возможной перезагрузкой, порядок подготовки и проверки описан отдельно в статье «Обновление Linux-сервера: пакеты, ядро, перезагрузка и откат».
Термины в статье
- Дистрибутив Linux
- Дистрибутив Linux — готовая операционная система на базе ядра Linux, включающая набор программ, репозитории, пакетный менеджер и правила обновления и сопровождения.
- Зависимость пакета
- Зависимость пакета — требование пакета к другому пакету или его версии, без выполнения которого установка, запуск либо корректное обновление ПО невозможны или ограничены.
- Индекс пакетов
- Индекс пакетов — набор метаданных репозитория, содержащий сведения о версиях, зависимостях, архитектурах и расположении доступных пакетов.
- Кэш пакетов
- Кэш пакетов — локально сохранённые менеджером пакетов архивы пакетов и, в зависимости от реализации, метаданные репозиториев для повторного использования.
- Менеджер пакетов
- Менеджер пакетов — средство установки, обновления, удаления и учёта программных пакетов; высокоуровневые менеджеры также работают с репозиториями и разрешают зависимости.
- Пакетная транзакция
- Пакетная транзакция — согласованный набор действий по установке, обновлению, удалению и настройке пакетов, формируемый менеджером пакетов в рамках одной команды или задания.
- Репозиторий пакетов
- Репозиторий пакетов — структурированный источник пакетов и метаданных, из которого менеджер пакетов получает версии ПО, зависимости, обновления и информацию о подписях.
- Системная служба
- Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
- AlmaLinux
- AlmaLinux — корпоративный дистрибутив Linux, поддерживаемый сообществом и AlmaLinux OS Foundation, ориентированный на совместимость с интерфейсами и экосистемой RHEL.
- APT
- APT — система управления пакетами в Debian-подобных Linux, которая получает пакеты из репозиториев, разрешает зависимости и передаёт установку низкоуровневому менеджеру dpkg.
- CentOS Linux
- CentOS Linux — прекращённый свободно доступный дистрибутив Linux, создававшийся из исходных пакетов RHEL и ориентированный на бинарную совместимость с соответствующим выпуском RHEL.
- CentOS Stream
- CentOS Stream — дистрибутив Linux с непрерывной поставкой пакетов, формирующих следующую минорную версию Red Hat Enterprise Linux; он расположен между Fedora и RHEL.
- DEB-пакет
- DEB-пакет — архивный формат распространения ПО в Debian-совместимых Linux, содержащий файлы программы, метаданные и сведения о зависимостях.
- Debian
- Debian — универсальный дистрибутив Linux с пакетами DEB и системой APT, известный консервативной веткой Stable и разделением репозиториев по веткам разработки.
- DNF
- DNF — менеджер пакетов для RPM-дистрибутивов, разрешающий зависимости и выполняющий операции с репозиториями; в современных системах он заменил классический YUM.
- dpkg
- dpkg — низкоуровневый менеджер пакетов Debian, устанавливающий пакеты из локальных .deb-файлов, удаляющий установленные пакеты и ведущий их базу без загрузки зависимостей из репозиториев.
- RHEL
- RHEL — корпоративный дистрибутив Linux от Red Hat с фиксированными основными версиями, сертификационной экосистемой и моделью сопровождения, зависящей от подписки.
- Rocky Linux
- Rocky Linux — корпоративный дистрибутив Linux, создаваемый из исходных пакетов экосистемы RHEL и ориентированный на совместимость с RHEL без использования его товарных зна ков.
- RPM-пакет
- RPM-пакет — файл формата RPM для распространения бинарного ПО или исходного кода. Он содержит метаданные и обычно полезную нагрузку; зависимости и сценарии необязательны.
- Ubuntu Server
- Ubuntu Server — серверный вариант дистрибутива Ubuntu на базе Debian с APT и типовыми средствами автоматизации, доступный в виде установочных и готовых образов.
- YUM
- YUM — менеджер пакетов для RPM-дистрибутивов Linux, который устанавливает, обновляет и удаляет ПО, автоматически разрешая зависимости из репозиториев.
