Unattended Upgrades — это инструмент для автоматической установки обновлений безопасности и критических пакетов на Debian. Он особенно полезен на серверах, VPS и production-системах, где важно вовремя получать патчи без ручного вмешательства. Главные сложности для новичка: нужно понять разницу между systemd-таймерами (apt-daily.timer и apt-daily-upgrade.timer), правильно настроить Origins-Pattern (чтобы обновлялись только нужные репозитории), а также опционально настроить уведомления по email и автоматическую перезагрузку. Также важно уметь проверять логи и отлаживать конфигурацию через --dry-run --debug.
💡 В этом руководстве вы установите и настроите Unattended Upgrades на Debian. Вы узнаете, как включить автоматическую установку обновлений безопасности, настроить systemd-таймеры, исключить определённые пакеты, настроить email-уведомления и автоматическую перезагрузку, а также как проверять логи и решать типичные проблемы.
В этой статье вы узнаете:
- Как установить Unattended Upgrades
- Как настроить обновления только для репозитория безопасности
- Как исключить пакеты из автоматического обновления
- Как настроить email-уведомления
- Как настроить автоматическую перезагрузку после обновления
- Как проверить логи и отлаживать конфигурацию
- Как решить типичные проблемы: обновления не работают, проблемы с зависимостями, ошибки dpkg
Для кого: системные администраторы, владельцы VPS, а также все, кто хочет автоматизировать установку обновлений безопасности на Debian 11, 12 или 13.
1. 🔧 Предварительные требования
Перед настройкой убедитесь, что:
- У вас установлена Debian 11, 12 или 13
- Подключение к интернету стабильно
- У вас есть права sudo
⚠️ ВАЖНО: Проверьте права sudo перед установкой
Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:
sudo whoami
Что делает: sudo выполняет команду от имени суперпользователя, whoami показывает имя текущего пользователя.
Зачем: Эта команда проверяет, есть ли у вас права sudo. Без них вы не сможете настраивать систему.
✅ Если выводит root — всё в порядке, можете продолжать.
❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.
1.1 Обновление системы
Перед настройкой всегда обновляйте список пакетов.
sudo apt update && sudo apt upgrade -y
2. 📦 Установка Unattended Upgrades
sudo apt install unattended-upgrades -y
Что делает: Устанавливает пакет для автоматических обновлений.
Опционально: Установите дополнительные пакеты:
sudo apt install apt-config-auto-update powermgmt-base -y
apt-config-auto-update— для автоматической перезагрузкиpowermgmt-base— для проверки питания (ноутбуки)
3. 🕐 Понимание systemd-таймеров
Unattended Upgrades запускается через systemd-таймеры, а не через cron.
| Таймер | Расписание | Что делает |
|---|---|---|
apt-daily.timer | 2 раза в день (6:00 и 18:00) | Скачивает списки пакетов и новые версии |
apt-daily-upgrade.timer | Раз в день (6:00) | Устанавливает обновления через unattended-upgrades |
Проверка статуса таймеров:
systemctl status apt-daily-upgrade.timer
Просмотр расписания:
systemctl list-timers apt-daily*
4. ⚙️ Базовая настройка
4.1 Резервное копирование конфигурации
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades{,.bak}
4.2 Редактирование конфигурации
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
4.3 Настройка источников обновлений
По умолчанию включены только обновления безопасности:
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
};
Если вы хотите обновлять также -updates (точечные релизы):
Unattended-Upgrade::Origins-Pattern {
"origin=Debian,codename=${distro_codename},label=Debian";
"origin=Debian,codename=${distro_codename},label=Debian-Security";
"origin=Debian,codename=${distro_codename}-security,label=Debian-Security";
"origin=Debian,codename=${distro_codename}-updates,label=Debian";
};
4.4 Исключение пакетов из автоматического обновления
Unattended-Upgrade::Package-Blacklist {
"nginx";
"mysql-server";
"postgresql";
"docker-ce";
};
4.5 Настройка email-уведомлений
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";
Значения MailReport:
always— всегда отправлять отчётonly-on-error— только при ошибкахon-change— когда произошли изменения
4.6 Автоматическая перезагрузка
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
4.7 Очистка неиспользуемых пакетов
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
4.8 Логирование в syslog
Unattended-Upgrade::SyslogEnable "true";
5. 🧪 Проверка конфигурации
Всегда проверяйте конфигурацию после изменений:
sudo unattended-upgrades --dry-run --debug
Что ищем:
Allowed origins— должны быть ваши источникиPackages that will be upgraded— список пакетов для обновления- Нет ошибок в выводе
6. 📊 Управление сервисом
| Команда | Что делает |
|---|---|
systemctl status unattended-upgrades | Статус сервиса |
sudo systemctl restart unattended-upgrades | Перезапуск сервиса |
sudo systemctl disable apt-daily-upgrade.timer | Отключение таймера |
7. 📜 Просмотр логов
7.1 Логи Unattended Upgrades
sudo cat /var/log/unattended-upgrades/unattended-upgrades.log
7.2 Последние строки
sudo tail -50 /var/log/unattended-upgrades/unattended-upgrades.log
7.3 Поиск по дате
sudo grep "2026-04-28" /var/log/unattended-upgrades/unattended-upgrades.log
7.4 Через journalctl
Если включена syslog-опция:
journalctl -u unattended-upgrades
8. ⚠️ Решение типичных проблем
8.1 Обновления не запускаются автоматически
Причина: Таймер отключён.
Решение:
sudo systemctl enable apt-daily-upgrade.timer
sudo systemctl start apt-daily-upgrade.timer
8.2 Пакеты не обновляются (held back)
Причина: Конфликт зависимостей.
Решение: Проверьте вручную:
sudo apt update
sudo apt --simulate upgrade
Если проблемы есть — выполните полное обновление вручную:
sudo apt upgrade
8.3 Ошибка dpkg lock
Симптом: Could not get lock /var/lib/dpkg/lock-frontend
Решение: Проверьте, не запущен ли другой APT-процесс:
ps aux | grep -E 'apt|dpkg'
Если ничего не работает — удалите锁 (осторожно!):
sudo rm /var/lib/apt/lists/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a
8.4 Email-уведомления не работают
Причина: Нет настроенного MTA (mail transfer agent).
Решение: Установите bsd-mailx и postfix:
sudo apt install bsd-mailx postfix -y
При установке Postfix выберите «Internet Site».
9. ⚙️ (Опционально) Настройка cron вместо systemd-таймеров
Если вы хотите задать своё расписание, отключите systemd-таймер и добавьте cron-задание:
sudo systemctl disable apt-daily-upgrade.timer
Добавьте cron-задание:
sudo crontab -e
Пример (ежедневно в 3 часа ночи):
0 3 * * * /usr/bin/unattended-upgrade
10. ❌ Удаление Unattended Upgrades
sudo apt remove unattended-upgrades apt-config-auto-update powermgmt-base -y
sudo apt autoremove -y
Удаление конфигурации (опционально):
sudo rm /etc/apt/apt.conf.d/50unattended-upgrades
11. 📝 Чек-лист: всё готово к работе
- [ ] Пакет
unattended-upgradesустановлен - [ ] Файл конфигурации
/etc/apt/apt.conf.d/50unattended-upgradesнастроен - [ ]
sudo unattended-upgrades --dry-run --debugне показывает ошибок - [ ] systemd-таймер активен (
systemctl status apt-daily-upgrade.timer) - [ ] Email-уведомления настроены
- [ ] Автоматическая перезагрузка настроена
Заключение
Вы настроили автоматические обновления безопасности на Debian. Это важный шаг для обеспечения безопасности сервера, особенно если вы не можете заходить на него каждый день. Главное, что нужно запомнить: по умолчанию обновляются только пакеты из репозитория безопасности (security.debian.org). Если нужно обновлять и другие репозитории, добавьте их в Origins-Pattern. Всегда проверяйте конфигурацию через --dry-run --debug. Для серверов, где критична доступность, настройте уведомления и время перезагрузки.
Что дальше: