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
- Как проверить, установлен ли пакет
- Как включить автоматические обновления через
20auto-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
2.1 Проверка, установлен ли пакет
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package} ${Version}\n' unattended-upgrades 2>/dev/null || echo "Пакет не установлен"
Если вы видите строку, начинающуюся с ii — пакет уже установлен. Если Пакет не установлен — продолжайте установку.
2.2 Установка основного пакета
sudo apt install unattended-upgrades -y
Что делает: Устанавливает пакет для автоматических обновлений.
2.3 Установка опциональных пакетов
sudo apt install apt-config-auto-update powermgmt-base -y
Что делает:
apt-config-auto-update— для автоматической перезагрузки и настройки APT periodicpowermgmt-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*
3.1 Включение таймеров (если отключены)
sudo systemctl enable --now apt-daily.timer apt-daily-upgrade.timer
4. ⚙️ Базовая настройка
4.1 Создание файла активации (20auto-upgrades)
Этот файл включает автоматическое обновление списков пакетов и установку обновлений.
sudo tee /etc/apt/apt.conf.d/20auto-upgrades > /dev/null <<EOF
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
EOF
Проверка настроек APT periodic:
apt-config dump | grep -E 'APT::Periodic::(Update-Package-Lists|Unattended-Upgrade)'
✅ Ожидаемый вывод:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
4.2 Резервное копирование конфигурации
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades{,.bak}
4.3 Редактирование конфигурации
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
💡 Совет: Вместо редактирования 50unattended-upgrades (файл пакета) можно создать свой файл 52unattended-upgrades-local с теми же опциями. Это упростит обновление пакета.
sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local
4.4 Настройка источников обновлений
По умолчанию включены только обновления безопасности:
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.5 Исключение пакетов из автоматического обновления
Unattended-Upgrade::Package-Blacklist {
"nginx";
"mysql-server";
"postgresql";
"docker-ce";
};
4.6 Настройка email-уведомлений
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";
Значения MailReport:
always— всегда отправлять отчётonly-on-error— только при ошибкахon-change— когда произошли изменения
4.7 Автоматическая перезагрузка
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
⚠️ Для серверов: Убедитесь, что время перезагрузки выбрано так, чтобы не мешать работе пользователей.
4.8 Очистка неиспользуемых пакетов
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
4.9 Логирование в syslog
Unattended-Upgrade::SyslogEnable "true";
5. 🧪 Проверка конфигурации
Всегда проверяйте конфигурацию после изменений:
sudo unattended-upgrades --dry-run --debug
Что ищем в выводе:
Allowed origins— должны быть ваши источникиPackages that will be upgraded— список пакетов для обновления- Отсутствие ошибок и Python traceback
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 --now apt-daily-upgrade.timer
sudo tee /etc/apt/apt.conf.d/20auto-upgrades > /dev/null <<EOF
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
EOF
8.2 Пакеты не обновляются (held back)
Симптом: В логах или сухом запуске пакеты помечены как kept 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 dpkg --configure -a
sudo apt -f install
⚠️ Не удаляйте lock-файлы вручную, если процесс APT всё ещё работает!
8.4 Email-уведомления не работают
Симптом: Письма не приходят.
Причина: Нет настроенного MTA (mail transfer agent).
Решение: Установите bsd-mailx и postfix:
sudo apt install bsd-mailx postfix -y
При установке Postfix выберите «Internet Site» и укажите домен.
8.5 На ноутбуке обновления не запускаются
Симптом: Таймеры работают, но обновления не устанавливаются на ноутбуке без подключения к сети.
Причина: В apt-daily-upgrade.service есть условие ConditionACPower=true.
Решение: Подключите ноутбук к питанию. Если нужно обновлять и на батарее, отредактируйте сервис:
sudo systemctl edit apt-daily-upgrade.service
Добавьте:
[Service]
ConditionACPower=
Затем перезагрузите сервис:
sudo systemctl daemon-reload
sudo systemctl restart apt-daily-upgrade.timer
9. ⚙️ (Опционально) Настройка cron вместо systemd-таймеров
Если вы хотите задать своё расписание, отключите systemd-таймер и добавьте cron-задание:
sudo systemctl disable --now apt-daily-upgrade.timer
Добавьте cron-задание:
sudo crontab -e
Пример (ежедневно в 3 часа ночи):
0 3 * * * /usr/bin/unattended-upgrade
10. ❌ Удаление Unattended Upgrades
10.1 Удаление основного и опциональных пакетов
sudo apt remove unattended-upgrades apt-config-auto-update powermgmt-base -y
sudo apt autoremove -y
10.2 Удаление конфигурации (опционально)
sudo rm -f /etc/apt/apt.conf.d/20auto-upgrades
sudo rm -f /etc/apt/apt.conf.d/50unattended-upgrades
sudo rm -f /etc/apt/apt.conf.d/52unattended-upgrades-local
10.3 Проверка удаления
dpkg-query -W -f='${db:Status-Abbrev} ${binary:Package}\n' unattended-upgrades 2>/dev/null | grep '^ii' || echo "unattended-upgrades не установлен"
11. 📝 Чек-лист: всё готово к работе
- [ ] Система обновлена (
sudo apt update && sudo apt upgrade -y) - [ ] Пакет
unattended-upgradesустановлен - [ ] Файл
/etc/apt/apt.conf.d/20auto-upgradesсоздан с правильными значениями - [ ]
apt-config dump | grep APT::Periodicпоказывает"1" - [ ] systemd-таймер активен (
systemctl status apt-daily-upgrade.timer) - [ ] Файл конфигурации
50unattended-upgrades(или52unattended-upgrades-local) настроен - [ ]
sudo unattended-upgrades --dry-run --debugне показывает ошибок - [ ] Email-уведомления настроены (если нужны)
- [ ] Автоматическая перезагрузка настроена (если нужна)
- [ ] Для ноутбуков учтено условие
ConditionACPower
Заключение
Вы настроили автоматические обновления безопасности на Debian. Это важный шаг для обеспечения безопасности сервера, особенно если вы не можете заходить на него каждый день. Главное, что нужно запомнить: по умолчанию обновляются только пакеты из репозитория безопасности (security.debian.org). Если нужно обновлять и другие репозитории, добавьте их в Origins-Pattern. Всегда проверяйте конфигурацию через --dry-run --debug. Для серверов, где критична доступность, настройте уведомления и время перезагрузки. На ноутбуках учитывайте условие ConditionACPower.
Что дальше:
- Настройте Fail2Ban для защиты от брутфорса
- Настройте UFW или Firewalld для ограничения доступа
- Настройте Timeshift для создания снимков перед обновлениями (можно запускать через cron)
- Настройте SSH-доступ для удалённого управления
Связанные статьи: