Введение / Зачем это нужно
Регулярное обновление Linux — ключевая практика для поддержания безопасности, стабильности и актуальности вашей системы. Обновления закрывают уязвимости, исправляют ошибки и предоставляют новые функции. Этот гайд поможет вам безопасно и корректно обновить большинство популярных дистрибутивов Linux, избежав типичных проблем.
После выполнения вы получите актуальную систему с последними исправлениями и улучшениями.
Требования / Подготовка
Перед началом убедитесь, что выполнены следующие условия:
- Права администратора: вам понадобится доступ к
sudoили вход под root. - Стабильное интернет-соединение: обновления скачиваются из репозиториев.
- Свободное место на диске: минимум 1-2 ГБ для временных файлов и обновлений.
- Резервная копия (рекомендуется):
- Создайте бэкап важных данных в домашней директории (
/home) и конфигурационных файлов (/etc). - Если возможно, сделайте снимок системы (snapshot) через LVM, Btrfs или инструмент виртуальной машины.
- Создайте бэкап важных данных в домашней директории (
- Отсутствие прерванных операций: завершите все установки пакетов (
dpkg,apt,yumи т.д.) и закройте приложения.
Пошаговая инструкция
Шаг 1: Определите менеджер пакетов вашего дистрибутива
Linux-дистрибутивы используют разные менеджеры пакетов. Выполните одну из команд ниже, чтобы узнать, какой из них используется в вашей системе.
Для дистрибутивов на базе Debian/Ubuntu (apt):
which apt
Если команда возвращает путь (например, /usr/bin/apt), у вас apt.
Для RHEL/CentOS/Fedora (yum/dnf):
which yum
или
which dnf
Для Arch Linux (pacman):
which pacman
Также можно посмотреть файл /etc/os-release:
cat /etc/os-release
Обратите внимание на поле ID или NAME.
💡 Совет: Если у вас несколько менеджеров (например, и
apt, иsnap), обновляйте систему через основной менеджер дистрибутива (apt для Ubuntu/Debian).
Шаг 2: Обновите кэш пакетов
Кэш пакетов содержит информацию о доступных версиях программ. Его необходимо обновить, чтобы менеджер пакетов знал о последних версиях.
Для apt (Debian, Ubuntu, Mint и производные):
sudo apt update
Эта команда синхронизирует локальные списки пакетов с репозиториями.
Для yum (CentOS 7, RHEL 7):
sudo yum check-update
Команда проверяет обновления, но не устанавливает их.
Для dnf (CentOS 8+, Fedora, RHEL 8+):
sudo dnf check-update
Для pacman (Arch Linux, Manjaro):
sudo pacman -Sy
Флаг -Sy обновляет базу данных пакетов.
⚠️ Важно: На Arch Linux избегайте использования
sudo pacman -Syy(двойнойy), если только это не требуется для принудительного обновления базы. Это может привести к проблемам с синхронизацией.
Шаг 3: Установите обновления системы
После обновления кэша установите доступные обновления.
Для apt:
sudo apt upgrade
Эта команда обновит все пакеты, не удаляя и не устанавливая новые зависимости. Для полного обновления (включая удаление пакетов или установку новых) используйте:
sudo apt full-upgrade
Обычно достаточно upgrade.
Для yum:
sudo yum update
Для dnf:
sudo dnf update
Для pacman:
sudo pacman -Syu
Флаг -Syu синхронизирует, обновляет и обновляет всю систему.
⚠️ Важно: В процессе обновления могут появиться вопросы о конфигурационных файлах (например, если вы изменяли файлы в
/etc). Внимательно читайте сообщения. Если вы не уверены, сохраните локальную версию файла (по умолчанию при обновлении черезaptилиdnfсохраняется копия с расширением.dpkg-oldили.rpmnew).
Шаг 4: Перезагрузите систему (если требуется)
После обновления ядра или системных библиотек (например, glibc, systemd) перезагрузка обязательна. В противном случае система может работать нестабильно.
Выполните:
sudo reboot
Или, если вы в графической среде, используйте меню завершения работы.
💡 Совет: Чтобы проверить, требуется ли перезагрузка, на Ubuntu/Debian можно использовать:
ls /var/run/reboot-requiredЕсли файл существует, перезагрузка нужна. На других дистрибутивах проверьте, обновлялось ли ядро:
uname -rи сравните с установленной версией пакета ядра (например,
rpm -qa | grep kernelдля yum/dnf).
Шаг 5: Проверьте результат обновления
После перезагрузки убедитесь, что обновление прошло успешно.
- Проверьте версию дистрибутива:
lsb_release -a
илиcat /etc/os-release - Проверьте версию ядра:
uname -r - Убедитесь, что нет доступных обновлений (повторите шаг 2 и 3):
sudo apt update && sudo apt list --upgradable
Список должен быть пустым. - Проверьте статус служб:
systemctl list-units --state=failed
Не должно быть служб в состоянииfailed.
Проверка результата
Кратко: система обновлена, если:
- Команда
sudo apt list --upgradable(или аналоги для вашего менеджера) не показывает пакеты. - Версия дистрибутива (
lsb_release -d) соответствует ожидаемой (например, после обновления с Ubuntu 20.04 до 22.04). - Все критические службы (
systemctl) работают без ошибок. - Нет необходимости в перезагрузке (файл
/var/run/reboot-requiredотсутствует).
Возможные проблемы
Ошибка "Недостаточно места на диске"
Симптом: менеджер пакетов сообщает о нехватке места. Решение:
- Очистите кэш пакетов:
sudo apt clean # для apt sudo dnf clean all # для dnf sudo pacman -Sc # для pacman (осторожно, удаляет старые версии) - Удалите ненужные пакеты:
sudo apt autoremove # для apt sudo dnf autoremove # для dnf - Освободите место вручную (старые логи, временные файлы).
Сбой обновления из-за проблем с сетью
Симптом: обрыв соединения, ошибки 404 Not Found, Temporary failure resolving.
Решение:
- Проверьте интернет-соединение:
ping -c 3 8.8.8.8 - Переключитесь на другое зеркало (репозиторий). Для Ubuntu/Debian редактируйте файл
/etc/apt/sources.list, для других дистрибутивов — конфигурацию менеджера пакетов. - Повторите обновление. Менеджеры пакетов (apt, dnf, pacman) обычно возобновляют загрузку.
Конфликты пакетов или зависящие пакеты
Симптом: сообщения о "неудовлетворённых зависимостях" или "конфликтах". Решение:
- Для apt попробуйте исправить зависимости:
Затем сноваsudo apt --fix-broken installsudo apt upgrade. - Для dnf/yum:
sudo dnf distro-sync # синхронизирует пакеты с репозиториями - Если проблема не решается, вручную найдите пакеты, вызывающие конфликт (сообщение укажет их имена), и попробуйте удалить/переустановить их.
Ошибки конфигурационных файлов
Симптом: при обновлении пакета менеджер спрашивает, сохранить ли текущий конфиг.
Решение: Если вы не вносили важные изменения в конфиг, можно установить обновлённую версию (выбрать "Yes"). Если конфиг был изменён вручную, сохраните локальную версию (выбрарите "No" или оставьте старый файл). После обновления сравните файлы (diff /etc/package.conf /etc/package.conf.dpkg-old) и при необходимости слейте изменения.