Управление пакетами: apt, yum, dnf, pacman, zypper

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Управление пакетами — основа установки, обновления и удаления программ в Linux.

📌 О чём эта статья?

В Linux программы устанавливаются не через .exe или .dmg, а через менеджеры пакетов — инструменты, которые автоматически управляют зависимостями, обновлениями и целостностью системы.

В этой статье вы узнаете:

  • Что такое пакеты и зачем они нужны
  • Как работают основные менеджеры пакетов: apt, dnf, pacman, zypper
  • Основные команды для установки, обновления и удаления
  • Различия между дистрибутивами
  • Практические советы и лучшие практики

🧩 Что такое пакет и менеджер пакетов?

Пакет — это архив с программой, её зависимостями, метаданными и скриптами установки.

Менеджер пакетов — утилита, которая:

  • Устанавливает, обновляет, удаляет пакеты
  • Решает зависимости (автоматически устанавливает нужные библиотеки)
  • Проверяет целостность и подлинность
  • Ведёт реестр установленных программ

NOTE

В отличие от ручной установки (make install), менеджеры пакетов позволяют чисто удалить программу и отслеживать обновления.
Источник: Linux Foundation — Package Management


🔧 Основные менеджеры пакетов и их дистрибутивы

МенеджерДистрибутивыОсновной формат пакета
apt / apt-getDebian, Ubuntu, Mint.deb
dnfFedora, RHEL 8+, CentOS 8+.rpm
yumRHEL/CentOS 7 и ранее.rpm
pacmanArch Linux, Manjaro.pkg.tar.zst
zypperopenSUSE, SLES.rpm

INFO

dnf — это замена yum, более быстрая и надёжная.
apt — современная обёртка над apt-get, с улучшенным UX.


📦 apt — Debian, Ubuntu, Linux Mint

🔹 Основные команды

sudo apt update                    # Обновить список пакетов
sudo apt upgrade                   # Обновить установленные пакеты
sudo apt install nginx             # Установить пакет
sudo apt remove nginx              # Удалить пакет (оставляет конфиги)
sudo apt purge nginx               # Полное удаление (включая конфиги)
sudo apt autoremove                # Удалить неиспользуемые зависимости
sudo apt search firefox            # Поиск пакета
sudo apt show nginx                # Показать информацию о пакете

🔹 Дополнительно

sudo apt full-upgrade              # Обновление с возможным удалением пакетов
sudo apt list --upgradable         # Список доступных обновлений
sudo apt edit-sources              # Открыть sources.list в редакторе

INFO

Файлы репозиториев: /etc/apt/sources.list, /etc/apt/sources.list.d/
Кэш: /var/cache/apt/archives/


🔧 dnf — Fedora, RHEL 8+, CentOS 8+

dnf (Dandified YUM) — современная замена yum.

🔹 Основные команды

sudo dnf check-update              # Проверить обновления
sudo dnf upgrade                   # Обновить систему
sudo dnf install httpd             # Установить пакет
sudo dnf remove httpd              # Удалить
sudo dnf autoremove                # Удалить "сирот"
sudo dnf search vim                # Поиск
sudo dnf info httpd                # Информация о пакете
sudo dnf clean all                 # Очистить кэш

🔹 Группы пакетов (например, “Web Server”)

sudo dnf group list                # Список групп
sudo dnf group install "Web Server"

WARNING

В RHEL/CentOS 7 и ранее используется yum.
Начиная с версии 8 — только dnf.


🔙 yum — RHEL 7, CentOS 7 (устаревший)

CAUTION

yum устарел и не рекомендуется к использованию в новых системах.

🔹 Основные команды (аналогичны dnf)

sudo yum update
sudo yum install httpd
sudo yum remove httpd
sudo yum search nano
sudo yum clean all

INFO

В RHEL 7/CentOS 7 yum — стандарт.
Но уже содержит dnf как опцию.


🏹 pacman — Arch Linux, Manjaro

pacman — простой, быстрый и мощный менеджер пакетов.

🔹 Основные команды

sudo pacman -Syu                    # Обновить систему (синхронизация + обновление)
sudo pacman -S nginx                # Установить пакет
sudo pacman -R nginx                # Удалить пакет
sudo pacman -Rns nginx              # Полное удаление (включая зависимости)
sudo pacman -Q                      # Список установленных пакетов
sudo pacman -Qs nginx               # Поиск в локальной базе
sudo pacman -Ss firefox             # Поиск в репозиториях
sudo pacman -Si nginx               # Информация о пакете

🔹 Дополнительно

sudo pacman -Sc                     # Очистить кэш (сохраняя текущие пакеты)
sudo pacman -Scc                    # Полная очистка кэша

INFO

Arch Linux использует rolling release — обновления выходят сразу.
Регулярное обновление (-Syu) — критически важно.
Источник: Arch Wiki — Pacman


🔄 zypper — openSUSE, SUSE Linux Enterprise

zypper — мощный менеджер пакетов с поддержкой сложных сценариев.

🔹 Основные команды

sudo zypper refresh                 # Обновить репозитории
sudo zypper update                  # Обновить пакеты
sudo zypper install nginx           # Установить
sudo zypper remove nginx            # Удалить
sudo zypper search firefox          # Поиск
sudo zypper info nginx              # Информация
sudo zypper lr                      # Список репозиториев
sudo zypper dup                     # Обновить систему (dist-upgrade)

🔹 Работа с репозиториями

sudo zypper ar https://repo.url repo-name   # Добавить репозиторий
sudo zypper rr repo-name                    # Удалить

INFO

openSUSE предлагает два варианта:


🔍 Сравнение команд: таблица

Задачаaptdnfpacmanzypper
Обновить индексapt updatednf check-updatezypper refresh
Обновить системуapt upgradednf upgradepacman -Syuzypper update или dup
Установить пакетapt install pkgdnf install pkgpacman -S pkgzypper install pkg
Удалить пакетapt remove pkgdnf remove pkgpacman -R pkgzypper remove pkg
Полное удалениеapt purge pkgdnf remove pkgpacman -Rns pkgzypper remove --clean-deps pkg
Поискapt search pkgdnf search pkgpacman -Ss pkgzypper search pkg
Информацияapt show pkgdnf info pkgpacman -Si pkgzypper info pkg
Очистка кэшаapt cleandnf clean allpacman -Sczypper clean --all

🧪 Практические примеры

Пример 1: Установка веб-сервера

Ubuntu:

sudo apt update && sudo apt install nginx

Fedora:

sudo dnf install nginx

Arch:

sudo pacman -S nginx

openSUSE:

sudo zypper install nginx

Пример 2: Обновление всей системы

Debian/Ubuntu:

sudo apt update && sudo apt upgrade

Fedora:

sudo dnf upgrade

Arch:

sudo pacman -Syu

openSUSE:

sudo zypper refresh && sudo zypper update

Лучшие практики и советы

  1. Регулярно обновляйте систему — особенно на серверах.
  2. Не смешивайте менеджеры пакетов (например, rpm и yum напрямую).
  3. Избегайте --force — это может нарушить зависимости.
  4. Перед массовым удалением проверьте, что будет удалено.
  5. Используйте autoremove для очистки “сирот”.

🔄 Современные альтернативы: Flatpak, Snap, AppImage

Для пользовательских приложений (браузеры, редакторы) используются универсальные пакеты:

ФорматПоддержкаОсобенности
FlatpakПочти все дистрибутивыИзолированные приложения, порталы
SnapUbuntu (по умолчанию), другиеАвтообновления, “всё в одном”
AppImageЛюбая системаПортативные исполняемые файлы

TIP

Используйте их для десктоп-приложений, но не для системных служб.


📊 Диагностика и восстановление

Проблема: повреждённая база пакетов

Debian/Ubuntu:

sudo apt --fix-broken install
sudo dpkg --configure -a

Fedora/RHEL:

sudo dnf clean all
sudo dnf update

Arch:

sudo pacman -Syu --overwrite '*'

INFO

Всегда делайте бэкап перед критическими операциями.


✅ Заключение

Теперь вы можете уверенно управлять пакетами в любом дистрибутиве:

  • Устанавливать, обновлять и удалять программы
  • Понимать различия между apt, dnf, pacman, zypper
  • Диагностировать и исправлять проблемы с пакетами

QUOTE

“Хороший администратор — это тот, кто никогда не использует --force без бэкапа.”