Как настроить автоматические обновления в Debian Squeeze
Версия 1.0
Автор: Falko Timme
Следите за мной в Twitter
Введение
Это руководство показывает, как настроить систему Debian Squeeze так, чтобы обновления пакетов устанавливалиcь автоматически без вмешательства пользователя. Кроме того, описано, как получать ежедневные уведомления по электронной почте о доступных обновлениях.
Внимание: не даётся гарантий, что инструкция сработает в вашей среде — всегда проверяйте на тестовой системе.
1 Настройка системы для unattended upgrades
Чтобы система устанавливала обновления автоматически, нужно установить пакет unattended-upgrades. Рекомендуется также установить средство отправки почты /usr/bin/mail, например bsd-mailx, если вы хотите получать уведомления по e‑mail:
apt-get install unattended-upgrades bsd-mailxДалее настройте пакет unattended-upgrades, изменив файл /etc/apt/apt.conf.d/50unattended-upgrades:
vi /etc/apt/apt.conf.d/50unattended-upgradesОбычно конфигурация по умолчанию подходит; при необходимости измените параметры (в файле есть поясняющие комментарии). Например, можно указать источники обновлений (по умолчанию: stable и security), добавить пакеты в чёрный список, включить отправку почты при ошибках, удалить неиспользуемые зависимости после обновления или настроить автоматический перезапуск системы, если это требуется.
// Automatically upgrade packages from these (origin, archive) pairs
Unattended-Upgrade::Allowed-Origins {
"${distro_id} stable";
"${distro_id} ${distro_codename}-security";
// "${distro_id} ${distro_codename}-updates";
// "${distro_id} ${distro_codename}-proposed-updates";
};
// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
// Send email to this address for problems or packages upgrades
// If empty or unset then no email is sent, make sure that you
// have a working mail setup on your system. The package 'mailx'
// must be installed or anything that provides /usr/bin/mail.
//Unattended-Upgrade::Mail "root@localhost";
// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)
//Unattended-Upgrade::Remove-Unused-Dependencies "false";
// Automatically reboot *WITHOUT CONFIRMATION* if a
// the file /var/run/reboot-required is found after the upgrade
//Unattended-Upgrade::Automatic-Reboot "false";
// Use apt bandwidth limit feature, this example limits the download
// speed to 70kb/sec
//Acquire::http::Dl-Limit "70";Далее создайте файл /etc/apt/apt.conf.d/02periodic, чтобы включить периодические обновления (в файле также есть комментарии):
vi /etc/apt/apt.conf.d/02periodic// Enable the update/upgrade script (0=disable)
APT::Periodic::Enable "1";
// Do "apt-get update" automatically every n-days (0=disable)
APT::Periodic::Update-Package-Lists "1";
// Do "apt-get upgrade --download-only" every n-days (0=disable)
APT::Periodic::Download-Upgradeable-Packages "1";
// Run the "unattended-upgrade" security upgrade script
// every n-days (0=disabled)
// Requires the package "unattended-upgrades" and will write
// a log in /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";
// Do "apt-get autoclean" every n-days (0=disable)
APT::Periodic::AutocleanInterval "7";После этого unattended upgrades будут запускаться раз в сутки через cron-скрипт /etc/cron.daily/apt. Скрипт пишет лог в /var/log/unattended-upgrades/unattended-upgrades.log.
Пример записей в логе после успешного обновления:
2011-07-13 16:49:30,878 INFO Initial blacklisted packages:
2011-07-13 16:49:30,880 INFO Starting unattended upgrades script
2011-07-13 16:49:30,880 INFO Allowed origins are: ["('Debian', 'stable')", "('Debian', 'squeeze-security')"]
2011-07-13 16:50:05,222 INFO Packages that are upgraded: apt apt-listchanges apt-utils base-files bind9-host
console-setup dnsutils dpkg e2fslibs e2fsprogs host isc-dhcp-client isc-dhcp-common keyboard-configuration
klibc-utils libbind9-60 libcomerr2 libdns69 libgssapi-krb5-2 libgssrpc4 libisc62 libisccc60 libisccfg62
libk5crypto3 libkadm5clnt-mit7 libkadm5srv-mit7 libkdb5-4 libklibc libkrb5-3 libkrb5support0 libldap-2.4-2
liblwres60 libperl5.10 libruby1.8 libss2 libxml2 linux-base linux-image-2.6.32-5-amd64 login openssl passwd
perl perl-base perl-modules python python-apt python-apt-common python-minimal tzdata
2011-07-13 16:50:05,225 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2011-07-13_16:50:05.224836.log'
2011-07-13 16:51:51,290 INFO All upgrades installed2 Настройка уведомлений об обновлениях (apticron)
Пакет apticron полезен тем, что рассылает уведомления о доступных обновлениях и включает список изменений для каждого пакета.
Установка apticron:
apt-get install apticronКонфигурация в /etc/apticron/apticron.conf — поменяйте директиву EMAIL и укажите одну или несколько почтовых адресов (через пробел):
vi /etc/apticron/apticron.conf[...]
# set EMAIL to a space separated list of addresses which will be notified of
# impending updates
#
EMAIL="root@localhost [email protected]"
[...]По умолчанию остальные параметры подходят для большинства случаев.
Контрольные точки и логи
- Лог unattended-upgrades: /var/log/unattended-upgrades/unattended-upgrades.log
- Дополнительные логи dpkg: путь в сообщении лога (см. пример выше)
- Проверить, что cron.daily выполняется: systemctl status cron (или /etc/init.d/cron для старых систем)
Быстрый чеклист (мини-методология)
- На тестовой машине: выполнить apt-get update && apt-get upgrade вручную.
- Установить unattended-upgrades и bsd-mailx.
- Отредактировать /etc/apt/apt.conf.d/50unattended-upgrades по потребностям.
- Создать /etc/apt/apt.conf.d/02periodic с нужными интервалами.
- Установить apticron и задать EMAIL.
- Проверить отправку почты (mail или лог MTA).
- Проверить логи и убедиться, что обновления применяются корректно.
Когда это не сработает — распространённые причины и отладка
- Нет рабочей конфигурации MTA или отсутствует /usr/bin/mail: проверяйте bsd-mailx/ssmtp/postfix.
- Права или SELinux/AppArmor блокируют выполнение скриптов или запись в логи.
- Конфликты зависимостей требуют ручного вмешательства: unattended-upgrades не сможет автоматически разрешить все конфликты.
- Нестабильные сторонние репозитории могут ломать автоматический процесс — исключайте их из Allowed-Origins.
Советы по отладке:
- Запустите unattended-upgrades вручную с повышенной детализацией.
- Просмотрите /var/log/unattended-upgrades/*.
- Убедитесь, что apt-get update выполняется успешно в /etc/cron.daily/apt.
Риски и меры предосторожности
- Автоматические обновления могут привести к изменению конфигураций или перезапуску сервисов. Рекомендуется тестировать обновления на стенде.
- Для критичных серверов рассмотрите стратегию staged rollout: сначала тестовый островок, затем non-critical, затем production.
- Всегда храните резервные копии конфигураций и план отката.
Миграция и совместимость
Debian Squeeze — устаревшая версия. Для долгосрочной поддержки рассматривайте обновление до поддерживаемой ветки Debian. Перед миграцией:
- Проверьте совместимость приложений и пакетов.
- Сделайте полный бэкап.
- Выполните тестовое обновление на копии системы.
Чеклист по ролям
- Системный администратор: установить пакеты, настроить /etc/apt/…, проверить логи и мониторинг.
- Операции/DevOps: настроить отправку почты и интеграцию с системой оповещений.
- Разработчики: уведомить команду о возможных изменениях и тестировать приложение после обновлений.
Дерево принятия решения (Mermaid)
flowchart TD
A[Нужны автоматические обновления?] -->|Да| B{Критичный сервер?}
A -->|Нет| Z[Не включать unattended-upgrades]
B -->|Да| C[Включить только security и тестировать]
B -->|Нет| D[Включить full unattended-upgrades]
C --> E[Настроить уведомления и откат]
D --> EКритерии приёмки
- Скрипт unattended-upgrades запускается ежедневно.
- Файл /var/log/unattended-upgrades/unattended-upgrades.log обновляется после запуска.
- При включённой отправке почты приходят уведомления на указанные адреса.
- Система корректно загружает пакеты и не оставляет блокировок apt.
Краткое резюме
- Установите unattended-upgrades и bsd-mailx для автоматической установки и оповещений.
- Настройте /etc/apt/apt.conf.d/50unattended-upgrades и /etc/apt/apt.conf.d/02periodic.
- Для уведомлений об ожидающих обновлениях используйте apticron и укажите EMAIL.
- Тестируйте и имейте план отката для критичных систем.
Полезная ссылка
- Debian: http://www.debian.org/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента