Разработчики всегда хотели реализовать постепенное обновление среди пользователей Убунту. Чтобы была возможность наблюдать регрессии и останавливать процесс обновления, если начинаются проблемы. Поддержка поэтапного обновления была реализована частью в update-manager, но не была реализована серверная часть. Благодаря работе множества разработчиков Ubuntu, поэтапное обновление теперь готово полностью.
http://vasilisc.com/images/problem_lifecycle_ubuntu.png
Кого это затрагивает? Пользователи Ubuntu 13.04, которые устанавливают обновления с помощью Обновление приложений (update-manager) автоматически включатся в этот процесс. Для каждого пакета update-manager генерирует случайное число и если это число меньше Phased-Update-Percentage пакет будет установлен. Можно отказаться от постепенного обновления, добавив параметр Update-Manager::Never-Include-Phased-Updates «True»; в /etc/apt/apt.conf
Как работает поэтапное обновление? Вначале процент для поэтапного обновления выставляется в 10%. Каждые 6 часов дата центры Canonical проверяют регрессии для каждого пакета и если проблем нет, то процент увеличивается ещё на 10%. Благодаря этому вводится новый уровень качества, так как если проблемы начнутся у 10%, то 90% пользователей это не затронет.
Как проверяются регрессии? Ubuntu Error Tracker (errors.ubuntu.com) был изменён разработчиками Canonical, чтобы можно было понять - есть ли проблемы в новом пакете? То есть появились ли сообщения о проблемах в новом пакете, которых не было в старом пакете?
Вы и сами можете проверить это, сделав запрос
errors.ubuntu.com/api/1.0/package-version-new-buckets/?format=json&package=unattended-upgrades&previous_version=0.76&new_version=0.76ubuntu1
Вывод как пример:
{
"meta": {
"limit": 7,
"next": null,
"offset": 0,
"previous": null,
"total_count": 0
},
"objects": [
{
"function": "/usr/bin/unattended-upgrade:SystemError:/usr/bin/unattended-upgrade@906:main:__init__:__init__:open",
"web_link": "https://errors.ubuntu.com/problem/e57f35ed46338b88065a808cb2c6aeed8cedcdbe"
},
{
"function": "/usr/bin/unattended-upgrade:UnboundLocalError:/usr/bin/unattended-upgrade@906:main:do_install",
"web_link": "https://errors.ubuntu.com/problem/111e3e2457ec0427e441b6aa4a38d2b492e4654d"
},
]
}
Кроме того, проверяется скорость появления новых ошибок. Ошибки за день для пакета сравниваются со средним значением проблем за последние две недели. Если срабатывает любой из детекторов регрессии, то процент поэтапного обновления выставляется в 0. Это позволит предотвратить получение проблемного обновления. Для разработчиков сразу видны отчёты по каждому пакету с процентами поэтапного обновления и все обнаруженные регрессии. На электронную почту высылается отчёт человеку, подписавшему пакет и создавшему пакет.
В поэтапном обновлении есть поддержка специфичных условий: система отслеживает отправленные сообщения и не посылает письмо о той же проблеме более одного раза.