Перейти к содержимому

Пакеты: apt без сюрпризов

Установка, обновление и удаление пакетов, удержание версий, сторонние репозитории и поиск установленного.

Уровень
Новичок
Время чтения
2 мин чтения
Обновлено
Проверено на
Ubuntu 22.04, Ubuntu 24.04, Debian 12
Содержание
  1. Основные команды
  2. upgrade и full-upgrade
  3. Нужна ли перезагрузка
  4. Удержать версию
  5. Сторонние репозитории
  6. Что установлено
  7. Частые ошибки

В Ubuntu и Debian программы ставятся из репозиториев через apt. Пакетный менеджер сам разрешает зависимости и обновляет всё одной командой — поэтому ставить софт из архивов вручную стоит только тогда, когда пакета действительно нет.

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

ЗадачаКоманда
Обновить списки пакетовapt update
Обновить установленноеapt upgrade
Найти пакетapt search nginx
Описание и версияapt show nginx
Установитьapt install nginx
Удалить вместе с настройкамиapt purge nginx
Убрать ненужные зависимостиapt autoremove

upgrade и full-upgrade

apt upgrade не удаляет пакеты, поэтому часть обновлений может остаться отложенной (kept back). apt full-upgrade разрешает удаление и установку, если это нужно для обновления, — например, при смене зависимостей ядра.

bash
$ apt update$ apt list --upgradable$ apt full-upgrade

Нужна ли перезагрузка

После обновления ядра или системных библиотек может появиться файл-флаг:

bash
$ ls /var/run/reboot-required 2>/dev/null && cat /var/run/reboot-required.pkgs

Если файл существует — запланируйте перезагрузку. На Debian 12 флаг создаётся не всегда; надёжнее поставить пакет needrestart — после обновления он сам подскажет, какие службы перезапустить и нужна ли перезагрузка.

Удержать версию

Чтобы пакет не обновлялся (например, вы проверяете совместимость новой версии), поставьте его на удержание:

bash
$ apt-mark hold postgresql-16$ apt-mark showhold$ apt-mark unhold postgresql-16

Сторонние репозитории

Добавляйте только официальные репозитории разработчиков (Docker, PostgreSQL, Node.js) по их инструкции. Современный способ — ключ в /etc/apt/keyrings и опция signed-by в описании источника, а не устаревший apt-key.

bash
$ ls /etc/apt/sources.list.d/$ grep -r signed-by /etc/apt/sources.list.d/

Что установлено

bash
$ dpkg -l | grep nginx$ apt list --installed 2>/dev/null | wc -l$ dpkg -S /usr/sbin/nginx

Последняя команда отвечает на вопрос «из какого пакета этот файл».

Частые ошибки

  • «Could not get lock /var/lib/dpkg/lock-frontend» — параллельно работает другой apt, чаще всего автообновления. Подождите несколько минут; не удаляйте lock-файлы вручную.
  • Прерванная установка — выполните dpkg --configure -a, затем apt install -f.
  • Ошибка подписи репозитория (NO_PUBKEY) — ключ стороннего репозитория устарел. Скачайте актуальный по инструкции разработчика.

Дочитайте до конца — статья засчитается в обучении автоматически.

  • apt
  • пакеты
  • обновление
  • репозиторий
  • dpkg

Статья помогла?