6 июля 2019 года вышло очередное обновление популярного linux дистрибутива Debian. Это уже 10-й выпуск Debian под кодовым названием Buster. Я подробно расскажу, как выполнить обновление с предыдущего выпуска Debian 9 Stretch до Debian 10 Buster. Процесс обновления не сложный, выполняется штатными средствами с помощью apt.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Введение
Подробную информацию о новой версии Debian можно узнать из официальной новости или статьи на opennet. Из наиболее значимых изменений можно отметить:
- Реализована поддержка UEFI Secure Boot.
- Включена по умолчанию поддержка системы мандатного контроля доступа AppArmor.
- На смену iptables, ip6tables, arptables и ebtables пришёл пакетный фильтр nftables.
- Ядро Linux обновлено до версии 4.19.
- Обновлены серверные приложения, в том числе Apache httpd 2.4.38, BIND 9.11, Dovecot 2.3.4, Exim 4.92, Postfix 3.3.2, MariaDB 10.3, nginx 1.14, PostgreSQL 11, Samba 4.9 (в ядре обеспечена поддержка SMBv3).
- Обеспечена поддержка гостевых систем Xen в режиме PVH
- В OpenSSL отключена поддержка протоколов TLS 1.0 и 1.1, в качестве минимальной поддерживаемой версии заявлена TLS 1.2.
Обновление системы выполнить не сложно, справится практически любой пользователь, используя данное руководство. Проблемы могут возникнуть в отдельных пакетах и зависимостях. Но тут уже готовых советов не дать, нужно разбираться по месту. По моему опыту, чаще всего все проходит нормально, можно обновляться, выполнив соответствующую подготовку.
Подготовка сервера к обновлению
Будем обновлять следующую систему:
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 9.9 (stretch) Release: 9.9 Codename: stretch
Для нее мы проведем обновление до 10-й версии Buster.
Первым делом перед любым обновлением нужно сделать бэкап всей важной информации и файлов конфигураций. В каждом конкретном случае это будет свой набор данных, так что сами решайте, какие данные для вас являются важными, и копируйте их куда-нибудь.
Я рекомендую сделать резервную копию папок: /etc, /var/lib/dpkg, файла /var/lib/apt/extended_states. Сохраните вывод команды:
# dpkg --get-selections "*"
Эти шаги позволят сохранить список установленных пакетов и настроек к ним. Если работаете на виртуальной машине, то сделайте резервную копию или снэпшот перед обновлением.
Теперь обновим текущую систему Stretch:
# apt update # apt upgrade # apt dist-upgrade
Заменяем репозитории в файле /etc/apt/sources.list. Я предпочитаю использовать репозиторий яндекса — http://mirror.yandex.ru. Комментируем или удаляем все содержимое файла и добавляем следующие строки:
deb http://mirror.yandex.ru/debian buster main deb-src http://mirror.yandex.ru/debian buster main deb http://mirror.yandex.ru/debian buster-updates main deb-src http://mirror.yandex.ru/debian buster-updates main deb http://security.debian.org/ buster/updates main deb-src http://security.debian.org/ buster/updates main
Обновляем список доступных пакетов для нового выпуска:
# apt update
Обновление debian с 9 до 10
Обновление системы будем делать в 2 этапа. Сначала минимальное обновление, потом полное. Если будете работать по ssh, обязательно выполняйте обновление через screen или tmux, чтобы обрыв связи не помешал обновлению. В противном случае вы можете получить неработающий сервер. Прерывать обновление очень опасно. Я сам не раз натыкался на это и потом тратил время на восстановление сервера.
Делаем минимальное обновление:
# apt upgrade
Это приведет к обновлению только тех пакетов, которые можно обновить без необходимости удаления или установки других пакетов. Перед началом установки вам будет представлен список изменений нового выпуска. Можно его пролистать вниз, либо сразу нажать клавишу q, чтобы закрыть информацию и продолжить установку.
Во время обновления у вас спросят разрешение на перезапуск некоторых служб. Надо дать разрешение.
После завершения минимального обновления debian, запускаем полное:
# apt dist-upgrade
Эта команда произведёт полное обновление системы, установив последние доступные версии всех пакетов и разрешит все изменившиеся между выпусками Stretch и Buster зависимости. При необходимости будут установлены новые пакеты и удалены все вызывающие конфликты устаревшие пакеты.
После завершения работы команды apt dist-upgrade обновление завершено. Можно перезагружаться:
# reboot
Проверяем версию после загрузки:
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster
Обновление stretch прошло успешно. На выходе имеем последнюю версию Debian 10.0 Buster. У меня не возникло проблем во время обновления, надеюсь у вас будет так же. Если вам нужно поставить систему с нуля, то используйте статью - Как скачать и установить Debian 10 Buster.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Благодарю за инструкцию. Обновление в целом прошло штатно, только после перестали zabbix сервер и агент работать. Оказалось, что их вычистило процессом обновления. Я их потом установил, сделав правку stretch->buster в /etc/apt/sources.list.d/zabbix.list. Может эту правку надо было сделать вместе с sources.list? Т.е. перед обновлением вообще пройтись по всем источникам в sources.list.d?
Слабаки, я на дебиане с х86 до х64 архитектуру на боевом сервере уже второй раз обновляю, причем первый раз вообще делал удаленно, серверам по 10-12 лет, железо и диски уже несколько раз поменялись там конечно, а софт спокойно переезжает
Вот где треш с зависимостями!!! )))
50 минут простоя на 12 летнем серваке с обновленной материнкой и новая архитектура! почти 800 пакетов заменил
а замена интерфейса кстати еще в дебиане 9 на последнем ядре произошла в 22 году
Видимо, нужно было обновляться из голой консоли, а не из терминала, запущенного в XFCE, которое у меня после обновления рухнуло.
Надо бы написать об этом в начале статьи - "Выйдите из графической оболочки..." и т.д.
На серверах, ранее обновленных с debian 8, может использоваться старое именование сетевых интерфейсов, не поддерживаемое в buster. Некоторые хостинги vps для создания образов предустановленных систем не делают новую установку, а обновляют с предыдущих версий, поэтому ситуация возможна. После обновления в этом случае получим неработающую сеть. Об этом есть информация в официальном документе по обновлению, тут тоже следовало бы указать.
Мне не на чем было проверять, поэтому не указывал. При переходе с 8 на 9 менялись имена интерфейсов, писал об этом. В любом случае, обновлять с версии на версию можно только те сервера, к которым есть прямой доступ к консоли и которые терпят простой. Иначе лучше не затевать обновление, а делать миграцию сервисов на новую версию. Я вообще в проде практически никогда не обновляюсь с релиза на релиз. Всегда делаю перенос. При обновлении нет гарантий, что не случится проблем.
С выходом debian 9 сменилось именование интерфейсов. Автоматически, в процессе обновления, ничего не менялось, чтобы не создавать проблем. Предполагалось, что администраторы сделают это вручную (либо "мигрируют", как вы это называете).
В любом случае, не вижу никаких проблем обновить дистрибутив без миграции, ведь по сути, это то же обновление, только количество затрагиваемых пакетов побольше. А решение (ну или хотя бы упоминание) большинства потенциальных проблем есть в официальной документации к релизу.
А зачем? По моему опыту, за время поддержки релиза чаще всего так или иначе придется переезжать. Сейчас очень быстро все меняется. Если нужно что-то настроить на долго (к примеру, почтовый сервер), я использую centos.
В общем случае, обновиться не сложно. Проблемы могут возникнуть потом в софте, в его зависимостях. Так что как минимум, я бы проверил обновление на точной копии, перед тем, как обновлять прод. У меня всегда подход на максимальную стабильность.
Если есть риск, я на него не иду. Считаю, что обновление релиза это риск. Это говорит мой опыт работы. Я начинал более 10-ти лет назад еще на freebsd и там тоже можно было переходить с релиза на релиз. В общем случае, все было нормально, но и проблемы иногда бывали там, где их не ждешь.
Обновился с 8 на 9, потом на 10, имя интерфейса осталось старым (eth0), сеть работает.
У нас есть сервер, которой со времен 6 обновляется - и ничего, жив-здоров
А iptables останутся и будут ли работать если делать обновление с 9 до 10?
У меня остались работать.
У buster по умолчанию работают nftables.
Если вы обновляете шлюз, то может всё и повалиться. устанавливайте старые iptables, после апгрейда:
update-alternatives --set iptables /usr/sbin/iptables-legacy
Обновил свой домашний маршрутизатор с 9 до 10, использую iptables, никаких проблем не возникло.