Дистрибутив Debian не представлен в каком-либо единственном варианте, он состоит из нескольких веток, каждая ветка подходит для определенного сценария использования.
Рассмотрим ветки, начиная от верхней:
- Experimental — в эту ветку попадают новые (альфа) версии пакетов, которые содержат (или могут содержать) ошибки. Не является полноценной веткой: не содержит всех пакетов; некоторые пакеты имеют зависимости от пакетов Unstable ветки, соответственно, ветка может использоваться только совместно с Unstable. Обновления безопасности попадают в ветку естественным путем (через обновления версий пакетов). Поломки/ошибки в процессе использования/обновлений являются нормой, так как ветка предназначена для разработчиков дистрибутива. Ветку можно сравнить со складом стройматериалов.
- Unstable — кодовое имя — sid. В эту ветку попадают новые версии пакетов, которые не имеют видимых ошибок. В большинстве случае ошибки все-таки имеются, отсюда и название ветки. Обновления безопасности попадают в ветку естественным путем (обновления каждые 6 часов). Поломки/ошибки в процессе использования/обновлений являются нормой, так как ветка предназначена для разработчиков дистрибутива. Ветку можно сравнить со стройплощадкой.
- Tesing — на текущий момент (середина 2023) это Debian 13 (кодовое имя trixie). С этой ветки начинается хоть какая-то стабильность, в нее попадают пакеты из Unstable после минимального тестирования (в среднем от 2 до 10 дней). Чаще всего критических ошибок не имеет, в ней редко что-либо ломается. Обновления безопасности попадают в ветку из репозитория testing-security (основную поддержку оказывает Google, ибо используют Debian testing). Ветка предназначена для пользователей, которым хочется иметь пакеты (пред)последних версий. Ветку можно сравнить с каким-либо роллинг дистрибутивом с небольшим нюансом: за несколько месяцев до выхода stable версии пакетов замораживаются и ветка становится полигоном для будущего stable.
- Stable — стабильный релиз, главная ветка Debian. На текущий момент это Debian 12 (bookworm). Четких сроков релизов stable не существует в угоду стабильности. Перед выпуском stable пакеты тестируются (в замороженной testing), ошибки исправляются, к моменту релиза достигается максимальная стабильность. Вероятность поломки при использовании/обновлении stable примерно 0%, поэтому ветка предназначена для пользователей, которым важна максимальная надежность (и для новичков). Цена — версии пакетов: на момент релиза они и так не самые свежие (из-за заморозки), а в дальнейшем будут только устаревать, ибо обновления stable не дают рост версий ПО, а дают только безопасность (из репозитория stable-security) и исправление критических ошибок (из репозитория stable путем выпуска точечных релизов; из репозиториев stable-updates; по желанию из stable-proposed-updates). При потребности в более свежих версиях определенных пакетов их можно установить из репозитория stable-backports. Эти пакеты прошли минимальное тестирование и довольно стабильны, но о максимальной стабильности речи не идет. Срок жизни ветки: 2 — 3 года.
Ну и сразу поясним термин «стабильность», ибо почему-то у многих диванных экспертов в комментариях он ассоциируется с «офигенной работой без багов». Но если вы откроете теорию операционных систем, то в первых же главах увидите, что:
Стабильность — это способность операционной системы сохранять предсказуемое, контролируемое и устойчивое поведение в течение времени работы, даже при наличии ошибок, пиковых нагрузок или нештатных ситуаций (например, при сбое одного из компонентов).
Стабильность ≠ Надёжность. Надёжность — это характеристика, показывающая, как долго система может работать без отказов. Надёжная система может быть нестабильной, если, например, при высоких нагрузках она ведёт себя непредсказуемо, даже если не падает. Аналогично, стабильная система может быть ненадёжной, если, например, из-за ошибок в оборудовании она регулярно и предсказуемо падает.
Стабильность ≠ Идеальная работа. Стабильность означает, что система предсказуемо работает в заданных границах, даже если работает плохо. А «идеальная работа» подразумевает высокую производительность, нулевые ошибки, безупречную отзывчивость и отсутствие лагов. Это уже цель стабильности, а не её свойство. - OldStable — на текущий момент это Debian 11 (bullseye). Предыдущий стабильный релиз. Соответственно, пакеты еще более старые. Предоставляются только обновления безопасности из репозитория oldstable-security. Срок жизни ветки: 2 — 3 года. Прибавляем к ним 2-3 года из времен когда OldStable был Stable — и получаем примерный срок жизни ветки с гарантированными обновлениями безопасности всей системы — 4 — 6 лет.
- OldOldStable — На текущий момент это Debian 10 (buster). Предыдущий предыдущий стабильный релиз. Соответственно, пакеты очень старые. Предоставляются только LTS обновления безопасности из репозитория oldoldstable-security (то есть обновления безопасности получают только ключевые компоненты ОС, а не все пакеты). Срок жизни ветки: до окончания LTS.
Более ранние выпуски
Более ранние выпуски дистрибутива перестают получать какие-либо обновления, их установочные образы и репозитории перемещаются в архив. Из архива установщики всегда доступны для скачивания (и репозитории доступны для подключения, только уже по архивному url). Использовать устаревший софт без обновлений безопасности строго не рекомендуется.
Какую ветку выбрать для конкретной задачи
Unstable или Experimantal+Unstable — разработчики дистрибутива не рекомендуют использовать нигде, даже если вы опытный пользователь. В интернете периодически встречаются люди, которые используют. Иногда они даже заявляют, что у них ничего не ломается. Это может быть везением, высокой квалификацией или враньем — не обращайте внимание, ибо они наверное знают что делают. Но если у вас возник вопрос по поводу выбора ветки, то Unstable (+Experimantal ) точно не ваш путь.
По моему опыту использования Unstable: ошибок практически не встречаешь, но когда встречаешь — досаждают. Особенно неприятно получить их после очередного обновления и обнаружить в самый неожиданный момент. Обновлений прилетает слишком много, через несколько месяцев мне надоело ловить по несколько ГБ обновлений в день, и я перестал обновляться. Через полгода я все-же решил обновиться (все как положено, через apt full-upgrade), но apt предложил удалить бóльшую часть пакетов в системе. Понимая что надо копаться руками, я решил этого не делать, а провести эксперимент — я подождал месяц (ситуация не изменилась), и ради интереса обновился. Система после этого конечно же накрылась.
Testing — разработчики дистрибутива рекомендуют использовать на десктопах опытным пользователям. Версии пакетов близки к последним (отставание от Unstable в несколько дней), зато ошибки практически отсутствуют и при обновлениях система скорее всего не накроется. Автоматическое обновление стоит включать только если у вас быстрый и безлимитный интернет — их приходит довольно много. А лучше обновляться вручную и контролировать процесс, ибо иногда в обновлениях testing проскакивает что-то сырое. Не используйте testing на сервере! Для сервера стабильности testing недостаточно. Также на сервере небезопасно отключать автоматическое обновление (а в случае testing его по хорошему включать не надо). Еще для сервера недопустимы обновления версий пакетов во избежании поломки конфигов (допустимы только обновления безопасности, но в testing растут версии).
По моему опыту использования Testing: использую на десктопах дома не первый год, критических ошибок не ловил, не припомню чтобы что-то ломалось (даже после продолжительного перерыва между обновлениями). Свежий софт радует, но иногда что-то выпиливают, что-то чуток ломают, да и обновлений прилетает многовато. Так что — не для каждого.
Stable — разработчики дистрибутива рекомендуют для большинства случаев — используйте эту ветку на серверах с автоматическим обновлением безопасности — и сервер будет жить долго и счастливо. Также используйте на десктопах, где требуется максимальная стабильность (или если вы новичок). Не стесняйтесь ставить на декстоп из бекпортов пакеты новее при необходимости. На десктопах можете включать все автоматические обновления — обычно их прилетает не более 100 МБ в неделю. Разве что на десктопе пусть обновлениями занимается ваша DE, а не UnattendedUpgrades. Сломать Stable можно разве что специально (что и делают многие «профи» залезая не пойми куда с фразой «debian слишком много за меня делает»).
Как писал выше — срок получения обновлений безопасности = срок жизни Stable + срок жизни OldStable = 4-6 лет. А если прибавить и срок жизни OldOldStable с LTS обновлениями = еще больше.
По моему опыту использования Stable: использую на всех серверах, на десктопах на работе, ставлю на десктопы родне — проблем не возникало никогда. Разве что иногда версии пакетов были староваты, и выручали backports или flatpak.
Для каких веток можно скачать установщики
Unstable (только netboot), Testing (еженедельные и ежедневные), Stable, любые более ранние.
Возможен ли переход между ветками
Переход на более высокую ветку возможен (например, со Stable на Testing), для этого потребуется сделать полное обновление текущей системы до актуального состояния; подключить репозитории требуемой ветки; снова сделать полное обновление системы, удалить неиспользуемые системой пакеты. За один проход допускается подъем только на один шаг по веткам (например, с OldOldStable на OldStable).
Переход на более низкую ветку адекватным способом невозможен, ибо скрипты дистрибутива рассчитаны только на повышение версии. Но если квалификация позволяет — возможно что угодно.
Вывод:
Не используйте Experimental+Unstable или Unstable нигде (или используйте если вы понимаете, что делаете).
Используйте Testing на десктопе, если требуются свежие версии пакетов и если вы не совсем прям новичек. Не используйте Testing на сервере.
Используйте Stable на сервере с автоматическими обновлениями безопасности. Используйте Stable на десктопах где важна стабильность (c автоматическими обновления по желанию).