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

10 июня 2023 года состоялся очередной релиз именитой и популярной системы на базе Linux — Debian 12. В своей статье я подробно расскажу, как обновиться с прошлого релиза Debian 11 до 12-й версии Bookworm. Традиционно, обновление проходит без особых сложностей и лишних действий со стороны администратора.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Что нового в Debian 12

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

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

  • В установочные образы включили некоторые прошивки из репозитория non-free. Это сделано для лучшей поддержки железа во время установки. Debian всегда очень внимательно относился к проприетарному софту, выделяя его в отдельный репозиторий non-free. В этом релизе решили сделать некоторые исключения. Поэтому добавлен ещё один репозиторий для проприетарных прошивок non-free-firmware.
  • В Debian 12 добавлен пакет ksmbd-tools, который реализует функциональность файлового сервера на базе протокола SMB3. Сервер работает на базе модуля ядра Linux. Подобная реализация более эффективна с точки зрения производительности, потребления памяти и интеграции с расширенными возможностями ядра. При этом ksmbd не претендует на полноценную замену Samba. Скорее как расширение для неё.
  • По умолчанию не используется rsyslog для записи системных логов. Вместо этого предлагают использовать journalctl для просмотра логов systemd. Если хотите (а мы хотим) по старинке системные логи в текстовом виде в /var/log, установите пакет system-log-daemon.
  • Из дистрибутива выпилили утилиту which, которая объявлена устаревшей. Вместо неё предлагают использовать type. Это приведёт к поломке многих скриптов, где часто используют which для определения полного пути к бинарнику. Не забудьте установить вручную whitch, если она у вас используется.
  •  Из репозиториев убрали пакеты для Asterisk. Не нашлось желающих их поддерживать, а сами разработчики астера не занимаются поддержкой пакетов в принципе.

Более детальную информацию об обновлении можно посмотреть в официальной новости.

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

Перед обновлением рекомендую ознакомиться с официальным руководством 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

Если вы использовали прошивки (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 может наделать очень много проблем, так что к этому надо готовиться отдельно. Но в рамках обновления самой системы не имеет смысла рассматривать такие моменты. Это отдельная задача. Всегда с головой подходите к таким моментам. Саму систему обновить не трудно, но надо просчитать последствия. Иногда лучше не торопиться.

Онлайн-курс по устройству компьютерных сетей.

На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

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

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

27 комментариев

  1. Спасибо за статью, помогли!

  2. Статья хорошая - спора нет, но можно легко попасть в ловушку, если в настойках sshd используется параметр "AllowGroups xxx". При обновлении (в какой именно момент это происходит я не отсёк, да это и не важно) "обновляльщик" переименовывает группу "xxx" в "_xxx" (в /etc/group перед именем группы добавляется "_"). Следствием чего установить новую ssh-сессию становиться невозможно. Сделано это, скорее всего, из благих побуждений, чтобы никто не смог подключиться и ничего (случайно) не поломать. По окончании-же обновления группа обратно НЕ переименовывается. Поэтому, перед перезагрузкой (переподключением), не разрывая текущую ssh-сессию, обязательно нужно переименовать группу обратно и установить новую (отдельную) сессию, дабы убедиться, что доступ не утрачен.

    • Спасибо за замечание. Не сталкивался с таким никогда и не слышал об этих проблемах. Похоже на какой-то баг.

      • Обновил три сервера и кучу ws-ок - ситуация одна и та же во всех случаях. Скорее всего мало кто использует ограничение по группе. При чём раньше, а я использую debian с 2000-го года, такого не было. Те же, кто сталкивается впервые, вспоминая всех и вся, идут к консоли [за пару тысяч километров ))) ], а дальше просто об этом помнят.

        • Это да. Я про такую возможность знаю, но редко использую. Если и делаю ограничения для групп, так это для пользователей, подключающихся по sftp.

    • Николай

      Спасибо!

  3. После обновления с Debian 11 До Debian 12, перестал работать сайт на Django
    Пересоздал venv, установил все пакеты заново - заработал

  4. Владимир, спасибо за статью!
    Обновил свой домашний стенд для обучения.

    Комментарий для продвижения сайта.

  5. Самсон

    Обновил систему, как обычно - apt update, а потом проверяю номер релиза - всё, bookworm 12 как ни в чём ни бывало. Получается, что ничего не надо мутить, Debian сам прекрасно обновляется!

    • Нет, сам по себе на новый релиз он не обновляется.

      • Самсон

        Жаль, а я уже обрадовался, что мой Debian 11 обновился до 12 (bookworm)
        А ведь на запрос lsb_release -a выдал вот это:
        No LSB modules are available.
        Distributor ID: Debian
        Description: Debian GNU/Linux 12 (bookworm)
        Release: 12
        Codename: bookworm
        Обманул терминал, буду устанавливать с нуля. А какой командой проверить номер версии, но чтобы на этот раз без обмана?

        • Я не знаю, что вы конкретно сделали с вашей системой, что она обновилась. Но я точно знаю, что Debian без выполнения определённых действий сама по себе на следующий релиз не обновляется. И ни один дистрибутив для промышленного применения (RHEL, Ubuntu, Oracle Linux и т.д.) это не делает.

          • Андрей

            Если в sources.list написано было stable вместо bullseye - оно само будет обновляться до последнего стабильного не глядя на версию

            • Это да, но по умолчанию после установки там будет написан конкретный релиз, а не stable. То есть всё равно надо выполнить вручную какие-то действия, чтобы это произошло.

        • Такая же фигня ))) ещё во время apt update и apt upgrade уже показывает 12-ю, хотя это НЕ ТАК на самом деле... это явно баг в дебиан lsb_release

  6. * Upd
    1 apt install -y screen

  7. Андрей

    обновлять дебиан можно ток с первым патчем это негласное правило

  8. Андрей

    Делал по вашей статье почтовик (postfix-dovecot) на debian 11, пробовали уже обновится на 12? Или лучше будет установить все на чистую систему и перенести письма?

    • Обновляйтесь смело! Я тоже настраивал почтовик по статье Владимира, после обновления всё работает нормально.

    • Не надо пока обновлять рабочие системы. Нет никакого смысла в спешке. Через месяц, два, когда выйдет 12.1 можно пробовать. Либо вообще не обновлять ещё пару лет. Debian 11 по прежнему поддерживается и никаких проблем с ней нет.

      • По-моему видел в релизе Debian сами разработчики пишут, что на прод надо ставить минимум версию 12.1.

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

          • Спасибо.
            lsb_release в дебиане из коробки не работает - пакет сперва установить надо.

          • И да, апгрейд правильнее делать вместе со screen или tmux. Иначе при обрыве связи может быть ой (
            1 apt instal -y screen
            2 screen
            3 apt dist-upgrade

    • Гляньте на mailcow как на готовые решение для почтового сервера.

      10+ интсталляций за этот месяц - только положительные отзывы )
      Скоро ldap обещают завезти (можно и сейчас попробовать в nightly-сборках)

      Или docker-mailserver , если только почтовик надо без веб-фейса.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar