Введение / Зачем это нужно
Управление обновлениями в Ubuntu — критически важная задача для поддержания безопасности, стабильности и актуальности системы. Регулярные обновления закрывают уязвимости, исправляют ошибки и добавляют новые функции. Однако автоматические обновления могут иногда нарушать работу сервисов или требовать перезагрузку в неудобное время. Этот гайд поможет вам настроить обновления под свои нужды: включить автоматическую установку только security-обновлений, полностью отключить автоматику или управлять обновлениями вручную через терминал. Вы также узнаете, как временно заморозить отдельные пакеты, чтобы избежать нежелательных изменений.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас установлена Ubuntu 20.04 LTS, 22.04 LTS или 24.04 LTS.
- У вас есть доступ к терминалу (Ctrl+Alt+T) и права суперпользователя (sudo).
- Система подключена к интернету для загрузки обновлений.
Шаг 1: Проверка доступных обновлений
Прежде чем устанавливать что-либо, всегда проверяйте список доступных обновлений. Это даст вам понимание, какие пакеты будут изменены, и позволит оценить влияние на систему.
# Обновление кэша пакетов (информация о последних версиях)
sudo apt update
# Показать список пакетов, готовых к обновлению
apt list --upgradable
Вывод команды apt list --upgradable будет выглядеть примерно так:
libc6/jammy-updates 2.35-0ubuntu3.2 amd64 [upgradable from: 2.35-0ubuntu3.1]
openssl/jammy-updates 3.0.2-0ubuntu1.10 amd64 [upgradable from: 3.0.2-0ubuntu1.9]
...
Шаг 2: Установка обновлений вручную
Если вы готовы к обновлению, установите пакеты. Базовый вариант — apt upgrade, который обновляет пакеты без удаления существующих. Для более полного обновления (например, при изменении зависимостей) используйте apt full-upgrade.
# Установка всех доступных обновлений (без удаления пакетов)
sudo apt upgrade
# Альтернатива: обновление с возможным удалением пакетов для разрешения зависимостей
sudo apt full-upgrade
💡 Совет: Добавьте флаг
-yдля автоматического подтверждения (например,sudo apt upgrade -y), но будьте осторожны — вы не увидите список изменений перед установкой.
Шаг 3: Настройка автоматических обновлений (unattended-upgrades)
Для автоматической установки обновлений (особенно безопасности) в фоновом режиме используется пакет unattended-upgrades. Он по умолчанию установлен во многих версиях Ubuntu, но может быть отключен.
Установка и базовая настройка
# Установка пакета (если не установлен)
sudo apt install unattended-upgrades
# Включение автоматических обновлений
sudo dpkg-reconfigure --priority=low unattended-upgrades
В интерактивном меню выберите Yes для автоматической установки обновлений безопасности.
Детальная настройка
Основной конфигурационный файл — /etc/apt/apt.conf.d/50unattended-upgrades. Отредактируйте его, чтобы точно указать, какие обновления устанавливать автоматически.
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Найдите раздел Unattended-Upgrade::Allowed-Origins и раскомментируйте строки, которые соответствуют вашим потребностям. Например, для автоматической установки только обновлений безопасности:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
// Остальные строки закомментируйте, если хотите только security
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Также можно настроить автоматическую перезагрузку при необходимости (например, после обновления ядра):
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
Проверка статуса
После настройки проверьте, что служба активна:
sudo systemctl status unattended-upgrades
Логи автоматических обновлений хранятся в /var/log/unattended-upgrades/.
Шаг 4: Отключение автоматических обновлений
Если вы предпочитаете полностью контролировать процесс обновления, отключите unattended-upgrades.
# Остановка службы
sudo systemctl stop unattended-upgrades
# Отключение автозагрузки при старте системы
sudo systemctl disable unattended-upgrades
⚠️ Важно: Отключайте автоматические обновления только если у вас есть альтернативный механизм контроля (например, регулярные ручные проверки). Это оставляет систему уязвимой для security-обновлений.
Шаг 5: Управление отдельными пакетами (заморозка и разморозка)
Иногда нужно временно предотвратить обновление конкретного пакета (например, если он вызывает конфликты). Используйте apt-mark для заморозки (hold) и разморозки (unhold).
# Заморозить пакет (например, nginx)
sudo apt-mark hold nginx
# Проверить список замороженных пакетов
apt-mark showhold
# Разморозить пакет
sudo apt-mark unhold nginx
После заморозки пакет не будет обновляться даже при apt upgrade. Чтобы обновить замороженный пакет, сначала разморозьте его.
Шаг 6: Графический интерфейс (Update Manager)
Для пользователей, предпочитающих GUI, Ubuntu включает Update Manager (программа update-manager). Он доступен через меню приложений или командой:
update-manager
В настройках Update Manager (кнопка Settings) можно:
- Выбрать частоту проверки обновлений.
- Указать, какие обновления устанавливать автоматически (только security или все).
- Настроить уведомления.
Графический интерфейс использует те же репозитории и механизмы, что и apt, поэтому не конфликтует с командной строкой.
Проверка результата
После настройки убедитесь, что всё работает как ожидается:
- Для автоматических обновлений: проверьте логи
/var/log/unattended-upgrades/или выполнитеsudo unattended-upgrade --dry-runдля тестового прогона. - Для ручных обновлений: убедитесь, что
apt list --upgradableне показывает пакеты, которые вы заморозили. - Для заморозки: проверьте
apt-mark showhold— в списке должен быть ваш пакет. - После установки обновлений: проверьте, нет ли файла
/var/run/reboot-required. Если он есть, перезагрузите систему.
Возможные проблемы
Ошибки зависимости или разрыва пакетов
Если apt upgrade или apt full-upgrade завершается с ошибками, попробуйте исправить зависимости:
sudo apt --fix-broken install
sudo dpkg --configure -a
Недостаточно места на диске
Обновления требуют свободного места для загрузки и установки. Освободите место, удалив старые пакеты:
sudo apt autoremove # Удаление ненужных зависимостей
sudo apt clean # Очистка кэша пакетов
Конфликты при заморозке пакетов
Заморозка пакета может помешать установке обновлений безопасности, если этот пакет входит в security-репозиторий. Регулярно проверяйте замороженные пакеты и размораживайте их, если есть критические обновления.
unattended-upgrades не работает
Убедитесь, что служба активна (systemctl status unattended-upgrades) и что в конфиге правильно указаны репозитории. Проверьте логи на наличие ошибок.
Перезагрузка после обновлений
Некоторые обновления (особенно ядра) требуют перезагрузки. Можно автоматизировать это в unattended-upgrades или использовать утилиту needrestart для проверки:
sudo apt install needrestart
sudo needrestart -r
💡 Совет: Всегда делайте резервные копии важных данных перед крупными обновлениями, особенно на серверах.