Обновление Ubuntu на сервере через do-release-upgrade
Введение
Эта инструкция показывает пошагово, как обновить Ubuntu на сервере с помощью утилиты do-release-upgrade. Предполагается, что у вас есть доступ root (или sudo), резервные копии и план отката. Кратко: обновление скачивает новые пакеты, применяет изменения и может потребовать перезапуска сервисов и самой машины.
В этом документе вы найдёте:
- подробный пошаговый процесс;
- контрольный список перед началом;
- сценарии отката и действия при ошибках;
- альтернативные подходы и критерии приёмки.
Предусловия
- Доступ к серверу с правами root (или sudo).
- Полные резервные копии файлов и, особенно, данных БД.
- Доступ к консоли/дополнительному SSH (если основной SSH будет недоступен).
- Достаточно свободного места на диске и стабильное соединение для загрузки ~нескольких сотен мегабайт.
Важно: перед началом убедитесь, что вы понимаете, какие пакеты на сервере критичны, и какие конфигурационные файлы были изменены вручную (они могут потребовать ручной правки после апгрейда).
Контрольный список перед обновлением
- Сделана полная резервная копия файлов и БД.
- Сохранена копия /etc для восстановления конфигураций.
- Проверено свободное место: df -h
- Проверено состояние apt: sudo apt-get update && sudo apt-get -f install
- План отката и контакты администратора под рукой.
- Выбрано окно обслуживания (минимальная нагрузка).
Шаги обновления (основной процесс)
Сначала войдите под root:
sudo suОбновите списки пакетов:
apt-get updateУстановите доступные обновления:
apt-get upgrade Установите пакет update-manager-core, если он не установлен:
apt-get install update-manager-coreОткройте файл /etc/update-manager/release-upgrades и убедитесь, что в нём указано Prompt=normal:
vi /etc/update-manager/release-upgrades… и проверьте наличие строки в файле:
| [...] Prompt=normal |
Запустите процесс обновления дистрибутива:
do-release-upgradeНиже приведён пример вывода команды (интерактивная сессия):
root@server1:~# do-release-upgrade
Checking for a new Ubuntu release
Get:1 Upgrade tool signature [198 B]
Get:2 Upgrade tool [1,206 kB]
Fetched 1,206 kB in 0s (0 B/s)
authenticate 'raring.tar.gz' against 'raring.tar.gz.gpg'
extracting 'raring.tar.gz'
Reading cache
Checking package manager
Continue running under SSH?
This session appears to be running under ssh. It is not recommended
to perform a upgrade over ssh currently because in case of failure it
is harder to recover.
If you continue, an additional ssh daemon will be started at port
'1022'.
Do you want to continue?
Continue [yN] <-- y
Starting additional sshd
To make recovery in case of failure easier, an additional sshd will
be started on port '1022'. If anything goes wrong with the running
ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As
this is potentially dangerous it's not done automatically. You can
open the port with e.g.:
'iptables -I INPUT -p tcp --dport 1022 -j ACCEPT'
To continue please press [ENTER] <-- ENTER
[...]
Do you want to start the upgrade?
45 new packages are going to be installed. 327 packages are going to
be upgraded.
You have to download a total of 205 M. This download will take about
48 seconds with your connection.
Installing the upgrade can take several hours. Once the download has
finished, the process cannot be canceled.
Continue [yN] Details [d] <-- yВо время обновления некоторые сервисы могут потребовать перезапуска. Когда менеджер обновлений спросит, какие сервисы перезапустить (покажет список), можно принять значения по умолчанию, нажав ENTER.
В конце процесса удалите устаревшие пакеты, если система предложит:
Remove obsolete packages?
13 packages are going to be removed.
Continue [yN] Details [d] <– y
После завершения потребуется перезагрузка:
System upgrade is complete.
Restart required
To finish the upgrade, a restart is required.
If you select ‘y’ the system will be restarted.
Continue [yN] <– y
После перезагрузки проверьте версию, посмотрев /etc/issue:
cat /etc/issueПример:
root@server1:~# cat /etc/issue
Ubuntu 13.04 \n \l
root@server1:~#Что делать, если обновление прервали или SSH недоступен
Important: do-release-upgrade запускает дополнительный SSH-сервер на порту 1022, чтобы можно было подключиться при проблеме с основным sshd. Если основной SSH потерян, выполните следующее:
- Попробуйте подключиться к серверу через дополнительный порт:
ssh -p 1022 root@your-server-ip- Если подключение возможно — проверьте статус apt и завершите установку:
dpkg --configure -a
apt-get -f installЕсли сервер не отвечает и у вас есть консоль провайдера (VNC/IPMI) — войдите и включите режим восстановления.
В крайних случаях используйте резервную копию и восстановление данных на новой инстанции.
План отката / Инцидент-руководство
- Шаг 0: Не приступать без резервной копии и плана отката.
- Шаг 1: При обнаружении критической ошибки — сохранить логи /var/log/dist-upgrade/.
- Шаг 2: Попытаться восстановить пакеты: dpkg –configure -a; apt-get -f install.
- Шаг 3: Переключиться на дополнительный SSH (порт 1022).
- Шаг 4: Если восстановить не удалось — развернуть резервную копию на отдельной машине и переключить трафик.
Примечание: «откат» версии дистрибутива (downgrade) обычно не поддерживается в автоматическом режиме и сопряжён с большими рисками — предпочтительнее восстановление из бэкапа.
Альтернативные подходы
- Чистая установка и восстановление данных — самый безопасный путь для крупных версий и сильно кастомизированных систем.
- Использовать LTS-версии для серверов и включить unattended-upgrades для мелких патчей безопасности.
- Контейнеризация — перенос сервисов в контейнеры (Docker) упрощает миграцию между версиями хоста.
Совет и эвристика
- Не обновляйте рабочие продакшн-серверы вне окна обслуживания.
- Для критичных сервисов проверяйте совместимость приложений с новой версией перед апгрейдом.
- Меньше кастомных изменений в системных конфигурациях — меньше ручной правки после обновления.
Критерии приёмки
- Сервер загрузился и прошёл проверку основных сервисов (SSH, веб, БД).
- Все критичные приложения работают в штатном режиме.
- Нет нерешённых зависимостей apt и нет сломанных пакетов: dpkg –configure -a завершился без ошибок.
- Проведено тестирование функциональности в течение контрольного окна.
Мини-глоссарий
- do-release-upgrade — утилита для обновления версии Ubuntu.
- Apt/apt-get — менеджер пакетов Debian/Ubuntu.
- sshd — демон SSH, обеспечивающий удалённый доступ.
Диаграмма принятия решения (Mermaid)
flowchart TD
A[Готовность системы?] -->|Да| B[Резервное копирование]
A -->|Нет| Z[Подготовка: место/бэкап]
B --> C[Запуск do-release-upgrade]
C --> D{Произошла ошибка?}
D -->|Нет| E[Проверить сервисы и перезагрузить]
D -->|Да| F[Подключиться к SSH:1022]
F --> G{Восстановление возможно?}
G -->|Да| H[dpkg/apt восстановление]
G -->|Нет| I[Восстановить из бэкапа на новой машине]Полезные проверки после обновления
- Проверить состояние пакетов: dpkg -l | grep -i broken
- Проверить журналы systemd: journalctl -p err -b
- Проверить доступность сервисов: systemctl status nginx mysql ssh
Ссылки
- Ubuntu: http://www.ubuntu.com/
Резюме
Обновление через do-release-upgrade — стандартный путь для перехода между релизами Ubuntu. Главное — подготовиться: сделать резервные копии, проверить совместимость и иметь план восстановления. При соблюдении мер предосторожности процесс обычно проходит гладко.