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/imya.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.