Debian выпускает новые stable-версии примерно раз в 2 года. Обновление между версиями — стандартная процедура, которая при правильной подготовке проходит без проблем.
Текущие версии Debian
| Кодовое имя | Версия | Поддержка |
|---|---|---|
| Bookworm | Debian 12 | До 2028 |
| Bullseye | Debian 11 | До 2026 (LTS) |
| Buster | Debian 10 | Поддержка прекращена |
Шаг 1: Подготовка системы
# Полностью обновить текущую версию
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
# Сделать бэкап списка установленных пакетов
dpkg --get-selections > ~/installed-packages.txt
# Проверить свободное место (нужно минимум 5 ГБ)
df -h /
Шаг 2: Обновить источники пакетов
# Заменить bullseye на bookworm в sources.list
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
sudo sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/*.list
# Проверить результат
cat /etc/apt/sources.list
Шаг 3: Обновление (запускать в screen!)
sudo screen -S debian-upgrade
sudo apt update
sudo apt upgrade --without-new-pkgs -y
sudo apt full-upgrade -y
# После завершения — перезагрузка
sudo reboot
Шаг 4: Проверка после обновления
# Версия Debian
cat /etc/debian_version
lsb_release -a
# Версия ядра
uname -r
# Проверить сервисы
sudo systemctl status nginx
sudo systemctl status mysql
apt remove), обновитесь, затем установите их заново из нового репозитория.Разбор типичных ошибок при обновлении
Ошибка "E: Unmet dependencies" во время apt full-upgrade — означает, что часть пакетов из старого релиза конфликтует с версиями из нового и apt не может выстроить порядок обновления автоматически.
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
The following packages have unmet dependencies:
php8.1-fpm : Depends: php8.1-common (= 8.1.2-1) but 8.2.7-1 is to be installed
Чаще всего причина — сторонний PPA-репозиторий (например, ondrej/php), который ещё не обновил пакеты под новый релиз. Временно отключите такие репозитории (sudo mv /etc/apt/sources.list.d/имя.list /root/), завершите обновление системы, затем верните репозиторий и обновите его отдельно.
Сервис не запускается после перезагрузки с ошибкой "Failed to start" — обычно означает, что конфигурационный файл использует синтаксис, удалённый в новой версии пакета.
systemctl status nginx
● nginx.service - A high performance web server
Active: failed (Result: exit-code)
Sep 30 12:00:01 server nginx[1234]: nginx: [emerg] unknown directive "ssl_stapling_file"
Смотрите changelog пакета (apt changelog nginx) — новые версии периодически убирают устаревшие директивы. Исправьте конфиг и выполните nginx -t перед повторным запуском.
Способы обновления релиза: сравнение
| Способ | Как выполняется | Риск | Когда применять |
|---|---|---|---|
| Ручная правка sources.list | sed + apt full-upgrade | Средний, требует внимательности | Серверы без графической оболочки, продакшн |
| do-release-upgrade | Официальный скрипт Ubuntu (не для Debian) | Низкий, есть автооткат | Ubuntu Desktop/Server |
| Новый сервер + миграция данных | Разворачивается с нуля, данные переносятся | Минимальный для системы, время на перенос | Критичный прод, где простой недопустим |
Когда апгрейд на месте не подходит
- Сервер держит критичный прод без возможности простоя — риск получить нерабочую систему после full-upgrade выше, чем выгода от экономии времени. Разверните новый сервер и перенесите данные.
- Используется много сторонних PPA и нестандартных пакетов — вероятность конфликтов версий растёт с каждым дополнительным репозиторием.
- Нет актуального бэкапа — апгрейд на две версии вперёд (например, Buster → Bookworm без промежуточного Bullseye) официально не поддерживается и может сломать систему без возможности отката.
Проверка результата
- Убедитесь, что версия соответствует ожидаемой:
cat /etc/debian_versionдолжен показать номер новой стабильной версии. - Проверьте, что все ключевые сервисы запущены:
systemctl is-active nginx mysql php8.2-fpm— каждый должен вернутьactive. - Проверьте журнал на ошибки, возникшие после перезагрузки:
journalctl -p err -b— критичных записей быть не должно. - Откройте сайт в браузере и проверьте ключевые функции — обновление БД (MariaDB) при мажорном апгрейде иногда требует отдельного шага
mysql_upgrade.
Ядро тоже стоит проверить и при необходимости обновить отдельно — см. статью про обновление ядра Linux. Если сервер работает на Ubuntu, а не Debian, процесс отличается — смотрите обновление Ubuntu.