Введение: зачем нужны менеджеры пакетов и как они работают
Менеджер пакетов - это инструмент, который автоматизирует установку, обновление, настройку и удаление программного обеспечения в Linux. Без него администрирование превратилось бы в ручную сборку из исходников с бесконечным разрешением зависимостей. Менеджер пакетов берет на себя отслеживание версий, проверку совместимости библиотек и поддержание целостности системы.
В основе каждого менеджера лежит формат пакета и низкоуровневый инструмент для работы с ним. APT опирается на формат .deb и утилиту dpkg. DNF и YUM работают с форматом .rpm и утилитой rpm. Pacman использует собственный формат .pkg.tar.zst и встроенную базу данных. Когда вы даете команду установить nginx, менеджер скачивает пакет из репозитория, проверяет зависимости, загружает недостающие библиотеки и передает файлы низкоуровневому инструменту для распаковки и настройки.
Эта статья - практический справочник. Вы найдете точные команды для поиска, установки, обновления и удаления пакетов в четырех основных менеджерах. Если вы администрируете Debian-сервер и вам нужно быстро переключиться на Rocky Linux, таблица сравнения и пошаговые примеры сэкономят время. Материал дополняет практическое руководство по Linux для IT-специалистов и углубляется в детали пакетного менеджмента.
Сравнительная таблица основных команд APT, DNF, YUM и Pacman
Таблица закрывает главную боль администратора: «Я знаю команду в apt, но как это сделать в dnf?». Держите ее в закладках.
| Действие | APT (Debian/Ubuntu) | DNF (Fedora/RHEL 8+) | YUM (RHEL 7/CentOS 7) | Pacman (Arch Linux) |
|---|---|---|---|---|
| Поиск пакета | apt search nginx | dnf search nginx | yum search nginx | pacman -Ss nginx |
| Установка пакета | apt install nginx | dnf install nginx | yum install nginx | pacman -S nginx |
| Удаление пакета | apt remove nginx | dnf remove nginx | yum remove nginx | pacman -R nginx |
| Удаление с конфигами | apt purge nginx | dnf remove nginx | yum remove nginx | pacman -Rns nginx |
| Обновление списка пакетов | apt update | dnf check-update | yum check-update | pacman -Sy |
| Обновление системы | apt upgrade | dnf upgrade | yum update | pacman -Syu |
| Очистка кэша | apt clean | dnf clean all | yum clean all | paccache -r |
| Информация о пакете | apt show nginx | dnf info nginx | yum info nginx | pacman -Si nginx |
| Список установленных | apt list --installed | dnf list installed | yum list installed | pacman -Q |
DNF и YUM синтаксически близки: dnf - прямая замена yum в Fedora и RHEL 8+. Команды взаимозаменяемы в 90% случаев. Pacman использует короткие флаги, которые нужно запомнить: -S для синхронизации, -R для удаления, -Q для запросов к локальной базе.
Поиск и установка пакетов
Установка ПО - самая частая операция. Разберем точные команды для каждого менеджера с примерами вывода.
APT: поиск и установка в Debian/Ubuntu
Поиск по имени и описанию:
apt search nginx
Вы получите список пакетов, в имени или описании которых встречается «nginx». Чтобы сузить выдачу, используйте grep:
apt search nginx | grep -i "web server"
Установка одного или нескольких пакетов:
sudo apt install nginx
sudo apt install nginx certbot python3-certbot-nginx
APT автоматически разрешает зависимости и предлагает подтвердить установку. Флаг -y подавляет запрос:
sudo apt install -y nginx
Установка локального .deb файла выполняется через dpkg. Зависимости при этом не разрешаются:
sudo dpkg -i /path/to/package.deb
Если dpkg сообщил о неудовлетворенных зависимостях, исправьте их командой:
sudo apt install -f
APT доустановит недостающие библиотеки и завершит настройку пакета.
DNF и YUM: поиск и установка в Fedora/RHEL
DNF - современный менеджер, заменивший YUM в Fedora 22 и RHEL 8. Он быстрее разрешает зависимости и имеет четкий API. Синтаксис команд идентичен yum в базовых операциях.
Поиск пакета:
dnf search nginx
DNF ищет по имени и сводке пакета. Для поиска по описанию добавьте флаг --searchall:
dnf search --searchall "web server"
Установка:
sudo dnf install nginx
sudo dnf install nginx certbot python3-certbot-nginx
DNF показывает транзакцию: какие пакеты будут установлены, обновлены или удалены. Это прозрачнее, чем в APT.
Установка локального .rpm файла:
sudo dnf install /path/to/package.rpm
DNF сам разрешит зависимости, если они доступны в подключенных репозиториях. Это удобнее, чем связка rpm -i + yum install, которая требовалась в эпоху YUM.
Подробный разбор RPM и DNF с настройкой репозиториев EPEL и RPM Fusion читайте в руководстве по RPM и DNF для CentOS, Fedora и RE OS.
Pacman: поиск и установка в Arch Linux
Pacman оперирует короткими флагами. -S означает sync - синхронизацию с репозиториями.
Поиск пакета:
pacman -Ss nginx
Вывод показывает имя пакета, версию и краткое описание. Для поиска только по имени используйте:
pacman -Ssq nginx
Флаг -q подавляет лишнюю информацию и оставляет только имена пакетов - удобно для скриптов.
Установка:
sudo pacman -S nginx
sudo pacman -S nginx certbot
Pacman устанавливает пакеты и их зависимости одной транзакцией. Если пакет уже установлен, он обновит его до последней версии.
Установка из AUR (Arch User Repository) не выполняется напрямую через pacman. Используйте хелпер, например yay:
yay -S google-chrome
yay автоматически клонирует PKGBUILD, собирает пакет и устанавливает его с зависимостями.
Обновление системы и пакетов
Регулярное обновление закрывает уязвимости. Процесс различается: APT требует двух шагов, DNF и Pacman выполняют всё одной командой.
APT: обновление списка пакетов и апгрейд
APT разделяет синхронизацию индексов и применение обновлений. Сначала загружается актуальный список пакетов из репозиториев:
sudo apt update
Затем применяются обновления установленных пакетов:
sudo apt upgrade
upgrade обновляет пакеты, но не удаляет лишние и не устанавливает новые зависимости, если они требуются для обновления. Если менеджер сообщает «packages have been kept back», используйте full-upgrade:
sudo apt full-upgrade
full-upgrade умнее: он удалит конфликтующие пакеты и установит новые зависимости, чтобы завершить обновление. Это безопасный способ мажорного апгрейда дистрибутива.
DNF/YUM: проверка и применение обновлений
Проверить доступные обновления без их применения:
dnf check-update
Команда выводит список пакетов с новыми версиями и возвращает код 100, если обновления есть. Это удобно для скриптов мониторинга.
Применить все обновления:
sudo dnf upgrade
DNF обновляет индексы и применяет обновления в одной транзакции. Для автоматических обновлений на серверах настройте dnf-automatic:
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
Таймер будет ежедневно загружать и применять обновления безопасности.
Pacman: синхронизация и обновление всей системы
Pacman обновляет индексы и пакеты одной командой:
sudo pacman -Syu
-S синхронизирует базу данных, -y загружает свежие индексы, -u применяет обновления. В rolling-release дистрибутиве Arch Linux обновления выходят непрерывно. Перед крупным апгрейдом проверяйте новости на archlinux.org: иногда требуются ручные вмешательства, например, замена конфигурационных файлов.
Если вы хотите только обновить индексы без применения обновлений:
sudo pacman -Sy
Частичные обновления (-Sy без -u) опасны: новый пакет может требовать библиотеки, которых еще нет в системе. Используйте -Syu всегда, когда устанавливаете или обновляете ПО.
Удаление пакетов и очистка системы
Полное удаление пакета включает три уровня: удаление самого пакета, удаление его зависимостей, удаление конфигурационных файлов. В разных менеджерах это достигается разными командами.
APT: remove, purge и autoremove
Удаление пакета без конфигурационных файлов:
sudo apt remove nginx
Конфиги остаются в /etc. Это позволяет восстановить настройки после повторной установки.
Полное удаление с конфигурациями:
sudo apt purge nginx
purge удаляет пакет и его системные конфигурационные файлы. Пользовательские данные в /home не затрагиваются.
Удаление осиротевших зависимостей:
sudo apt autoremove
APT анализирует дерево зависимостей и удаляет пакеты, которые были установлены автоматически и больше не нужны. Запускайте autoremove после каждого удаления - это освобождает место на диске.
DNF/YUM: remove и autoremove
Удаление пакета:
sudo dnf remove nginx
DNF удаляет пакет и зависимости, которые не требуются другим установленным пакетам. Это поведение по умолчанию, в отличие от APT, где нужен отдельный autoremove.
Если вы хотите удалить только указанный пакет без анализа зависимостей:
sudo dnf remove --noautoremove nginx
Для очистки кэша загруженных пакетов:
sudo dnf clean all
Это удаляет заголовки, метаданные и кэшированные RPM-файлы. Полезно перед созданием образа контейнера или виртуальной машины.
Pacman: удаление с зависимостями и очистка кэша
Удаление только пакета:
sudo pacman -R nginx
Зависимости остаются в системе. Это редко нужно.
Удаление пакета с зависимостями, не требуемыми другим ПО:
sudo pacman -Rs nginx
Флаг -s (recursive) удаляет зависимости. Это аналог apt autoremove.
Удаление пакета, зависимостей и конфигурационных файлов:
sudo pacman -Rns nginx
Флаг -n (nosave) удаляет конфигурационные файлы. Это полный аналог apt purge + autoremove.
Очистка кэша пакетов. Pacman хранит загруженные пакеты в /var/cache/pacman/pkg/. Со временем этот каталог разрастается. Для удаления всех кэшированных версий, кроме трех последних:
sudo paccache -r
Утилита paccache входит в пакет pacman-contrib. Для полной очистки кэша:
sudo pacman -Scc
Эта команда удалит все загруженные пакеты. После нее downgrade до предыдущей версии станет невозможен без повторной загрузки.
Управление репозиториями
Репозитории - источники пакетов. У каждого менеджера свой формат конфигурации и способ добавления сторонних источников.
APT: sources.list и PPA
Основной конфигурационный файл - /etc/apt/sources.list. Дополнительные репозитории подключаются через файлы в /etc/apt/sources.list.d/.
Просмотр активных репозиториев:
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/
Добавление PPA (Personal Package Archive) в Ubuntu:
sudo add-apt-repository ppa:ondrej/php
sudo apt update
PPA - это сторонние репозитории, размещенные на Launchpad. Они удобны для установки свежих версий PHP, Python и другого ПО, но требуют доверия к мейнтейнеру.
Ручное добавление репозитория Debian:
echo "deb https://nginx.org/packages/debian/ bookworm nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
После изменения sources.list всегда запускайте apt update для синхронизации индексов.
DNF/YUM: .repo файлы и dnf repolist
Конфигурация репозиториев хранится в /etc/yum.repos.d/. Каждый репозиторий описывается файлом с расширением .repo.
Просмотр списка репозиториев:
dnf repolist
Команда показывает включенные репозитории. Для просмотра всех, включая отключенные:
dnf repolist all
Добавление репозитория EPEL (Extra Packages for Enterprise Linux) на RHEL 9:
sudo dnf install epel-release
Пакет epel-release добавляет файл /etc/yum.repos.d/epel.repo и GPG-ключ. EPEL содержит тысячи пакетов, отсутствующих в официальных репозиториях RHEL: nginx, certbot, htop.
Ручное создание .repo файла:
sudo tee /etc/yum.repos.d/nginx.repo <<EOF
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/rhel/9/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
После добавления файла выполните dnf check-update для загрузки метаданных нового репозитория.
Pacman: настройка pacman.conf и зеркала
Конфигурация Pacman хранится в /etc/pacman.conf. Секции в квадратных скобках определяют репозитории: [core], [extra], [multilib].
Просмотр активных репозиториев:
grep -E '^\[' /etc/pacman.conf
Для добавления стороннего репозитория, например Arch User Repository (AUR), сам pacman не используется. Вместо этого настройте хелпер yay, который работает с AUR поверх pacman.
Управление зеркалами репозиториев выполняется через файл /etc/pacman.d/mirrorlist. Для автоматического выбора самых быстрых зеркал используйте reflector:
sudo reflector --country Russia --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
Reflector тестирует скорость зеркал и сохраняет отсортированный список. После обновления mirrorlist выполните pacman -Syy для принудительной синхронизации индексов.
Решение типичных проблем и ошибок
Пакетные менеджеры ломаются редко, но метко. Разберем четыре типичные ситуации и команды для восстановления.
Восстановление сломанных зависимостей
Ситуация: установка пакета прервалась, и теперь менеджер сообщает о неудовлетворенных зависимостях.
APT:
sudo apt --fix-broken install
APT проанализирует состояние системы, доустановит недостающие пакеты и завершит прерванную транзакцию. Если это не помогло, попробуйте переконфигурировать все не до конца настроенные пакеты:
sudo dpkg --configure -a
DNF:
sudo dnf distro-sync
distro-sync приводит установленные пакеты в соответствие с репозиториями: обновляет устаревшие, откатывает слишком новые, доустанавливает недостающие зависимости. Это радикальное, но эффективное средство.
Pacman:
sudo pacman -Syu
Повторный запуск полного обновления часто исправляет рассогласование зависимостей. Если пакет конфликтует с существующим, pacman предложит удалить конфликтующий пакет - соглашайтесь.
Ошибки GPG-ключей и блокировки
Ситуация: менеджер сообщает «GPG key ... not found» или «database is locked».
APT - импорт отсутствующего ключа:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID
В современных версиях Debian/Ubuntu apt-key считается устаревшим. Правильный способ - поместить ключ в /etc/apt/trusted.gpg.d/:
curl -fsSL https://example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/example.gpg
Pacman - обновление связки ключей:
sudo pacman-key --init
sudo pacman-key --populate archlinux
Если ключ для конкретного пакета отсутствует, установите пакет archlinux-keyring:
sudo pacman -S archlinux-keyring
Блокировка базы данных. Если менеджер сообщает, что база данных заблокирована, значит предыдущий процесс не завершился корректно. Найдите и удалите stale lock-файл:
sudo rm /var/lib/dpkg/lock-frontend # APT
sudo rm /var/lib/pacman/db.lck # Pacman
Перед удалением убедитесь, что другой экземпляр менеджера действительно не запущен: проверьте через ps aux | grep apt или ps aux | grep pacman.
Заключение: выбор менеджера и лучшие практики
Менеджер пакетов определяется дистрибутивом, а не личными предпочтениями. На Debian и Ubuntu вы работаете с APT, на Fedora и RHEL - с DNF, на Arch - с Pacman. Переключение между ними сводится к запоминанию синтаксиса, и таблица в этой статье решает эту задачу.
Четыре правила безопасной работы с пакетами:
- Проверяйте, что устанавливаете. Перед подтверждением транзакции читайте список пакетов - менеджер может предложить удалить то, что вы не планировали трогать.
- Обновляйтесь регулярно. Еженедельное обновление безопасности снижает риск эксплуатации уязвимостей.
- Используйте официальные репозитории. Сторонние PPA и .repo файлы подключайте только от проверенных мейнтейнеров.
- Делайте резервные копии конфигураций. Перед крупным обновлением скопируйте /etc в безопасное место.
Сохраните эту статью в закладки как шпаргалку. Для углубленного изучения RPM-экосистемы обратитесь к руководству по RPM и DNF. Если вы работаете с Alt Linux, изучите специфику apt-rpm и epm. Для управления пакетами на роутерах Keenetic и OpenWrt подготовлено руководство по Opkg.