Product SiteDocumentation Site

6.7. Обновление Одного Стабильного Дистибутива в Следующий

Одной из самых известных особенностей Debian является возможность обновления установленной системы с одной стабильной версии до следующей: dist-upgrade— известная фраза — во многом способствовала репутации проекта. При соблюдении некоторых мер предосторожности обновление компьютера может занять от нескольких минут до нескольких десятков минут, в зависимости от скорости загрузки из репозиториев пакетов.

6.7.1. Рекомендованный порядок действий

Как только Debian перестанет работать некоторое время над текущей стабильной версией, ты получишь предупреждение об этом и о необходимости выполнить обновление вашего дистибутива на следующую стабильную версию.
In this section, we will focus on upgrading a Bullseye system to Bookworm. This is a major operation on a system; as such, it is never 100% risk-free, and should not be attempted before all important data has been backed up.
Ещё одна хорошая привычка, которая упрощает (и сокращает время) обновления — это наводить порядок в установленных пакетах и оставлять только те, которые действительно необходимы. Полезные инструменты для этого включают в себя aptitude, deborphan, debfoster, и apt-show-versions (см. Раздел 6.2.7, «Трекинг автоматически устанавливаемых пакетов»). Например, вы можете использовать следующую команду, а затем использовать интерактивный режим aptitude для двойной проверки и точной настройки запланированных удалений:
# deborphan | xargs aptitude --schedule-only remove
Now for the upgrading itself. First, you need to change the /etc/apt/sources.list file to tell APT to get its packages from Bookworm instead of Bullseye. If the file only contains references to Stable rather than explicit codenames, the change isn't even required, since Stable always refers to the latest released version of Debian. In both cases, the database of available packages must be refreshed with the apt update command or the refresh button in synaptic (Раздел 6.2.1, «Инициализация»).
Как только эти новые исходные пакеты будут зарегистрированы, вам вначале надо сделать небольшое обновление с apt upgrade и др. как описано Раздел 6.2.3, «Обновление системы». Выполняя обновление в два этапа, мы облегчаем работу инструментов управления пакетами и часто обеспечиваем наличие последних их версий, в которых могут быть накоплены исправления ошибок и улучшения, необходимые для завершения полного обновления дистрибутива.
Once this first upgrade is done, it is time to handle the upgrade itself, either with apt full-upgrade, aptitude, or synaptic (Раздел 6.7, «Обновление Одного Стабильного Дистибутива в Следующий»). You should carefully check the suggested actions before applying them: you might want to add suggested packages or deselect packages which are only recommended and known not to be useful. In any case, the frontend should come up with a scenario ending in a coherent and up-to-date Bookworm system. Then, all you need is to do is wait while the required packages are downloaded, answer the debconf questions and possibly those about locally modified configuration files, and sit back while APT does its magic.

6.7.2. Решение проблем после обновления

Несмотря на все усилия сопровождающих Debian, масштабное обновление системы не всегда проходит так гладко, как хотелось бы. Новые версии программного обеспечения могут быть несовместимы с предыдущими (например, могло измениться их поведение по умолчанию или формат данных). Кроме того, некоторые ошибки могут остаться незамеченными, несмотря на этап тестирования, который всегда предшествует выпуску Debian.
Чтобы предотвратить некоторые из этих проблем, вы можете установить пакет apt-listchanges, который отображает информацию о возможных проблемах в начале обновления пакета. Эта информация собирается сопровождающими пакета и помещается в /usr/share/doc/package/NEWS.Debian файлы в интересах пользователей. Чтение этих файлов (возможно, через apt-listchanges) должно помочь вам избежать неприятных сюрпризов.
Иногда вы можете обнаружить, что новая версия программного обеспечения вообще не работает. Обычно это происходит, если приложение не пользуется особой популярностью и недостаточно протестировано; Обновление, сделанное в последнюю минуту, также может привести к регрессам, которые обнаруживаются только после стабильного выпуска. В обоих случаях первое, что нужно сделать, — это просмотреть систему отслеживания ошибок по адресу https://bugs.debian.org/package, и проверить, сообщалось ли уже о проблеме. В этом случае он также будет указан перед началом обновления, если у вас установлен apt-listbugs. Если это не так, вам следует сообщить об этом самостоятельно с помощью команды reportbug. Если об ошибке уже известно, отчет об ошибке и связанные с ним сообщения обычно являются отличным источником информации об ошибке:
  • иногда патч уже существует и доступен в отчете об ошибке; затем вы можете перекомпилировать исправленную версию сломанного пакета локально. (см. Раздел 15.1, «Пересборка пакета из его исходного кода»);
  • в других случаях, пользователи возможно уже нашли обходной путь решения данной проблемы и поделились этими знаниями между собой в ответах на этот отчёт;
  • Кроме того в других случаях, пакет с исправленной ошибкой может быть уже приготовлен и имеется об этом публикация от сопровождающих.
