Автообновление на Ubuntu-server 12.04|14.04 LTS

Если вы не включили Автообновление (AutomaticSecurityUpdates) при установке Ubuntu, то это можно легко сделать после.

Для включения автоматического обновления понадобится пакет unattended-upgrades.
Установите его, если он еще не установлен:

sudo apt-get install unattended-upgrades

Посмотреть установлен-ли пакет или нет можно, например, так:

sudo aptitude search unattended

Вывод этой команды может быть таким:

i A unattended-upgrades   - automatic installation of security upgrades

i перед названием пакета говорит о том, что пакет установлен, A – в автоматическом режиме.
Если вместо i будет p - это означает, что пакет не установлен.

Что бы активировать пакет выполните:

sudo dpkg-reconfigure unattended-upgrades

В интерактивном диалоге ответьте YES. Это создаст файл /etc/apt/apt.conf.d/20auto-upgrades со следующим содержанием:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Подробное описание параметров содержится в: /etc/cron.daily/apt

APT::Periodic::Update-Package-Lists "1";

Выполняет "apt-get update" (обновление списка пакетов) автоматически каждые n-дней (0=disabled). В данном случае ежедневно.
Данный параметр дублируется в файле /etc/apt/apt.conf.d/10periodic, который создается при установке ОС. Нужно иметь это в виду, если понадобится отключить обновление списка пакетов.

APT::Periodic::Unattended-Upgrade "1";

Запускает "unattended-upgrade" security upgrade script, а точнее то, что разрешено в файле /etc/apt/apt.conf.d/50unattended-upgrades
каждые n-дней (0=disabled)
Требует установленного пакета "unattended-upgrades"
Пишет log в /var/log/unattended-upgrades

Все скрипты запускает вышеупомянутый /etc/cron.daily/apt, который в свою очередь запускается из /etc/crontab по расписанию. Как правило это происходит в 06.25 ежедневно.

APT::Periodic::RandomSleep

Когда стартует задание apt, оно «спит» случайное количество времени в диапозоне от 0 до значения указанного в параметре RandomSleep в секундах. Значение по умолчанию "1800" секунд или 30 минут. Это сделано для того, что бы разгрузить зеркала серверов обновления. Установить переменную в 0 можно в случае использования локального репозитория. Заметьте, что пока выполняется задание apt другие задания из cron.daily не стартуют.

APT::Periodic::Verbose

Включает более подробный вывод выполнения задания. По умолчанию VERBOSE=0.

Рассмотрим некоторые параметры задающиеся в файле /etc/apt/apt.conf.d/50unattended-upgrades:

Unattended-Upgrade::Package-Blacklist

Если нужно зафиксировать какой-либо пакет, т.е. не обновлять его автоматически, внести нужный пакет в список:
// List of packages to not update
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};

Двойнной слеш "//" служит для комментариев, поэтому что бы не следовало за "//", оно не будет обработано.

Если нужно зафиксировать версию пакета и защитить его от обновлений даже в ручном режиме, то можно воспользоваться одним из способов, например, через dpkg:

sudo echo 'имя_пакета hold' | sudo dpkg --set-selections

Более подробно о том, как разблокировать пакет читайте тут.

Unattended-Upgrade::Automatic-Reboot "true"

Для включения автоперезагрузки после установки обновлений необходимо не только установить параметр Unattended-Upgrade::Automatic-Reboot "true" в файле 50unattended-upgrades, но и удостовериться, что пакет "update-notifier-common" установлен. При минимальной установке ОС пакет не устанавливается по умолчанию. Без него система не перезагрузится и даже не предупредит о необходимости перезагрузки, так как именно он создает симафор /var/run/reboot-required.

В Ubuntu-server 14.04 появился параметр для указания времени автоматической перезагрузки.

//Unattended-Upgrade::Automatic-Reboot-Time "02:00";

// If automatic reboot is enabled and needed, reboot at the specific
// time instead of immediately
// Default: "now"

Если не перезагружать систему автоматически, а так чаще всего и бывает на практике, то периодически перезагружать ее все-таки придется. О чем будет свидетельствовать соответствующая запись при входе в консоль по ssh. Так же не помешает следить за размером свободного места в разделе /boot, который может заполняться старыми версиями ядер. Что бы этого не происходило достаточно включить параметр Unattended-Upgrade::Remove-Unused-Dependencies "true";, описанный ниже.

Unattended-Upgrade::Remove-Unused-Dependencies "true";

Для автоматического удаления пакетов, которые были установлены автоматически для удовлетворения зависимостей и более не нужных, в том числе и старых ядер, включить этот параметр (эквивалент команды apt-get autoremove).
// Do automatic removal of new unused dependencies after the upgrade
// (equivalent to apt-get autoremove)

Unattended-Upgrade::Mail "your@mail.domain";

Настройка позволит unattended-upgrades посылать почтовые сообщения администратору с уточнением какие пакеты требуют обновления или имеют проблемы.

Unattended-Upgrade::MailOnlyOnError "true";

Отправлять почту только при возниконовении проблем:
// Set this value to "true" to get emails only on errors. Default
// is to always send a mail if Unattended-Upgrade::Mail is set

Рассмотрим оставшиеся параметры в файле /etc/apt/apt.conf.d/10periodic:

APT::Periodic::Download-Upgradeable-Packages "0";

Выполнять "apt-get upgrade --download-only" каждые n-дней (0=disabled) - только скачивать пакеты, но не устанавливать их.

APT::Periodic::AutocleanInterval "0";

Выполнять "apt-get autoclean" каждые n-дней (0=disabled).
Удаляются неактуальные версии ранее скаченных пакетов из локального хранилища /var/cache/apt/archives/. Полезно для освобождения свободного места.

Например:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Настройки, приведенные выше, обновляют список пакетов, загружают и устанавливают доступные обновления каждый день. Локальный архив загрузок чистится каждую неделю.

Если установлен rkhunter

Если установлен rkhunter, то после каждого обновления он может срабатывать. Что бы включить автообновление базы, т.е. выполнение rkhunter --propupdate после каждого запуска dpkg включите параметр APT_AUTOGEN в файле /etc/default/rkhunter:

# Set this to yes to enable automatic database updates
# (default: false)
APT_AUTOGEN="true"

После этого автоматически будет срабатывать скрипт /etc/apt/apt.conf.d/90rkhunter следующего содержания:

// Makes sure that rkhunter file properties database is updated after each remove or install only APT_AUTOGEN is enabled
DPkg::Post-Invoke { "if [ -x /usr/bin/rkhunter ] && grep -qiE '^APT_AUTOGEN=.?(true|yes)' /etc/default/rkhunter; then /usr/share/rkhunter/scripts/rkhupd.sh; fi"; };

Если rkhunter устанавливался из тарбола и указанный файл не был автоматически создан при установке, создайте его и поместите следующее:

DPkg::Post-Invoke { "if [ -x /usr/bin/rkhunter ]; then /usr/bin/rkhunter --propupd; fi"; };

.

Метки: . Закладка Постоянная ссылка.

Один комментарий к "Автообновление на Ubuntu-server 12.04|14.04 LTS"

  1. Влад пишет:

    Здравствуйте! Что нужно сделать, чтоб обновления не устанавливались автоматом, только в ручную?

Добавить комментарий

Ваш e-mail не будет опубликован.

*