Не так давно вышел очередной выпуск популярной операционной системы Debian - Debian 11 Bullseye, одновременно с этим событием в завершающую фазу жизненного цикла перешел один из предыдущих дистрибутивов - Debian 9, поддержка которого заканчивается в июне 2022 года. Это заставляет задуматься владельцев старых систем об обновлении до нового выпуска. Это весьма ответственный процесс, поэтому следует подойти к нему со всей серьезностью, постаравшись максимального оградить себя от неприятных неожиданностей. Как это сделать - расскажем в нашей статье.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
В отличии от Ubuntu, Debian не имеет инструментов для автоматического обновления выпуска, но, как правило, его пользователей это не пугает. Наоборот, кроме высочайшей стабильности, Debian ценится еще тем, что предоставляет администратору все рычаги управления системой и последний всегда может быть уверен, что выполнено будет только то, что он хочет и именно так, как нужно ему.
Автоматические инструменты, с одной стороны облегчают труд администратора, с другой - лишают его знаний и опыта, чтобы не говорили - администратор, перед тем как автоматизировать некоторый участок, должен прекрасно знать как он устроен и уметь делать все руками. Debian как раз дает возможность получить такой опыт.
Подготовка системы
Перед тем, как браться за обновления необходимо убедиться в нормальном функционировании системы. Прежде всего проверим наличие не полностью установленных или не настроенных пакетов. Для этого выполним:
dpkg --audit
Если вывод команды вернул какой-либо результат, то в первую очередь следует попробовать автоматически решить проблемы командой:
apt install -f
Если же это не помогло, то с каждым пакетом придется разбираться отдельно. В любом случае его необходимо либо удалить, либо установить. Удалить пакет можно командой:
dpkg -r имя_пакета
Следующий шаг - выявление зафиксированных пакетов, которые были защищены от обновления. Это можно выяснить следующим образом:
dpkg --get-selections | grep 'hold$'
Снять фиксацию можно командой:
apt-mark unhold имя_пакета
Но будьте внимательны, фиксация пакетов не производится на ровном месте, для этого всегда есть причины. Обычно они связаны со сторонним софтом, требующим именно определенных версий пакетов. Убедитесь, что данный программный продукт имеет версию для следующего выпуска, в противном случае с обновлением следует повременить.
Также будет не лишним очистить систему от накопившегося мусора. Многие пакеты при удалении оставляют файлы конфигурации или иные пользовательские данные, что может стать проблемой при последующей установке пакета уже в новом выпуске ОС. Для очистки оставшихся настроек выполните:
apt purge $(dpkg -l | awk '/^rc/ { print $2 }')
Ну и наконец обновите систему до последней версии пакетов:
apt update && apt full-upgrade
После чего не забудьте сделать резервную копию, так как последующие действия будут иметь необратимые последствия.
Установка новых источников пакетов
Как мы знаем, все пакеты Debian располагаются в специальных хранилищах - репозиториях и для обновления нам следует изменить адреса репозиториев предыдущего выпуска на адреса репозиториев целевого выпуска. Но в системе могут присутствовать и иные источники пакетов, которые могут вызвать проблемы во время обновления и поэтому их следует отключить.
В первую очередь проверим директорию /etc/apt/sources.list.d и переместим все найденные в ней файлы в другое расположение. Попутно рекомендуем изучить их, возможно не все из них вам нужны, а для нужных заранее следует обновить записи для нового выпуска системы.
Затем перейдем к основному списку репозиториев /etc/apt/sources.list, по правилам хорошего тона туда не следует добавлять своих записей, но может быть всякое, поэтому внимательно изучаем содержимое этого файла. В нем должны остаться три стандартных репозитория и шесть строк, по две строки на каждый. Ниже приведен их список для Debian 10:
deb http://deb.debian.org/debian/ buster main
deb-src http://deb.debian.org/debian/ buster main
deb http://security.debian.org/debian-security buster/updates main
deb-src http://security.debian.org/debian-security buster/updates main
deb http://deb.debian.org/debian/ buster-updates main
deb-src http://deb.debian.org/debian/ buster-updates main
Все остальные записи следует закомментировать и в будущем вынести их из этого файла в /etc/apt/sources.list.d, более подробно о репозиториях и управлении пакетами вы можете прочитать здесь.
Отдельного внимания заслуживает репозиторий backports, который также может быть подключен в системе, он предоставляет портированное из более новых версий ПО и такие пакеты могут вызвать затруднения при обновлении. Записи, относящиеся к данному репозиторию, следует удалить (в новом выпуске они вам не понадобятся), а пакеты, в случае возникновения проблем с их обновлением, придется удалить, для этого рекомендуется использовать команду:
dpkg -r --force-depends имя_пакета
Теперь, когда вы навели порядок в репозиториях, установим новые источники пакетов. Для выпусков включая Debian 10 это можно сделать простой заменой кодового имени дистрибутива в адресах репозиториев. Например, для обновления с Debian 9 Stretch на Debian 10 Buster следует выполнить:
sed -i "s/stretch/buster/g" /etc/apt/sources.list
Для Debian 11 Bullseye не все так просто, разработчики изменили адрес репозитория Security updates и поэтому придется действовать в два приема:
sed -i "s/buster\/updates/bullseye-security/g" /etc/apt/sources.list
sed -i "s/buster/bullseye/g" /etc/apt/sources.list
После чего еще раз проверим, что адреса источников пакетов в sources.list правильные и можем переходить непосредственно к обновлению системы.
Обновление выпуска Debian
Прежде всего обновим локальный кеш пакетов:
apt update
А затем выполним безопасное обновление системы, в данном случае будут обновлены только те пакеты, которые возможно обновить без удаления уже существующих:
apt upgrade
Перед тем, как подтвердить выполнение команды, обращаем отдельное внимание на те пакеты, которые будут оставлены в неизменном виде, в нашем случае это curl, для их обновления потребуется что-то удалить из системы и это не всегда допустимо.
В большинстве случаев с этим можно разобраться позже, а пока - обновляемся.
В процессе обновления к нам может поступить запрос на перезапись конфигурационных файлов. Здесь следует придерживаться следующих правил: если конфигурационный файл меняли вы, то лучше оставить его исходную версию, если нет - то принять изменения. В случае сомнений можно просмотреть изменения нажав клавишу D, выйти из режима просмотра можно по клавише Q.
При этом следует понимать, что в новом выпуске системы новые пакеты, которые могут иметь новые настройки и если вы не уверены, что все делаете правильно, то лучше перезапишите файл конфигурации новой версией, старый останется тут же рядом с расширением dpkg-old. Уже после обновления вы сможете сравнить оба файла и перенести необходимые настройки из старого в новый.
По окончании обновления перезагружаемся и проверяем работу системы. Если у вас было установлено стороннее ПО из внешних репозиториев, то его пока не касаемся, оно еще не обновлялось и может работать некорректно, либо вообще не работать.
Если все нормально, то переходим к следующему этапу - полному обновлению. Но именно здесь вам придется принять решение, что делать с удаляемыми пакетами. В большинстве случаев они не нужны, так как обновленная версия ПО будет использовать новые, но может быть и так, что некий установленный из внешних источников пакет требует именно эту библиотеку. В таком случае нужно разбираться: возможно есть более новая версия пакета, которая будет работать в новом выпуске с новыми библиотеками, в противном случае придется углубляться в тему, большинство библиотек поддерживают обратную совместимость и бывает достаточно создать символическую ссылку с именем старой библиотеки.
Для полного обновления выполните:
apt full-upgrade
В нашем случае видим, что пакет curl таки будет обновлен и при этом будет удалена одна библиотека и установлена новая.
После чего еще раз перезагружаем систему. Теперь можно подключить сторонние репозитории, естественно обновленные, для обеспечения совместимости с новым выпуском и установить новые версии используемого ПО. И наконец, убедившись, что все работает как надо, выполним очистку от более не используемых пакетов:
apt autoremove
Теперь у вас работает новый выпуск Debian, как видим, обновление - это совсем не сложно, но требует определенного понимания выполняемых действий и дополнительного контроля ряда операций. Ну также не забывайте о резервных копиях, несмотря на то, что Debian очень стабильная система, всегда может что-то пойти не так.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Последние комментарии