Одной из самых известных особенностей Debian является возможность обновления установленной системы с одной стабильной версии до следующей: dist-upgrade— известная фраза — во многом способствовала репутации проекта. При соблюдении некоторых мер предосторожности обновление компьютера может занять от нескольких минут до нескольких десятков минут, в зависимости от скорости загрузки из репозиториев пакетов.
6.7.1. Рекомендованный порядок действий
Как только Debian перестанет работать некоторое время над текущей стабильной версией, ты получишь предупреждение об этом и о необходимости выполнить обновление вашего дистибутива на следующую стабильную версию.
В этом разделе мы сосредоточимся на обновлении системы Buster до Bullseye. Это основная операция в системе; как таковая, она никогда не бывает на 100% безопасной, и её не следует предпринимать до тех пор, пока не будут созданы резервные копии всех важных данных.
Ещё одна хорошая привычка, которая упрощает (и сокращает время) обновления — это наводить порядок в установленных пакетах и оставлять только те, которые действительно необходимы. Полезные инструменты для этого включают в себя
aptitude
,
deborphan
,
debfoster
, и
apt-show-versions
(см.
Раздел 6.2.7, «Трекинг автоматически устанавливаемых пакетов»). Например, вы можете использовать следующую команду, а затем использовать интерактивный режим
aptitude
для двойной проверки и точной настройки запланированных удалений:
#
deborphan | xargs aptitude --schedule-only remove
Теперь о самом обновлении. Во-первых, вам необходимо изменить файл
/etc/apt/sources.list
для указания APT, чтобы он получал свои пакеты от
Bullseye вместо
Buster. Если файл содержит только ссылки на
Stable вместо явных кодовых имен, изменение даже не требуется, поскольку
Stable всегда относится к последней выпущенной версии Debian. В обоих случаях база данных доступных пакетов должна быть обновлена с помощью команды
apt update
или нажатием кнопки обновления в
synaptic
(
Раздел 6.2.1, «Инициализация»).
Как только эти новые исходные пакеты будут зарегистрированы, вам вначале надо сделать небольшое обновление с
apt upgrade
и др. как описано
Раздел 6.2.3, «Обновление системы». Выполняя обновление в два этапа, мы облегчаем работу инструментов управления пакетами и часто обеспечиваем наличие последних их версий, в которых могут быть накоплены исправления ошибок и улучшения, необходимые для завершения полного обновления дистрибутива.
После завершения первого обновления настало время выполнить само обновление либо с помощью команды
apt full-upgrade
,
aptitude
, или
synaptic
(
Раздел 6.7, «Обновление Одного Стабильного Дистибутива в Следующий»). Вам следует внимательно проверить предлагаемые действия перед их применением: возможно, вы захотите добавить предлагаемые пакеты или отменить выбор пакетов, которые только рекомендуются и заведомо бесполезны. В любом случае, фронтенд должен разработать сценарий, заканчивающийся последовательной и актуальной системой
Bullseye. Затем всё, что вам нужно сделать, это подождать, пока загрузятся необходимые пакеты, ответить на вопросы debconf и, возможно, о локально измененных файлах конфигурации, и сидеть сложа руки, пока APT творит чудеса.
6.7.2. Решение проблем после обновления
Несмотря на все усилия сопровождающих Debian, масштабное обновление системы не всегда проходит так гладко, как хотелось бы. Новые версии программного обеспечения могут быть несовместимы с предыдущими (например, могло измениться их поведение по умолчанию или формат данных). Кроме того, некоторые ошибки могут остаться незамеченными, несмотря на этап тестирования, который всегда предшествует выпуску Debian.
Чтобы предотвратить некоторые из этих проблем, вы можете установить пакет apt-listchanges, который отображает информацию о возможных проблемах в начале обновления пакета. Эта информация собирается сопровождающими пакета и помещается в /usr/share/doc/package/NEWS.Debian
файлы в интересах пользователей. Чтение этих файлов (возможно, через apt-listchanges) должно помочь вам избежать неприятных сюрпризов.
Иногда вы можете обнаружить, что новая версия программного обеспечения вообще не работает. Обычно это происходит, если приложение не пользуется особой популярностью и недостаточно протестировано; Обновление, сделанное в последнюю минуту, также может привести к регрессам, которые обнаруживаются только после стабильного выпуска. В обоих случаях первое, что нужно сделать, — это просмотреть систему отслеживания ошибок по адресу
https://bugs.debian.org/package
, и проверить, сообщалось ли уже о проблеме. В этом случае он также будет указан перед началом обновления, если у вас установлен
apt-listbugs. Если это не так, вам следует сообщить об этом самостоятельно с помощью команды
reportbug
. Если об ошибке уже известно, отчет об ошибке и связанные с ним сообщения обычно являются отличным источником информации об ошибке:
в других случаях, пользователи возможно уже нашли обходной путь решения данной проблемы и поделились этими знаниями между собой в ответах на этот отчёт;
Кроме того в других случаях, пакет с исправленной ошибкой может быть уже приготовлен и имеется об этом публикация от сопровождающих.
В зависимости от серьезности ошибки новая версия пакета может быть подготовлена специально для новой редакции стабильного выпуска. В этом случае исправленный пакет становится доступным в разделе
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
Иногда ftp-мастера Debian удаляют пакеты из архива Debian, потому что они содержат критические для выпуска ошибки, были оставлены вышестоящим автором или сопровождающим пакета или просто достигли конца срока службы. В этом случае более новая версия Debian больше не будет поставлять пакет. Чтобы найти все пакеты, у которых нет исходного кода, используйте команду apt-show-versions
:
$
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.7.3.3. Старые или неиспользуемые конфигурационные файлы
Если обновление прошло успешно, возможно, в файле конфигурации есть какие-то проблемы, либо из dpkg (см.
Раздел 5.2.3, «Checksums, List of Configuration Files, et al.»), ucf или из удаленных пакетов. Последнее может быть вычищено
purged используя
apt autoremove --purge
. Файлы конфигурации, которые обрабатывались
dpkg или
ucf в процессе обновления некоторые аналоги остались со специальным суффиксом, например
.dpkg-dist
,
.dpkg-old
,
.ucf-old
. Используя
find
или
locate
команду может помочь их выследить. Если они больше не пригодятся, их можно удалить.
6.7.3.4. Файлы не принадлежащие какому либо пакету
Политика Debian требует, чтобы пакеты не оставляли после себя файлы после очистки. Нарушение этого принципа является серьезной ошибкой, и вы редко с ней столкнетесь. Если да, сообщите об этом; и если вам интересно, вы можете использовать пакет cruft или cruft-ng, чтобы проверить вашу систему на наличие файлов, не принадлежащих какому-либо пакету.