Debian update/upgrade

Пакетный менеджер APT

apt update

Комманда обновляет только информацию о том, какие версии пакетов доступны в репозиториях.

  • Читает список репозиториев: /etc/apt/sources.list и /etc/apt/sources.list.d/
  • Скачивает служебные файлы, проверяет подписи и контрольные суммы, сохраняет обновлённые списки пакетов.
  • После apt update система знает, какие версии доступны.
apt upgrade

Комманда обновляет уже установленные пакеты до новых доступных версий. Работает в более осторожном режиме. Обновляет установленные пакеты, но старается не удалять установленные пакеты, не устанавливать новые пакеты, если это нужно для обновления. Статусы пакетов:

  • will be upgraded — эти пакеты будут обновлены;
  • newly installed — новые пакеты, если они нужны как зависимости;
  • to remove — пакеты, которые будут удалены;
  • not upgraded / kept back — пакеты, которые не обновились.

apt full-upgrade

Комманда работает в полном режиме обновления. Может обновлять пакеты, устанавливать новые зависимости, удалять конфликтующие или устаревшие пакеты.

Исполнить комманду apt upgrade без apt update не грамотно. Потому что APT должен откуда-то узнать о новых версиях. Если вы давно не делали apt upgrade, то локальные списки пакетов устарели. Система может считать, что обновлений нет, хотя в репозиториях уже есть новые версии.

Как не сломать свои сервисы с apt upgrade

Бывают ситуации, когда автоматическое обновление пакетов может принести большую головную боль! Например на VPS крутиться gitlab-runner. Обновив весь сервер, runner может стать не совместимым с сервером gitlab.

Для более тонкой работы с обновлениями пригодятся такие комманды:

Список всех пакетов, которые будут обновлены:
apt list --upgradable
Поставить метку игнорирования обновления для пакета:
apt-mark hold имя_пакета
Список пакетов с меткой:
apt-mark showhold
Убрать метку:
apt-mark unhold имя_пакета

Изменить версию пакета

Если пакет уже обновился, а вам нужна другая версия пакета.

Посмотреть какие версии для определенного пакета доступны:
apt-cache madison gitlab-runner
Установить конкретную версию:
apt install gitlab-runner=17.x.x

На этом заканчиваю. Удачных и легких вам обновлений!