Многие пользователи Linux винят обновления в нестабильности системы: поставил свежие пакеты, перезагрузился — и что-то перестало работать. На практике обновления редко бывают причиной сбоев. Гораздо чаще проблемы вызваны тем, что в системе за месяцы накопились сторонние репозитории, пакеты из разных источников и забытые ручные правки конфигурации. Обновления лишь обнажают этот беспорядок.
Почему казалось, что причина в обновлениях

Сбои чаще всего замечаешь сразу после установки свежих пакетов, и со временем формируется устойчивое впечатление: обновил — сломалось. Логика кажется железной — пришли новые версии, что-то пошло не так. Однако если присмотреться, картина не такая однозначная. Одни обновления проходят без единого замечания. После других всё нормально работает вплоть до перезагрузки. Бывает, что проблема возникает через несколько часов и в компоненте, который вообще не обновлялся.
Обновление — это заметное событие, чёткая точка на временной шкале. Поэтому оно и становится «крайним» по умолчанию, даже если реальная причина кроется в чём-то другом. На самом деле обновление просто совпадает с моментом, когда застарелая проблема впервые проявляется.
Пакетный менеджер — программа в Linux, которая устанавливает, обновляет и удаляет пакеты (архивы с файлами приложений и служебной информацией), автоматически отслеживая зависимости между ними. Примеры: APT в Debian/Ubuntu, DNF в Fedora, Pacman в Arch Linux.
Откуда берётся настоящая нестабильность
Типичная ситуация: пользователю нужна более свежая версия какой-нибудь программы, и он подключает PPA или сторонний репозиторий. Через неделю с другого сайта ставится .deb-пакет, потому что в штатном репозитории нужной версии ещё нет. Потом попадается готовый скрипт на GitHub, который в два клика настраивает нужную утилиту. Каждый из этих шагов по отдельности выглядит разумно, и Linux в большинстве случаев переваривает такие вольности без видимых последствий.
Но со временем в системе оказываются пакеты из разных источников с разными циклами обновлений и разными версиями библиотек. Добавьте к этому ручные правки конфигурационных файлов, подкрученные параметры драйверов и «временные» изменения в настройках служб, которые так и остались постоянными. Каждая такая правка казалась мелочью, не стоящей записи, — но все они никуда не делись. Система по-прежнему загружается и работает, только внутри неё уже нет согласованности: разные компоненты живут по разным правилам.
Репозиторий — сервер с базой пакетов, к которому обращается пакетный менеджер для установки и обновления программ. Штатные репозитории дистрибутива проверены на совместимость; сторонние такой гарантии не дают.
Что на самом деле происходит при обновлении

Процедура обновления рассчитана на то, что система находится в более-менее стандартном состоянии: пакеты получены из совместимых источников, зависимости не противоречат друг другу, конфигурация близка к типовой. Если эти условия нарушены, при обновлении начинают вылезать конфликты, которые до этого момента просто не проявлялись.
Например, конфликт зависимостей возникает из-за того, что пару недель назад были подключены два репозитория с разными версиями одной и той же библиотеки. Программа после обновления ведёт себя странно, потому что её конфигурационный файл когда-то правили руками и забыли об этом. Пакет отказывается устанавливаться, потому что два компонента из разных источников не рассчитаны на совместную работу. Во всех этих случаях виновато не обновление — виновато состояние системы, которое до обновления просто никем не проверялось.
Зависимости — связи между пакетами: для работы одной программы могут требоваться определённые версии библиотек или других пакетов. Если зависимости нарушены (например, из-за смешения источников), пакетный менеджер не сможет корректно установить или обновить программу.
Как распознать, что дело не в обновлениях
Когда вместо самого факта обновления начинаешь разбирать конкретный сбой, выясняется характерная закономерность. Приложение перестало запускаться — оказывается, оно было установлено из стороннего репозитория. Служба после перезагрузки работает не так, как раньше, — выясняется, что неделю назад правился её конфигурационный файл. При установке нового пакета возникает конфликт зависимостей — два компонента из разных источников требуют разных версий одной библиотеки.
Если покопаться в истории таких сбоев, каждый из них ведёт к конкретному действию, выполненному вручную. Система не нестабильна — она внутренне противоречива, и эти противоречия вносил сам пользователь, одно за другим.
Что помогает: минимализм и штатные источники
Рецепт прост: сократить число сторонних репозиториев до необходимого минимума и перестать ставить пакеты откуда попало. Если нужная программа есть в штатном репозитории дистрибутива — брать её оттуда. Устанавливать .deb-файлы или запускать скрипты со сторонних сайтов — только когда других вариантов действительно нет.
То же самое с ручными настройками. Не каждая мелочь в поведении системы требует немедленного вмешательства. Часть «неидеальностей» можно просто оставить как есть — стабильная работа важнее вылизанного конфига. А если правка всё-таки нужна, стоит хотя бы записать, что именно и зачем было изменено.
После такой расчистки система не станет быстрее или функциональнее, зато станет предсказуемой. Обновления из тревожной процедуры превратятся в рутину — тихую, незаметную и безопасную. Собственно, так и должно быть.
Заключение
Обновления Linux — это проверка согласованности системы, а не источник проблем. Сбои после установки свежих пакетов почти всегда связаны с тем, что в системе накопились сторонние репозитории, пакеты не из штатных источников и забытые ручные правки. Достаточно навести порядок в источниках пакетов и перестать править конфигурацию без необходимости, чтобы обновления снова стали рядовой операцией.