- Вопрос или проблема
- Что такое фазированные обновления?
- Почему Ubuntu использует их?
- Какая от них польза для меня?
- Могу ли я (и следует ли мне) отключить их или обойти их?
- Почему сообщения apt о фазированных обновлениях такие неясные?
- Ответ или решение
- Что такое фазовые обновления?
- Почему Ubuntu использует фазовые обновления?
- В чем преимущество фазовых обновлений для пользователей?
- Можно ли отключить фазовые обновления и нужно ли это делать?
- Почему сообщения apt о фазовых обновлениях такие нечеткие?
- Заключение
Вопрос или проблема
Итак, я столкнулся с этой странной проблемой “удерживаемые пакеты” при обновлении моей системы с помощью apt
. После некоторого исследования, это, похоже, является результатом “фазированных обновлений”.
- Что такое фазированные обновления?
- Почему Ubuntu использует их?
- Какая от них польза для меня?
- Могу ли я (и следует ли мне) отключить их или обойти их?
- Почему сообщения
apt
о фазированных обновлениях такие неясные?
Что такое фазированные обновления?
Фазированные обновления — это программные обновления, которые постепенно распространяются среди пользователей, а не предоставляются сразу всем одновременно. В системе обновлений, которая не использует фазированные обновления, всем пользователям сразу предлагается установить обновление, как только оно становится доступным. При использовании фазированных обновлений только некоторым пользователям предлагается обновление при его первом выпуске. С течением времени обновление получают всё больше и больше пользователей, пока обновление, наконец, не будет “полностью фазировано” и все пользователи не получат его.
Ubuntu использует систему фазированных обновлений для Ubuntu Desktop с версии Ubuntu 13.04 (почти десять лет назад!), однако до сих пор только графический интерфейс Ubuntu мог обрабатывать фазированные обновления. Обновление через apt
игнорировало фазирование обновлений. Однако начиная с Ubuntu 21.04, apt
также использует фазированные обновления, что позволяет применить фазированные обновления ко всем версиям Ubuntu, включая Ubuntu Server и Ubuntu, работающий в контейнерах. Кстати, именно это изменение также привело к печально известному сообщению “Следующие пакеты были удержаны” от apt
при многих обновлениях системы. Хотя фазированные обновления в apt
существуют с Ubuntu 21.04, они стали наиболее заметны в Ubuntu 22.04 LTS.
Почему Ubuntu использует их?
Иногда, как и все остальные, разработчики Ubuntu совершают ошибки. Хотя обновления тестируются перед выпуском, иногда неожиданные крайние случаи не учитываются должным образом. И если эти неожиданные крайние случаи оказываются довольно распространенными, они могут начать создавать у пользователей проблемы с их системами.
В прошлом, до того как фазированные обновления использовались с Apt, каждый раз, когда публиковалось обновление, все пользователи Ubuntu могли сразу установить его. И если это обновление оказывается плохим, оно могло испортить много систем сразу. Фазированные обновления позволяют в случае, если обновление оказывается плохим, обнаружить это раньше, чем все получат обновление. Как только обновление выходит, некоторые пользователи получают его раньше других. И если на системах этих пользователей начинают происходить сбои (или выявляются серьезные проблемы с пакетом), процесс фазирования может быть остановлен, что означает, что обновление перестает предлагаться пользователям по умолчанию. Это повышает безопасность и стабильность Ubuntu.
Система фазирования гарантирует, что разные группы пользователей будут выбраны для получения обновлений первыми, чтобы не было одной группы несчастных людей, которые всегда получают обновления сразу после их выпуска.
Какая от них польза для меня?
Если в прошлом вы сталкивались с ситуациями, когда обновление ломало вашу систему, то в будущем вероятность таких проблем будет меньше. Фазирование обновлений делает так, что повреждения скорее будут обнаружены на раннем этапе, предотвращая проблемы на настольных компьютерах, серверах и других устройствах с Ubuntu. Это напрямую приносит пользу пользователям Ubuntu, увеличивая стабильность и надежность Ubuntu.
Могу ли я (и следует ли мне) отключить их или обойти их?
Это зависит от того, насколько стабильной должна быть ваша система. Если вы просто хотите избегать уведомлений о пак
етах, которые удерживаются при обновлениях apt
, и готовы быть одним из первых людей, которые получают обновления сразу после их выхода, вы можете отключить фазированные обновления. Это связано с определенным риском, так как это означает, что если обновление окажется плохим, вы почти наверняка будете первым, кто получит это обновление (по сути, вы делаете себя подопытным кроликом для ранних выпусков обновлений!). Но это избавит от уведомлений о удерживаемых пакетах в apt
.
Если это звучит как плохая идея, оставьте фазированные обновления включенными.
Обход фазированных обновлений путем запуска apt install
для удерживаемых пакетов, вероятно, всегда является плохой идеей — это не “исправит” уведомление о удерживаемых пакетах (которое на самом деле не нуждается в исправлении) и приведет вас к установке пакетов заранее. Если вы уже сделали это, вряд ли это испортит вашу систему (если только обновление не имеет проблем), но, вероятно, это не то, что вы хотите делать регулярно.
Если вы абсолютно уверены, что хотите отключить фазированные обновления, вы можете изменить конфигурацию apt, создав файл в /etc/apt/apt.conf.d
, содержащий следующие строки:
Update-Manager::Always-Include-Phased-Updates true;
APT::Get::Always-Include-Phased-Updates true;
Вы можете назвать файл 99-Phased-Updates
, если /etc/apt/apt.conf.d/99-Phased-Updates
еще не существует. Также, делайте это только если вы действительно понимаете, что делаете, и абсолютно уверены, что вам нужно это сделать (например, если вы намеренно устанавливаете все последние пакеты, так как хотите помочь их тестированию и можете позволить себе поломку системы). Если вы делаете это по любой другой причине, кроме этого примера, вероятно, существует более подходящий способ.
Почему сообщения apt
о фазированных обновлениях такие неясные?
ОБНОВЛЕНИЕ: От Ubuntu 24.04 apt
теперь четко показывает пакеты, которые Следующие обновления были отложены из-за фазирования
, а не просто показывает, что пакеты удерживаются.
На самом деле, несколько сложно заставить apt
распознавать фазированные обновления как удерживаемые, потому что они являются фазированными обновлениями, из-за работы зависимостей. Однако, мы признаем, что это досадная проблема, и она находится в нашем поле зрения. Об этом можно узнать из отчета об ошибке здесь: https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1988819 Если у вас есть учетная запись Ubuntu SSO и вы можете войти в Launchpad, вы можете нажать на “Эта ошибка затрагивает X человек. Существует ли эта ошибка у вас?” на верху страницы, а затем нажать “Да, это затрагивает меня”, чтобы увеличить рейтинг этой ошибки, делая ее более значительной.
(Примечание: Пожалуйста, не оставляйте злобных и гадких комментариев внизу отчета об ошибке — все, что они делают, это только раздражают или расстраивают нас и на самом деле не ускоряют исправление ошибки.)
Также стоит добавить, как объясняется в документации apt-preferences, что фазированные обновления зависят от ID машины каждого компьютера, который может быть найден (и потенциально изменен/скопирован – но обычно следует избегать его изменения, как упоминал @Daniel) в /etc/machine-id. Поэтому, если у двух машин один и тот же machine-id, они находятся на одном “фазе” и получают одни и те же обновления.
Если у вас есть несколько систем, которые вы хотите получать одинаковые наборы обновлений (обращаясь к вопросу @TamerZiady) – из документации :
Вы можете установить APT::Machine-ID на UUID, так что они
все будут фазированы одинаково, или установить APT::Get::Never-Include-Phased-Updates или
APT::Get::Always-Include-Phased-Updates в true, так что APT никогда/всегда будет учитывать фазированные обновления.
.
Ответ или решение
Фазовые обновления часто вызывают вопросы у пользователей Ubuntu, особенно когда они сталкиваются с сообщением "Следующие пакеты были удержаны" при использовании apt
для обновления своей системы. Давайте разберёмся подробно, что такое фазовые обновления и как они влияют на пользователей.
Что такое фазовые обновления?
Фазовые обновления — это методика развертывания программных обновлений, при которой они постепенно предоставляются пользователям, а не сразу всем одновременно. В традиционной системе, без фазовых обновлений, все пользователи сразу получают доступ к новому обновлению, как только оно становится доступным. При использовании фазовых обновлений только часть пользователей получает обновление на первом этапе. Со временем доступ к обновлению расширяется, постепенно охватывая всех пользователей.
Такая стратегия используется в Ubuntu начиная с версии 13.04. Первоначально она применялась только в графическом интерфейсе обновлений Ubuntu. Однако начиная с версии 21.04, инструмент командной строки apt
также поддерживает фазовые обновления, что делает эту функциональность доступной для всех версий Ubuntu, включая серверные версии и контейнеры. Это нововведение и стало причиной появления сообщений "пакеты были удержаны" в процессе обновлений.
Почему Ubuntu использует фазовые обновления?
Фазовые обновления служат механизмом защиты от случайных ошибок в программном обеспечении. Несмотря на тщательное тестирование, иногда возникают неожиданности или не учитываются редкие случаи, которые могут вызвать проблемы у пользователей. В прошлом, когда обновления сразу распространялись на всех, некорректное обновление могло повлиять на большое количество пользователей. Фазовые обновления позволяют выявить и решить проблемы на ранней стадии, ограничивая круг пользователей, которые пострадали бы в случае ошибок.
Модели фазирования также помогают обеспечивать разнообразие среди пользователей, которые первыми получают обновления, исключая повторяющееся влияние на одну и ту же группу.
В чем преимущество фазовых обновлений для пользователей?
Основное преимущество для пользователей заключается в повышении стабильности и надежности системы. Благодаря фазированию, шансы на то, что проблемное обновление испортит систему, значительно уменьшаются, так как проблемы выявляются раньше, когда обновление доступно только ограниченной группе пользователей. Это позволяет Ubuntu улучшать качество обслуживания пользователей, поддерживая их устройства в рабочем состоянии.
Можно ли отключить фазовые обновления и нужно ли это делать?
Возможность отключения фазовых обновлений существует, но решение зависит от конкретных потребностей пользователя. Если вы готовы рисковать стабильностью вашей системы ради получения самых последних обновлений, то можете отключить фазовые обновления. Однако это значит, что в случае наличия ошибки в обновлении, вы первыми столкнетесь с этой проблемой.
Для отключения фазовых обновлений можно изменить конфигурацию apt
, добавив в файл /etc/apt/apt.conf.d/99-Phased-Updates
следующие строки:
Update-Manager::Always-Include-Phased-Updates true;
APT::Get::Always-Include-Phased-Updates true;
Однако это стоит делать только в случае абсолютной уверенности и понимания рисков, например, если вам необходимо тестировать самые последние версии программ.
Почему сообщения apt
о фазовых обновлениях такие нечеткие?
Сообщения apt
о фазовых обновлениях часто вызывают путаницу из-за сложности распознавания таких обновлений как «удержанных» по причине фазирования. Тем не менее, в версии Ubuntu 24.04, apt
уже предоставляет более ясные сообщения, объясняя, что обновления были отложены из-за фазирования, тем самым улучшая коммуникацию с пользователями.
Эта проблема давно известна, и существуют баг-репорты об этом. Пользователи могут выразить поддержку решению этой проблемы, отметив, что данный баг влияет и на них.
Заключение
Фазовые обновления в Ubuntu представляют собой важный инструмент для улучшения качества программного обеспечения и предотвращения массовых проблем, связанных с обновлениями. Они помогают упростить процесс выявления и решения проблем на ранних стадиях и защищают пользователей от потенциальных негативных последствий ошибок. Несмотря на то, что вы можете отключить фазовые обновления, этого следует избегать без острой необходимости, особенно если стабильность системы для вас в приоритете.