10 июня 2023 года состоялся очередной релиз именитой и популярной системы на базе Linux — Debian 12. В своей статье я подробно расскажу, как обновиться с прошлого релиза Debian 11 до 12-й версии Bookworm. Традиционно, обновление проходит без особых сложностей и лишних действий со стороны администратора.
Научиться настраивать 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
В общем случае рекомендуется удалить все пакеты, которые были установлены не из стандартных репозиториев и отключить сами репозитории. Проверить такие пакеты можно следующим образом:
# apt list '?narrow(?installed, ?not(?origin(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
Здесь, опять же, не уходите далеко. Вам будут задавать вопросы в процессе установки обновлений.
Когда работа команды завершится успешно, можно считать, что обновление завершено. Останется только перезагрузить сервер.
# systemctl reboot
После загрузки обновлённого сервера, проверьте его версию.
Если у вас так же, значит обновление прошло успешно. Теперь можно установить удалённые ранее пакеты или проверить работу программ, установленных из сторонних репозиториев. По хорошему, их все надо обновить, подключив новые репозитории для текущей версии Debian. Со временем они появятся для привычного софта, типа nginx, mariadb, docker и т.д.
Заключение
Как я и говорил, обновления прошло штатно без каких-то особых проблем и действий со стороны администратора. Чаще всего все обновления Debian происходят примерно одинаково за исключением отдельных нюансов. К примеру, в прошлом релизе немного изменился формат описания репозитория безопасности. А в этом релизе появился новый репозиторий non-free-firmware.
Нужно знакомиться с изменениями очередного релиза и учитывать их при выполнении обновления системы. С Docker, кстати, никаких проблем не возникло. Я не удалял его пакеты, и не обновлял. Просто отключил на время обновления его репозиторий. Он продолжил штатно работать и после обновления.
Проблемы могут возникнуть с версиями некоторого софта, который обновится. Тут уже надо вручную смотреть и отлаживать эти моменты. Например, обновление версии php может наделать очень много проблем, так что к этому надо готовиться отдельно. Но в рамках обновления самой системы не имеет смысла рассматривать такие моменты. Это отдельная задача. Всегда с головой подходите к таким моментам. Саму систему обновить не трудно, но надо просчитать последствия. Иногда лучше не торопиться.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Спасибо за статью, помогли!
Статья хорошая - спора нет, но можно легко попасть в ловушку, если в настойках sshd используется параметр "AllowGroups xxx". При обновлении (в какой именно момент это происходит я не отсёк, да это и не важно) "обновляльщик" переименовывает группу "xxx" в "_xxx" (в /etc/group перед именем группы добавляется "_"). Следствием чего установить новую ssh-сессию становиться невозможно. Сделано это, скорее всего, из благих побуждений, чтобы никто не смог подключиться и ничего (случайно) не поломать. По окончании-же обновления группа обратно НЕ переименовывается. Поэтому, перед перезагрузкой (переподключением), не разрывая текущую ssh-сессию, обязательно нужно переименовать группу обратно и установить новую (отдельную) сессию, дабы убедиться, что доступ не утрачен.
Спасибо за замечание. Не сталкивался с таким никогда и не слышал об этих проблемах. Похоже на какой-то баг.
Обновил три сервера и кучу ws-ок - ситуация одна и та же во всех случаях. Скорее всего мало кто использует ограничение по группе. При чём раньше, а я использую debian с 2000-го года, такого не было. Те же, кто сталкивается впервые, вспоминая всех и вся, идут к консоли [за пару тысяч километров ))) ], а дальше просто об этом помнят.
Это да. Я про такую возможность знаю, но редко использую. Если и делаю ограничения для групп, так это для пользователей, подключающихся по sftp.
Спасибо!
После обновления с Debian 11 До Debian 12, перестал работать сайт на Django
Пересоздал venv, установил все пакеты заново - заработал
Владимир, спасибо за статью!
Обновил свой домашний стенд для обучения.
Комментарий для продвижения сайта.
Обновил систему, как обычно - 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
* Upd
1 apt install -y screen
обновлять дебиан можно ток с первым патчем это негласное правило
Это практически к любому софту относится.
Делал по вашей статье почтовик (postfix-dovecot) на debian 11, пробовали уже обновится на 12? Или лучше будет установить все на чистую систему и перенести письма?
Обновляйтесь смело! Я тоже настраивал почтовик по статье Владимира, после обновления всё работает нормально.
а версию php обновляли?
Не надо пока обновлять рабочие системы. Нет никакого смысла в спешке. Через месяц, два, когда выйдет 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 , если только почтовик надо без веб-фейса.