linux-labs

Вики / Пакеты

apt / dpkg (пакеты)

Команда Ubuntu 24.04 · Debian ПакетыБазовое

Установка, обновление и удаление пакетов в Debian/Ubuntu; apt и dpkg.

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

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

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

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 -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

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

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

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

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).

sudo apt update && sudo apt upgrade
sudo apt install PKG ; sudo apt purge PKG ; sudo apt autoremove --purge
apt-cache policy PKG              # версии / из какого репо
apt show PKG ; dpkg -L PKG ; dpkg -S /path   # инфо / файлы / чей файл
sudo apt --fix-broken install ; sudo dpkg --configure -a   # чинить
sudo apt-mark hold PKG           # зафиксировать версию

См. также