Вики / Пакеты
apt / dpkg (пакеты)
Установка, обновление и удаление пакетов в 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 # зафиксировать версию
См. также
- systemctl — Службы и systemd