В зависимости от серьезности ошибки новая версия пакета может быть подготовлена специально для новой редакции стабильного выпуска. В этом случае исправленный пакет становится доступным в разделе proposed-updatesзеркал Debian (см. Раздел 6.1.2.3, «Предлагаемые обновления»). Соответствующую запись затем можно временно добавить в файл sources.list, а обновленные пакеты можно установить с помощью команды apt или aptitude.
Иногда исправленный пакет еще недоступен в этом разделе, поскольку он ожидает проверки менеджерами стабильной версии. Вы можете проверить, так ли это на их веб-странице. Перечисленные там пакеты пока недоступны, но вы, по крайней мере, знаете, что процесс публикации продолжается.

6.7.3. Cleaning Up after an Upgrade

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

6.7.3.1. Пакеты удаленные из архива Debian

Sometimes the Debian ftpmasters remove packages from the Debian archive, because they contain release critical bugs, were abandoned by their upstream author or their package maintainer, or simply reached their end of life. In this case, a newer Debian release does not ship the package anymore. To find all packages, which do not have a package source, use the apt-show-versions command:
$ apt-show-versions | grep "No available version"
Аналогичного результата можно добиться с помощью команды aptitude search ~o. Если найденные пакеты больше не нужны, их следует удалить из системы, поскольку они больше не будут подвергаться никаким обновлениям для критических ошибок или ошибок, связанных с безопасностью.

6.7.3.2. Фиктивные и переходные пакеты

Иногда пакету может потребоваться получить новое имя. В этом случае часто старый пакет сохраняется как (почти) пустой пакет, в зависимости от нового и установки только обязательных файлов в /usr/share/doc/package/. Такие пакеты называются «фиктивными» или «переходными» пакетами. Если ответственный специалист по сопровождению пакета также изменил раздел этого пакета на oldlibs, то такие инструменты, как aptitude, deboprhan, или debfoster (см. врезку АЛЬТЕРНАТИВА deborphan и debfoster) могут подхватить эти пакеты, чтобы предложить их удаление.
К сожалению, в настоящее время не существует надежного способа гарантировать, что эти пакеты будут автоматически удалены или выбраны упомянутыми выше инструментами. Один из способов проверить, установлены ли в системе некоторые из этих пакетов, — просмотреть описания установленных пакетов, а затем проверить результаты. Будьте осторожны, не планируйте автоматическое удаление результатов, поскольку этот метод может привести к ложным срабатываниям:
$ dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
Поскольку новый пакет добавляется как зависимость от переходного пакета, он обычно помечается как автоматически установленный и может быть запланирован к удалению, если вы попытаетесь удалить переходный пакет из вашей системы. В этом случае вы можете использовать любой из подходов, описанных во врезке СОВЕТ Удаление и установка в одной команде и Раздел 6.2.7, «Трекинг автоматически устанавливаемых пакетов», чтобы выборочно удалить переходный пакет.

6.7.3.3. Старые или неиспользуемые конфигурационные файлы

If the upgrade was successful, there might be some configuration file cruft, either from dpkg (see Раздел 5.2.3, «Checksums, List of Configuration Files, et al.»), ucf or from removed packages. The latter can be purged by using apt autoremove --purge. The configuration files that were handled by dpkg or ucf during the upgrade process have left some counterparts with a dedicated suffix, e.g. .dpkg-dist, .dpkg-old, .ucf-old. Using the find or locate command can help to track them down. If they are no longer of any use, they can be deleted.
Be aware that a purge also removes the data created with a particular package (e.g. database files, docker volumes and containers, etc.). There should always be backups in place in case data gets removed accidentally.

6.7.3.4. Файлы не принадлежащие какому либо пакету

Политика Debian требует, чтобы пакеты не оставляли после себя файлы после очистки. Нарушение этого принципа является серьезной ошибкой, и вы редко с ней столкнетесь. Если да, сообщите об этом; и если вам интересно, вы можете использовать пакет cruft или cruft-ng, чтобы проверить вашу систему на наличие файлов, не принадлежащих какому-либо пакету.