Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
Перед началом процедуры обновления методом In-Place Upgrade с Debian GNU/Linux 11 (Bullseye) до Debian 12 (Bookworm) крайне желательно создать резервную копию обновляемой системы для возможности возврата системы в исходное состояние на тот случай, если после обновления возникнут проблемы.
На этапе планирования обновления необходимо внимательно прочитать документ Issues to be aware of for bookworm. Особенное внимание следует уделить таблице с проблемными пакетами в разделе Known severe bugs. Сама процедура обновления и все известные её особенности описаны в документе Upgrades from Debian 11 (bullseye).
Проверим текущую версию Debian:
# cat /etc/debian_version 11.7
# uname -a Linux ... 5.10.0-23-amd64 #1 SMP Debian 5.10.179-1 (2023-05-12) x86_64 GNU/Linux
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 11 (bullseye) Release: 11 Codename: bullseye
Убедимся в том, что в конфигурации пакетного менеджера apt /etc/apt/sources.list подключены только стандартные репозитории Debian Bullseye: Как подключить стандартные репозитории Debian 11 Bullseye.
/etc/apt/sources.list
Если в составе репозиторев у вас подключен репозиторий bullseye-backports, то есть рекомендация отключения этого репозитория до начала процесса обновления. Помимо этого, есть рекомендация отключать репозиторий proposed-updates, если он был подключен ранее.
Выполним обновление всех доступных к обновлению пакетов из репозиториев Bullseye:
# apt-get update # apt-get upgrade
После обновления пакетов перезагрузим систему и проведём ещё ряд предварительных проверок.
Предварительно следует сохранить информацию о всех пакетах, установленных не из официальных репозиториев Debian, так как с любым из этих пакетов могут возникнуть какие-либо проблемы при обновлении системы (возможно данные пакеты потребуют переустановки/обновления после обновления ОС). Получить список таких пакетов можно, например, с помощью apt и apt-forktracer.
# apt list '?narrow(?installed, ?not(?origin(Debian)))' # apt install apt-forktracer # apt-forktracer | sort
Рекомендуется найти и удалить все устаревшие конфигурационные файлы, оставшиеся в системе от предыдущих обновлений. Это поможет в дальнейшем избежать путаницы при анализе проблемных приложений. Найти такие устаревшие файлы можно например командой:
# find /etc -name '*.dpkg-*' -o -name '*.ucf-*' -o -name '*.merge-error'
Перед обновлением рекомендуется выявить и отключить все неофициальные репозитории, чтобы избежать конфликтов в ходе обновления. Перечень всех используемых в системе репозиториев получим командами типа:
# cat /etc/apt/sources.list # cat /etc/apt/sources.list.d/*
Помимо этого следует проанализировать фиксированные (Pinning) пакеты APT. Перед обновлением желательно отключить все фиксации пакетов. Если один из участвующих в обновлении пакетов зафиксирован, обновление завершится неудачно.
# cat /etc/apt/preferences # cat /etc/apt/preferences.d/*
Независимо от способа обновления, рекомендуется сначала проверить состояние всех пакетов и убедиться, что всем пакетам разрешено обновляться. Следующие команды покажут пакеты, установленные частично (Half-Installed), пакеты настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях и фиксированные пакеты в статусе «hold»:
# dpkg --audit # dpkg --get-selections | grep 'hold$' # apt-mark showhold
Для того, чтобы отменить фиксацию какого либо пакета, находящегося в статусе «hold», можно использовать команды типа:
# apt-mark unhold package_name # echo package_name install | dpkg --set-selections
Механизмы работы с цифровыми подписями в Bookworm потребуют наличия актуальной версии пакета gpgv, которая должна быть не ниже 2 версии. Проверить и, при необходимости, установить актуальную версию gpgv можно командами:
# dpkg -l gpgv # apt install gpgv
В файле /etc/apt/sources.list отключим стандартные репозитории Debian 11 (закомментируем строки) и подключим репозитории Debian 12: Как подключить стандартные репозитории Debian 12 Bookworm
Обновим кеш менеджера пакетов:
# apt update
Нехватка места при обновлении может привести к последующим дополнительным проблемам, которые может оказаться нелегко исправить. Поэтому перед запуском процесса обновления системы следует убедиться в том, что у нас достаточно места на диске. В ходе обновления все нужные для установки пакеты загружаются из репозиториев Debian в каталог /var/cache/apt/archives, поэтому мы, как минимум, должны проверить место на разделе, который содержит /var/.
/var/cache/apt/archives
/var/
Чтобы предварительно оценить то, сколько места потребуется для загружаемых пакетов, можно использовать команду «холостого» запуска обновления (эта команда только произведёт расчёт нужного места на диске, но не станет выполнять саму процедуру обновления):
# apt -o APT::Get::Trivial-Only=true full-upgrade Reading package lists... Done Building dependency tree... Done Reading state information... Done Calculating upgrade... Done The following packages were automatically installed and are no longer required: ftp g++-10 ... python3.9-minimal telnet Use 'apt autoremove' to remove them. The following packages will be REMOVED: icinga2 icinga2-bin libgnutlsxx28 libnfsidmap2 libsemanage1 The following NEW packages will be installed: at-spi2-common cpp-12 ... xml-core zstd The following packages will be upgraded: acl acpi ... xz-utils zlib1g 839 upgraded, 116 newly installed, 5 to remove and 0 not upgraded. Need to get 454 MB/454 MB of archives. After this operation, 798 MB of additional disk space will be used. E: Trivial Only specified but this is not a trivial operation.
Чтобы легче было разбираться с возможными конфликтами при обновлении системы, обновление лучше выполнять в 2 этапа - сначала минимальное обновление, а затем полное обновление.
Минимальное обновление приведёт к обновлению только тех пакетов, которые можно обновить без необходимости удаления или установки других пакетов. Минимальное обновление системы также может оказаться полезным, если на диске мало свободного места, и по этой причине запускать сразу полное обновление нежелательно.
Запускаем минимальное обновление:
# apt upgrade --without-new-pkgs
На запрос о необходимости перезапуска служб в процессе установки новых версий пакетов ответим утвердительно.
Если обновление выполняется в удалённом режиме (SSH-сессия), то перед выполнением команды полного обновления, возможно, имеет смысл открыть дополнительную SSH-сессию к системе. Это позволит нам, не прерывая процесс обновления, сохранить свои конфигурационные файлы от ранее установленных пакетов, при обновлении которых возникли конфликты с конфигурационными файлами, поставляемыми в составе новых версий пакетов
После выполнения предыдущих шагов запускаем команду полного обновления системы:
# apt full-upgrade
Эта команда произведёт полное обновление системы, установив последние доступные версии всех пакетов и разрешив всех изменившиеся между выпусками зависимости. При необходимости будут установлены новые пакеты (обычно, это новые версии библиотек или переименованные пакеты) и удалены все вызывающие конфликты устаревшие пакеты.
Для пакетов, у которых ранее были изменены стандартные конфигурационные файлы, будет предложено выбрать вариант их обновления. Можно использовать опцию установки новых конфигурационных файлов (опция Y), а можно оставить свои ранее настроенные конфигурационные файлы (опция N), если мы понимаем, что принципиальных отличий в директивах конфигурации нет.
По окончании процесса обновления перезагружаем систему
# reboot
После первой успешной загрузки системы проверяем версию загруженного ядра Linux:
# uname -a Linux ... 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 GNU/Linux