С чего начать Первые шаги трек · 15 ступеней
Linux Labs

apt / dpkg — управление пакетами

4 мин Ubuntu 24.04 · Debian

Установка, обновление и удаление пакетов в Debian и Ubuntu: apt, dpkg, репозитории и зависимости.

Шпаргалка

10 команд Версия для печати
  • sudo apt update && sudo apt upgrade обновить индекс, затем поставить обновления
  • sudo apt install nginx поставить пакет
  • sudo apt purge nginx удалить пакет вместе с конфигами
  • sudo apt autoremove --purge снести осиротевшие зависимости
  • apt-cache policy nginx версии пакета и из какого репо
  • dpkg -L nginx какие файлы принёс пакет
  • dpkg -S /usr/sbin/nginx какому пакету принадлежит файл
  • sudo apt --fix-broken install доустановить зависимости после сбоя
  • sudo dpkg --configure -a доконфигурировать прерванный dpkg
  • sudo apt-mark hold nginx зафиксировать версию пакета

Обзор

В Debian/Ubuntu пакетами управляют:

  • apt — высокоуровневый менеджер (репозитории, зависимости, обновления);
  • dpkg — низкоуровневый (один .deb-файл, без разрешения зависимостей).

Источники репозиториев — /etc/apt/sources.list и /etc/apt/sources.list.d/ (новый формат — *.sources, deb822).

Ключи

14

apt устроен по подкомандам (apt install, apt remove…), а не по флагам одной команды; ниже — основные подкоманды и ключи. Полный список — man apt, man dpkg.

Ключ Что делает Пример
update Обновить индекс пакетов из репозиториев; сама ничего не устанавливает. sudo apt update
upgrade Установить доступные обновления без удаления пакетов. sudo apt upgrade
install Поставить пакет (и его зависимости). sudo apt install nginx
remove Удалить пакет, конфиги в /etc остаются. sudo apt remove nginx
-l Список установленных пакетов по маске имени. dpkg -l | grep nginx
-L Какие файлы принадлежат установленному пакету. dpkg -L nginx
purge Удалить пакет вместе с конфигурационными файлами. опасно sudo apt purge nginx
autoremove Снести пакеты, поставленные как зависимости и больше не нужные. опасно sudo apt autoremove --purge
-y --yes Не спрашивать подтверждения; для скриптов и автоматизации. опасно sudo apt install -y nginx
--fix-broken Доустановить недостающие зависимости после прерванной установки. sudo apt --fix-broken install
-S Какому пакету принадлежит указанный файл. dpkg -S /usr/sbin/nginx
-i Поставить локальный .deb-файл напрямую, без разрешения зависимостей. sudo dpkg -i package.deb
full-upgrade Обновить с разрешением удалить конфликтующие пакеты — осторожнее, чем upgrade. опасно sudo apt full-upgrade
--configure -a Доконфигурировать все пакеты, оставшиеся распакованными после сбоя. sudo dpkg --configure -a

Ничего не найдено. Попробуй запрос короче.

Рецепты

2

apt

bash
sudo apt update                   # обновить ИНДЕКС пакетов (не ставит обновления)
sudo apt upgrade                  # установить доступные обновления
sudo apt full-upgrade             # + с удалением конфликтующих (осторожнее)
sudo apt install nginx            # поставить
sudo apt install nginx=1.24\*     # конкретную версию
sudo apt install --reinstall nginx
sudo apt remove nginx             # удалить (конфиги остаются)
sudo apt purge nginx              # удалить вместе с конфигами
sudo apt autoremove --purge       # снести осиротевшие зависимости
apt search keyword ; apt show nginx ; apt list --installed
apt-cache policy nginx            # доступные версии и из какого репо
sudo apt-mark hold nginx          # зафиксировать версию (unhold — снять)
sudo apt download nginx           # скачать .deb, не ставя

dpkg и репозитории

bash
dpkg -l | grep nginx              # установлен ли
dpkg -L nginx                     # какие файлы принёс пакет
dpkg -S /usr/sbin/nginx           # какому пакету принадлежит файл
sudo dpkg -i package.deb          # поставить локальный .deb (затем apt -f install)
dpkg --get-selections             # список для переноса на другую машину

# добавить сторонний репозиторий (современно, с ключом):
curl -fsSL https://repo.example.com/key.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://repo.example.com stable main" \
  | sudo tee /etc/apt/sources.list.d/example.list
sudo apt update

Неполадки

5

«Could not get lock /var/lib/dpkg/lock»

Уже запущен apt/unattended-upgrades. Подожди или найди процесс (ps aux | grep -E 'apt|dpkg', см. processes). Не убивай dpkg на полпути.

dpkg прервался, «broken packages»

bash
sudo dpkg --configure -a          # доконфигурировать прерванное
sudo apt --fix-broken install     # доустановить зависимости

apt update: NO_PUBKEY / 404 / repository changed

Битый/устаревший источник в sources.list.d/. Поправь URL или добавь ключ (signed-by=, не устаревший apt-key). Изменился Suite → --allow-releaseinfo-change.

Конкретная версия / откат

apt-cache policy PKG — что доступно; apt install pkg=версия; зафиксировать — apt-mark hold. Без интернета (как в лаб-ВМ) — прокси/зеркало (apt-cacher-ng).

Освободить место от кэша

sudo apt clean (весь кэш) / autoclean (только устаревшее); autoremove --purge (см. disk-usage).

Термины

7
пакет package
Единица поставки файлов и метаданных, учитываемая пакетным менеджером. Ещё встречается в: unattended-upgrades: обновления безопасности без участия человека, snap, nmap: какие порты видны снаружи, Capabilities: права root по частям и ещё 44
репозиторий пакетов package repository
Источник пакетов и описывающих их индексов, доступный по сети или локально.
индекс пакетов package index
Метаданные об известных пакетах и версиях; локальная копия может устареть.
зависимость пакета package dependency
Требование пакета к другому пакету, иногда с ограничением версии.
кандидат на установку installation candidate
Версия, которую APT выбирает по текущим сведениям и политике; не обязательно уже установленная.
архитектура пакета package architecture
Целевая архитектура пакета; all обозначает независимое от архитектуры содержимое, не любую ОС.
conffile
Конфигурационный файл, явно зарегистрированный пакетом для специальной обработки локальных изменений dpkg.

См. также

  • systemctl — Управление службами systemd — start/stop/restart/status/enable/reload.
Загрузка…