0

обновить Debian 11 до Debian 12 Bookworm

Подготовка системы к обновлению

Перед обновлением рекомендую ознакомиться с официальным руководством Upgrades from Debian 11 (bullseye). Мои дальнейшие действия соответствуют некоторым рекомендациям из этого документа. В первую очередь проверьте все бэкапы. И по возможности протестируйте обновление важных систем в тестовой лаборатории. Чаще всего обновление системы происходит штатно и лично я вообще ни разу не сталкивался с тем, что обновление Debian привело к нарушению работы сервера и необходимости откатываться из бэкапов.

Отдельно рекомендую сохранить список текущих установленных пакетов. Это может пригодиться, если в процессе обновления произойдёт удаление каких-то нужных пакетов, которые убрали из нового релиза. Потом будет проще разобраться в этой ситуации:

# dpkg --get-selections "*" > ~/dpkg.list

Эта команда выгружает только список пакетов. Можно добавить ещё один список уже с версиями:

# dpkg -l > ~/dpkg-full.list

Проверьте на всякий случай версию текущей системы. Обновление Debian с одного релиза на другой поддерживается только в рамках перехода на одну версию вверх. То есть у вас должна быть полностью обновлённая система Debian 11.

# apt update && apt upgrade && apt dist-upgrade && apt --purge autoremove
# lsb_release -a
# cat /etc/debian_version
Посмотреть текущую версию Debian

В общем случае рекомендуется удалить все пакеты, которые были установлены не из стандартных репозиториев и отключить сами репозитории. Проверить такие пакеты можно следующим образом:

# apt list '?narrow(?installed, ?not(?origin(Debian)))'
Список пакетов в Debian из неофициальных репозиториев

В моём примере это пакеты для Docker, которые были установлены из его родного репозитория. Чаще всего проблем с подобными пакетами не возникает, так что удалять или нет, решать вам. Я не удалю. Но рекомендация по корректному обновлению такова — все неродные пакеты удаляем, после обновления ставим заново, если они поддерживают новую версию Debian. Если нет, то обновление откладываем и каким-то образом решаем эту проблему.

Обновление списка репозиториев

Обновляем файл с репозиториями /etc/apt/sources.list, изменив релиз с bullseye на bookworm. Содержимое этого файла должно стать примерно следующим:

deb https://deb.debian.org/debian bookworm main
deb-src https://deb.debian.org/debian bookworm main

deb https://deb.debian.org/debian bookworm-updates main
deb-src https://deb.debian.org/debian bookworm-updates main

deb http://security.debian.org/ bookworm-security main
deb-src http://security.debian.org/ bookworm-security main

deb https://ftp.debian.org/debian/ bookworm contrib main non-free non-free-firmware
# deb-src https://ftp.debian.org/debian/ bookworm contrib main non-free non-free-firmware

deb https://ftp.debian.org/debian/ bookworm-updates contrib main non-free non-free-firmware
# deb-src https://ftp.debian.org/debian/ bookworm-updates contrib main non-free non-free-firmware

deb https://ftp.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware
# deb-src https://ftp.debian.org/debian/ bookworm-proposed-updates contrib main non-free non-free-firmware

deb https://ftp.debian.org/debian/ bookworm-backports contrib main non-free non-free-firmware
# deb-src https://ftp.debian.org/debian/ bookworm-backports contrib main non-free non-free-firmware

deb https://security.debian.org/debian-security/ bookworm-security contrib main non-free non-free-firmware
# deb-src https://security.debian.org/debian-security/ bookworm-security contrib main non-free non-free-firmware

Если вы использовали прошивки (firmware) из репозитория non-free, подключите репозиторий non-free-firmware для их обновления.

deb https://deb.debian.org/debian bookworm main non-free-firmware

Выполняем обновление списка пакетов из нового репозитория:

# apt update
Первичное обновление системы

Теперь убедитесь, что у вас есть достаточно свободного места на корневом разделе для продолжения обновления. Количество необходимого места зависит от набора пакетов. Посмотреть его можно с помощью следующей команды:

# apt -o APT::Get::Trivial-Only=true full-upgrade
Сколько места на диске необходимо для обновления

Если места недостаточно, то можно выполнить некоторые чисти, связанные с работой пакетного менеджера:

# apt autoremove
# apt clean

Далее запускаем минимальное обновление, которое не требует установки новых пакетов или удаления старых. Обязательно запускайте его через screen или tmux. В случае обрыва связи при подключении по ssh, могут произойти непрогнозируемые проблемы с работоспособностью системы. Процесс обновления обязательно должен полностью завершиться успешно.

# apt upgrade --without-new-pkgs

Не сворачивайте консоль, так как в процессе обновления Debian 11 до 12 вам будут задавать некоторые вопросы. Можно выбирать значения по умолчанию и всё пройдёт успешно. Первым делом вам предложат ознакомиться со списком изменений и выйти из режима чтения, нажав q.

Информация об обновлении

Только если всё прошло успешно на предыдущем шаге, запускайте полное обновление Debian 11:

# apt full-upgrade
Обновление Debian 11 до 12

Здесь, опять же, не уходите далеко. Вам будут задавать вопросы в процессе установки обновлений.

Автоматический перезапуск служб в процессе обновления debian

Когда работа команды завершится успешно, можно считать, что обновление завершено. Останется только перезагрузить сервер.

# systemctl reboot

После загрузки обновлённого сервера, проверьте его версию.

Debian 12 Bookworm

Если у вас так же, значит обновление прошло успешно. Теперь можно установить удалённые ранее пакеты или проверить работу программ, установленных из сторонних репозиториев. По хорошему, их все надо обновить, подключив новые репозитории для текущей версии Debian. Со временем они появятся для привычного софта, типа nginx, mariadb, docker и т.д.

Заключение

Как я и говорил, обновления прошло штатно без каких-то особых проблем и действий со стороны администратора. Чаще всего все обновления Debian происходят примерно одинаково за исключением отдельных нюансов. К примеру, в прошлом релизе немного изменился формат описания репозитория безопасности. А в этом релизе появился новый репозиторий non-free-firmware.

Нужно знакомиться с изменениями очередного релиза и учитывать их при выполнении обновления системы. С Docker, кстати, никаких проблем не возникло. Я не удалял его пакеты, и не обновлял. Просто отключил на время обновления его репозиторий. Он продолжил штатно работать и после обновления.

Проблемы могут возникнуть с версиями некоторого софта, который обновится. Тут уже надо вручную смотреть и отлаживать эти моменты. Например, обновление версии php может наделать очень много проблем, так что к этому надо готовиться отдельно. Но в рамках обновления самой системы не имеет смысла рассматривать такие моменты. Это отдельная задача. Всегда с головой подходите к таким моментам. Саму систему обновить не трудно, но надо просчитать последствия. Иногда лучше не торопиться.

Помогла статья? Подписывайся на telegram канал автора

Добавить комментарий