Гид по технологиям

Как безопасно обновить Debian до следующего релиза

• 6 min read • Linux • Обновлено 25 Nov 2025
Безопасное обновление Debian до следующего релиза
Безопасное обновление Debian до следующего релиза

Иллюстрация: процесс обновления Debian

В течение примерно двух лет Debian остаётся относительно неизменным: версии программ и поведение системы держатся стабильными, а критические исправления внедряются обратной портировкой. Иногда допускают обновления драйверов или редких пакетов, но это исключение, а не правило. Такая предсказуемость снижает вероятность поломок и неожиданных изменений после обновлений.

Тем не менее каждые ≈2 года выходит новый релиз Debian со значительными улучшениями и новыми возможностями. Процесс обновления между последовательными мажорными релизами обычно надёжен, если система корректно подготовлена.

В этой статье вы найдёте пошаговое руководство по безопасному обновлению Debian, рекомендации для десктопов и серверов, чек-листы, сценарии отката и типичные ошибки с объяснениями, как их решать.

Ключевые термины

  • sources.list — файл со списком репозиториев APT, по которому система получает пакеты.
  • кодовое имя релиза — внутреннее имя версии Debian (пример: stretch, buster, bullseye).

Перед началом

Important: сделайте резервную копию системы перед обновлением. Минимум — бэкап /etc и списка установленных пакетов: sudo dpkg –get-selections >~/packages.list. Без резервной копии восстановление после серьёзной ошибки может оказаться трудоёмким.

Notes: обновляйте только на один релиз за раз (например, с Debian 9 → 10, а не 9 → 11 напрямую).

Шаг 1. Очистите sources.list от сторонних репозиториев

Многие проблемы при обновлении возникают из-за сторонних репозиториев или вручную установленных .deb. Удалите или закомментируйте все строки, не относящиеся к официальным репозиториям Debian.

Откройте файл для правки:

sudo nano /etc/apt/sources.list

Удалите строки, указывающие на PPA, сторонние сайты или локальные репозитории. В файле остаётся минимальный набор строк, соответствующий вашему текущему релизу. Пример шаблона (сохраните кодовое имя текущего выпуска):

deb http://deb.debian.org/debian stretch main
deb http://deb.debian.org/debian stretch-updates main
deb http://deb.debian.org/debian-security/ stretch/updates main

Если в ваших строках указаны дополнительные секции (contrib, non-free), сохраните их в конце каждой строки:

deb http://deb.debian.org/debian stretch main contrib non-free
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb http://deb.debian.org/debian-security/ stretch/updates main contrib non-free

Сохраните файл (в nano: Ctrl+X, затем Y и Enter).

Обновите информацию о пакетах и примените текущие обновления перед сменой кодового имени:

sudo apt update
sudo apt upgrade
sudo apt autoremove

Пример файла sources.list после очистки

Если при обновлении появляется просмотрщик changelog, просмотрите его и выйдите нажатием q.

Просмотр changelog перед обновлением пакетов

Шаг 2. Подготовьте sources.list к обновлению

Откройте файл снова:

sudo nano /etc/apt/sources.list

Замените кодовое имя текущего релиза на кодовое имя следующего релиза. Список кодовых имён доступен на странице релизов Debian.

Например, для перехода с Debian 9 (stretch) на Debian 10 (buster) замените:

deb http://deb.debian.org/debian stretch main contrib non-free
deb http://deb.debian.org/debian stretch-updates main contrib non-free
deb http://deb.debian.org/debian-security stretch/updates main contrib non-free

на

deb http://deb.debian.org/debian buster main contrib non-free
deb http://deb.debian.org/debian buster-updates main contrib non-free
deb http://deb.debian.org/debian-security buster/updates main contrib non-free

Сохраните и обновите индекс пакетов:

sudo apt update

Шаг 3. Последовательное обновление пакетов

  1. Сначала выполните безопасное обновление, которое не удаляет пакеты:
sudo apt upgrade

Внимательно читайте сообщения: если apt пытается удалить критичные пакеты (например, графический стек на рабочем столе), остановитесь и проанализируйте причину. Это часто случается, если были установлены сторонние пакеты или пакеты с конфликтующими зависимостями.

  1. Во время обновления вам будет задан вопрос о конфигурационных файлах. Если вы ранее меняли файл вручную и хотите сохранить внесённые правки — оставьте старую версию; если нет — предпочтительнее установить версию от мейнтейнера (Y), чтобы получить исправления и новые опции.

Выбор конфигурационного файла при обновлении

  1. Затем выполните полное обновление, которое может удалить устаревшие пакеты, чтобы разрешить зависимости новых версий:
sudo apt full-upgrade
  1. Удалите ненужные пакеты и очищайте кэш:
sudo apt autoremove
sudo apt clean
  1. Перезагрузите систему:
sudo systemctl reboot

Критерии приёмки

  • Система загружается до приглашения логина без ошибок ядра.
  • Основные сервисы (SSH, веб-сервер, базы данных) стартуют и работают после обновления.
  • Пользовательские приложения работают как прежде или имеют корректные конфигурации.
  • Логи не содержат критичных ошибок, влияющих на функциональность.

Чек-листы по ролям

Администратор сервера:

  • Сделать полную резервную копию (образ или rsync / и /etc).
  • Сохранить список установленных пакетов: sudo dpkg –get-selections >~/packages.list.
  • Отключить ненужные сторонние репозитории.
  • Обновить и протестировать на тестовом хосте (если есть).

Пользователь рабочего стола:

  • Выйти из графической сессии перед запуском full-upgrade.
  • Проверить, не установлены ли локальные проприетарные драйверы (NVIDIA и т.п.).
  • Создать точку восстановления или образ системы.

Разработчик/DevOps:

  • Прогнать тесты приёмки (unit/integration).
  • Обновить контейнеры/CI, если они ссылаются на системные образы.

Мини-методология обновления (5 шагов)

  1. Резервное копирование. 2. Очистка sources.list. 3. Обновление текущих пакетов. 4. Изменение кодового имени и apt update. 5. upgrade → full-upgrade → перезагрузка → проверка сервисов.

Когда обновление может не сработать и как поступать

  • Сторонние репозитории с конфликтующими версиями. Решение: закомментируйте строки, удалите сторонние пакеты, затем повторите обновление.
  • Локально установленные .deb с несовместимыми зависимостями. Решение: удалить пакет через sudo dpkg -r или sudo apt remove .
  • Пакеты с изменившимися именами или объединённые пакеты. Решение: внимательно прочитайте вывод apt и корректно установите/удалите пакеты по подсказкам.
  • Графическая среда удалена на рабочем столе. Решение: выполнить обновление в консоли, при необходимости переустановить мета-пакет рабочего окружения.

Если вы не уверены, остановитесь, сделайте снимок системы и поиск причины в логах: /var/log/apt/term.log и /var/log/dpkg.log.

Сценарий отката и план действий при инциденте

  1. Если доступен образ системы — восстановите образ.
  2. Если нет образа, но есть список пакетов — восстановите чистый системный релиз и установите пакеты по списку.
  3. Для сервисов: запустите контейнеры или временные инстансы служб, чтобы снизить простои.
  4. Всегда документируйте какие пакеты были удалены или изменены в ходе обновления.

Важно: откат «в одну команду» невозможен для большинства апгрейдов; планируйте резервное копирование заранее.

Тестовые сценарии и критерии приёмки

  • Тест 1: Завершение apt full-upgrade без критичных удалений. Приёмка: завершился с кодом 0.
  • Тест 2: Перезагрузка и доступ по SSH. Приёмка: подключение установлено за 60 сек.
  • Тест 3: Запуск критичных сервисов (nginx, postgresql, cron). Приёмка: сервисы в состоянии active/running.

Дерево решений для выбора стратегии (Mermaid)

flowchart TD
  A[Нужен апгрейд Debian?] -->|Да| B{Есть резервная копия?}
  A -->|Нет| Z[Не обновлять]
  B -->|Нет| C[Создать резервную копию]
  B -->|Да| D{Есть сторонние репозитории?}
  D -->|Да| E[Отключить/удалить сторонние репозитории]
  D -->|Нет| F[Изменить кодовое имя в sources.list]
  F --> G[apt update → apt upgrade]
  G --> H{Есть конфликты?}
  H -->|Да| I[Удалить проблемные пакеты или откатить]
  H -->|Нет| J[apt full-upgrade → перезагрузка]
  J --> K[Проверить сервисы]
  K --> L{Все сервисы работают?}
  L -->|Да| M[Завершено]
  L -->|Нет| I

Полезные команды и шпаргалка

  • Резервная копия списка пакетов: sudo dpkg –get-selections >~/packages.list
  • Обновление индекса: sudo apt update
  • Безопасное обновление: sudo apt upgrade
  • Полное обновление: sudo apt full-upgrade
  • Удаление ненужных пакетов: sudo apt autoremove
  • Очистка кэша: sudo apt clean
  • Перезагрузка: sudo systemctl reboot

Частые ошибки и как их читать в логах

  • «held packages» — пакеты удерживаются; проверьте sudo apt-mark showhold.
  • Конфликты зависимостей — apt напишет какие пакеты конфликтуют и какие предлагается удалить. Если это пакет стороннего происхождения — удалите его.
  • Ошибки подписи репозитория — проверьте, не осталось ли сторонних репов в /etc/apt/sources.list.d/.

Резюме

Обновление Debian между соседними релизами — процесс предсказуемый, если соблюдать простые правила: сделать бэкап, убрать сторонние репозитории, обновить текущую систему, заменить кодовое имя в sources.list и выполнить последовательность apt-команд. Главное — не торопиться и внимательно читать вывод пакетного менеджера. Если возникнут проблемы, чаще всего их решают удалением конфликтующих сторонних пакетов или восстановлением из бэкапа.

Важные заметки

  • Никогда не обновляйте через несколько релизов сразу.
  • Всегда тестируйте процедуру на ненагруженной тестовой системе при возможности.

Если нужно, я могу подготовить готовые шаблоны sources.list для конкретных релизов, чек-листы для вашей инфраструктуры или сценарий обновления в виде playbook Ansible.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро