Актуален и свеж? Всегда!!! (автоматическое обновление пакетов)

Хорошо пользователям современных linux-десктопов — не успел загрузиться, как сразу же тебе сообщают, что вышли новые обновления. А серверу как быть? Неужели придется регулярно запускать рабочий стол только для того, чтобы узнать — «А были ли какие-то обновления для установленных у меня пакетов?» Не прийдется! Нужно-то ведь всего лишь как обычно «выполнять задание по расписанию«…

Данный совет — не мой. Я его прочел на странице http://www.howtoforge.com/perfect_server_mandriva_2008.0. И воплотил у себя. А теперь вот опишу его тут.

Суть подсказки проста. Нужно в папке /etc/cron.daily создать файл software_update (назвать его Вы можете и по другому) следующего содержания:

#!/bin/bash
urpmi.update updates
urpmi --auto --update --auto-select &> /var/log/auto_update.log

Кроме того, файл этот нужно сделать исполняемым (командой «chmod 700 software_update«). И, естественно, все приведенные выше манипуляции нужно выполнять от имени администратора (root).

Что в конечном итоге это нам дает?  Итак:

  • Размещение вновь созданного файла скрипта в папке /etc/cron.daily автоматически приводит к тому, что планировщик задач cron будет безоговорочно выполнять данный скрипт один раз в сутки (а чаще, думаю, нам и не нужно).
  • Сам скрипт, первым делом командой urpmi.update обновляет источники пакетов, относящиеся к updates (обновлениям).
  • После этого командой urpmi —auto —update —auto-select выполняется непосредственно загрузка и установка новых версий пакетов, если таковые были.
  • Ну а вторая «половина» второй команды скрипта (то есть —  «&> /var/log/auto_update.log«) перенаправляет вывод сообщений в файл протокола /var/log/auto_update.log (чтобы мы впоследствии смогли проконтролировать результат).

Ниже приведен пример файла /var/log/auto_update.log для случая, когда были обновления пакетов:

ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/cups-common-1.3.6-1.4mdv2008.0.i586.rpm 0% of 703k completed, ETA = 1:37:25, speed = 123 0% of 703k completed, ETA = 0:48:49, speed = 127k ....... ....... 99% of 703k completed, ETA = 0:00:01, speed = 7901 100% of 703k completed, ETA = --:--:--, speed = 5111 ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/cups-1.3.6-1.4mdv2008.0.i586.rpm 0% of 2870k completed, ETA = 1:41:48, speed = 481 0% of 2870k completed, ETA = 0:22:55, speed = 4962 ....... ....... 99% of 2870k completed, ETA = 0:00:01, speed = 10784 100% of 2870k completed, ETA = --:--:--, speed = 10177 ftp://fr2.rpmfind.net/linux/Mandrakelinux/official/2008.0/i586/media/main/updates/libcups2-1.3.6-1.4mdv2008.0.i586.rpm 0% of 171k completed, ETA = 0:06:32, speed = 444 ....... ....... 100% of 171k completed, ETA = --:--:--, speed = 29629 100% of 171k completed, ETA = --:--:--, speed = 25153 installing cups-common-1.3.6-1.4mdv2008.0.i586.rpm cups-1.3.6-1.4mdv2008.0.i586.rpm libcups2-1.3.6-1.4mdv2008.0.i586.rpm from /var/cache/urpmi/rpms Preparing... ############################################# 1/3: libcups2 ############################################# 2/3: cups-common ############################################# 3/3: cups #############################################

 

(Единственное, в приведенном выше примере я сократил число строк, сообщающих о ходе загрузки файлов (в процентаз), заменивши их многоточиями).

В случае же, если обновлений не было, наш лог выглядит вообще весьма лаконично:


Packages are up to date