Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
Перед началом процедуры обновления методом In-Place Upgrade с Debian GNU/Linux 10 (Buster) до Debian 11 (Bullseye) крайне желательно создать резервную копию обновляемой системы для возможности возврата системы в исходное состояние на тот случай, если после обновления возникнут проблемы.
На этапе планирования обновления необходимо внимательно прочитать документ Issues to be aware of for bullseye. Особенное внимание следует уделить таблице с проблемными пакетами в разделе Known severe bugs. Сама процедура обновления и всё известные её особенности описаны в документе Обновление с Debian 10 (buster).
Проверим текущую версию Debian:
# cat /etc/debian_version 10.10
# uname -a Linux WS01 4.19.0-17-amd64 #1 SMP Debian 4.19.194-3 (2021-07-18) x86_64 GNU/Linux
# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 10 (buster) Release: 10 Codename: buster
Убедимся в том, что в конфигурации пакетного менеджера apt /etc/apt/sources.list подключены стандартные репозитории Debian Buster: Как подключить стандартные репозитории Debian 10 Buster
/etc/apt/sources.list
Выполним обновление всех доступных к обновлению пакетов из репозиториев Buster:
# apt-get update # apt-get upgrade
После обновления пакетов перезагрузим систему и проведём ещё ряд предварительных проверок.
Предварительно следует зафиксировать все пакеты, установленные не из официальных репозиториев Debian, так как с любым из этих пакетов могут возникнуть какие-либо проблемы при обновлении системы (возможно данные пакеты потребуют переустановки/обновления после обновления ОС). Получить список таких пакетов можно, например, с помощью apt-forktracer.
# apt install apt-forktracer # apt-forktracer | sort hpmyroom (12.4.0.0294) libsstp-api-0 (1.0.12-0ubuntu3) network-manager-sstp (1.2.6-0ubuntu2) network-manager-sstp-gnome (1.2.6-0ubuntu2) sstp-client (1.0.12-0ubuntu3)
Рекомендуется найти и удалить все устаревшие конфигурационные файлы, оставшиеся в системе от предыдущих обновлений. Это поможет в дальнейшем избежать путаницы при анализе проблемных приложений. Найти такие устаревшие файлы можно например командой:
# 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), а также все пакеты в ошибочных состояниях:
# dpkg --audit # dpkg --get-selections | grep 'hold$'
Для того, чтобы отменить фиксацию какого либо пакета, находящегося в статусе «hold», можно использовать команду типа:
# echo package_name install | dpkg --set-selections
В файле /etc/apt/sources.list отключим стандартные репозитории Debian 10 (закомментируем строки) и подключим репозитории Debian 11: Как подключить стандартные репозитории Debian 11 Bullseye
Обновим кеш менеджера пакетов:
# apt-get update
Нехватка места при обновлении может привести к последующим дополнительным проблемам, которые может оказаться нелегко исправить. Поэтому перед запуском процесса обновления системы следует убедиться в том, что у нас достаточно места на диске. В ходе обновления все нужные для установки пакеты загружаются из репозиториев Debian в каталог /var/cache/apt/archives, поэтому мы, как минимум, должны проверить место на разделе, который содержит /var/.
/var/cache/apt/archives
/var/
Чтобы предварительно оценить то, сколько места потребуется для загружаемых пакетов, можно использовать команду «холостого» запуска обновления (эта команда только произведёт расчёт нужного места на диске, но не станет выполнять саму процедуру обновления):
# apt -o APT::Get::Trivial-Only=true full-upgrade Чтение списков пакетов… Готово Построение дерева зависимостей Чтение информации о состоянии… Готово Расчёт обновлений… Готово Следующие пакеты устанавливались автоматически и больше не требуются: argyll argyll-ref ... xml-core zstd Следующие пакеты будут обновлены: accountsservice acl ... zip zlib1g zlib1g-dev Обновлено 2155 пакетов, установлено 399 новых пакетов, для удаления отмечено 79 пакетов, и 0 пакетов не обновлено. Необходимо скачать 2 341 MB архивов. После данной операции объём занятого дискового пространства возрастёт на 1 990 MB. E: Запрошено выполнение только тривиальных операций, но это не тривиальная операция.
Чтобы легче было разбираться с возможными конфликтами при обновлении системы, обновление лучше выполнять в 2 этапа - сначала минимальное обновление, а затем полное обновление.
Минимальное обновление приведёт к обновлению только тех пакетов, которые можно обновить без необходимости удаления или установки других пакетов. Минимальное обновление системы также может оказаться полезным, если на диске мало свободного места, и по этой причине запускать сразу полное обновление нежелательно.
Запускаем минимальное обновление:
# apt upgrade --without-new-pkgs
На запрос о необходимости перезапуска служб в процессе установки новых версий пакетов ответим утвердительно.
Если обновление выполняется в удалённом режиме (SSH-сессия), то перед выполнением команды полного обновления, возможно, имеет смысл открыть дополнительную SSH-сессию к системе. Это позволит нам, не прерывая процесс обновления, сохранить свои конфигурационные файлы от ранее установленных пакетов, при обновлении которых возникли конфликты с конфигурационными файлами, поставляемыми в составе новых версий пакетов
После выполнения предыдущих шагов запускаем команду полного обновления системы:
# apt full-upgrade
Эта команда произведёт полное обновление системы, установив последние доступные версии всех пакетов и разрешив всех изменившиеся между выпусками зависимости. При необходимости будут установлены новые пакеты (обычно, это новые версии библиотек или переименованные пакеты) и удалены все вызывающие конфликты устаревшие пакеты.
Для пакетов, у которых ранее были изменены стандартные конфигурационные файлы, будет предложено выбрать вариант их обновления. Можно использовать опцию установки новых конфигурационных файлов (опция Y), а можно оставить свои ранее настроенные конфигурационные файлы (опция N), если мы понимаем, что принципиальных отличий в директивах конфигурации нет.
По окончании процесса обновления перезагружаем систему
# reboot
После первой успешной загрузки системы проверяем версию загруженного ядра Linux:
# uname -a Linux WS01 5.10.0-8-amd64 #1 SMP Debian 5.10.46-4 (2021-08-03) 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
$ cat /etc/debian_version 11.0
После успешного окончания установки всей пакетой базы новой версии удаляем устаревшие файлы неиспользуемых пакетов:
# apt-get autoremove
Чтобы получить список удалённых пакетов, чьи файлы настройки всё ещё остаются в системе, выполним:
# dpkg -l | awk '/^rc/ { print $2 }'
Чтобы вычистить все соответствующие остатки пакетов можем выполнить команду типа:
# apt purge $(dpkg -l | awk '/^rc/ { print $2 }')
Проверено на следующих конфигурациях:
Автор первичной редакции: Алексей Максимов Время публикации: 21.09.2021 09:32