Менеджеры пакетов: apt, dnf, apk
Как ставить и обновлять софт на разных дистрибутивах: репозитории, update vs upgrade, разница apt/dnf/apk.
Зачем менеджер пакетов
Ставить софт скачиванием бинарника и распаковкой вручную плохо: никто не отслеживает зависимости, обновления и удаление. Менеджер пакетов делает это за тебя: знает, какие библиотеки нужны программе, ставит их, обновляет и умеет аккуратно удалить.
Софт лежит в репозиториях — серверах с пакетами, которым доверяет система. Менеджер скачивает пакеты оттуда и проверяет подписи.
Какой менеджер стоит на машине, зависит от дистрибутива. Это та самая специфика, вокруг которой расходятся дистрибутивы.
apt: Debian и Ubuntu
apt update # обновить список доступных пакетов из репозиториев
apt install nginx # поставить пакет
apt upgrade # обновить установленные пакеты
apt remove nginx # удалить пакет
apt search nginx # найти пакет по имени
Важная пара — update и upgrade, их путают. apt update только
обновляет локальный список того, что доступно в репозиториях. apt upgrade
ставит сами обновления. Перед установкой обычно делают apt update, иначе
ставится версия из устаревшего списка.
dnf: RHEL, Rocky, AlmaLinux, Fedora
dnf install nginx
dnf upgrade
dnf remove nginx
dnf search nginx
В этом семействе отдельного шага «обновить список» нет: dnf проверяет
репозитории сам перед операцией. Старое имя команды — yum, на свежих
системах это синоним dnf.
apk: Alpine
apk add nginx # поставить
apk del nginx # удалить
apk update # обновить индекс
apk upgrade # обновить пакеты
Alpine минималистичный, его apk очень быстрый. Поэтому Alpine — частая
основа для маленьких Docker-образов: apk add --no-cache ставит пакет, не
оставляя кеш индекса в слое образа.
В Dockerfile
Внутри образов есть нюанс: после установки чистят кеш, чтобы не раздувать слой. Иначе скачанные списки пакетов навсегда останутся в образе.
# Debian/Ubuntu
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
# Alpine
RUN apk add --no-cache curl
apt-get (а не apt) используют в скриптах и Dockerfile: у него
стабильный вывод без интерактивных подсказок.
Что важно запомнить
Менеджер пакетов ставит софт из доверенных репозиториев и тянет
зависимости. Команда зависит от дистрибутива: apt (Debian/Ubuntu),
dnf (RHEL-семейство), apk (Alpine).
update обновляет список доступного, upgrade ставит сами обновления.
Их постоянно путают. В Dockerfile берут apt-get/apk --no-cache и чистят
кеш, чтобы не раздувать слой.
В связке с systemd из прошлых уроков: когда ставишь пакет менеджером, он обычно сразу заводит systemd-юнит сервиса.
Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс