Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


unix-linux:debian:bookworm:in-place-upgrade-update-from-debian-11-bullseye-to-debian-12-bookworm

Oбновление Debian 11 "Bullseye" до Debian 12 "Bookworm" (In-Place Upgrade)

Перед началом процедуры обновления методом 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 11

Проверим текущую версию 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.

Если в составе репозиторев у вас подключен репозиторий 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

Подключение репозиториев Debian 12

В файле /etc/apt/sources.list отключим стандартные репозитории Debian 11 (закомментируем строки) и подключим репозитории Debian 12: Как подключить стандартные репозитории Debian 12 Bookworm

Обновим кеш менеджера пакетов:

# apt update

Проверка доступного пространства для обновления

Нехватка места при обновлении может привести к последующим дополнительным проблемам, которые может оказаться нелегко исправить. Поэтому перед запуском процесса обновления системы следует убедиться в том, что у нас достаточно места на диске. В ходе обновления все нужные для установки пакеты загружаются из репозиториев Debian в каталог /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
# lsb_release -a

No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
$ cat /etc/debian_version 

12.0

Восстановление нужных пакетов

В ходе обновления системы часть пакетов, ранее установленных из неофициальных репозиториев Debian могут быть автоматически удалены для разрешения конфликтных ситуаций. Также, напомню, что перед процессом обновления мы отключали все неофициальные репозитории в конфигурации пакетного менеджера APT. На данном этапе мы можем снова подключить все необходимые нам сторонние репозитории, но уже с учётом того, что теперь ОС имеет обновлённую версию - Debian Bookworm. И уже с учётом обновленной конфигурации подключенных сторонних репозиториев можно произвесту повторную установку необходимых пакетов, которые были удалены в ходе обновления Debian.


Удаление устаревших пакетов

После успешного окончания установки всей пакетой базы новой версии удаляем устаревшие файлы неиспользуемых пакетов. Посмотреть перечень устаревших пакетов, а затем удалить их можно командами:

# apt list '~o'
# apt purge '~o'
# apt-get autoremove

Чтобы получить список удалённых пакетов, чьи файлы настройки всё ещё остаются в системе, можем использовать команды:

# apt list '~c'
# dpkg -l | awk '/^rc/ { print $2 }'

Чтобы вычистить все соответствующие остатки пакетов, можем выполнить следующие команды:

# apt purge '~c'
# apt purge $(dpkg -l | awk '/^rc/ { print $2 }')

Проверено на следующих конфигурациях:

Версия исходной ОС Версия целевой ОС
Debian GNU/Linux Bullseye 11.7 Debian GNU/Linux Bookworm 12.0

Автор первичной редакции:
Алексей Максимов
Время публикации: 10.07.2023 20:00

Обсуждение

Ваш комментарий:
 
unix-linux/debian/bookworm/in-place-upgrade-update-from-debian-11-bullseye-to-debian-12-bookworm.txt · Последнее изменение: 11.07.2023 08:25 — Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki