0byte — Автообновление пакетов по списку в debian подобных системах.
Начитавшись постов о том как автоматически обновлять все пакеты в ubuntu, у меня таки возникло желание написать по своему правильный способ обновления пакетов.
Дело в том что я не считаю что даже на десктоп системе пользователю так уж необходимо обновлять абсолютно все пакеты. Лично мне бы хватило обновления только какого то списка пакетов, например браузера, DE и т.д.
Кратко опишем задачу.
Сама программа будет скриптом, который запускается планировщиком с какой то частотой. Скрипт будет обновлять список пакетов. Затем читать из файла список пакетов которые требуется держать в актуальном состоянии. Ну и затем обновлять программы из этого списка.
Иии…. Вот оно!
Сам скрипт, берет в качестве аргумента путь к списку программ. Листинг apldater.sh:
Я выбрал обновлять пакеты по одному а не все сразу не случайно. Я конечно понимаю что нагрузка возрастает, зато больше пакетов обновятся на плохом интернете.
Далее мы записываем в файл список пакетов, чтобы они обновлялись автоматически.
(кто не в курсе эта строка создает файл /etc/pkgs)
И запишем mozilla-firefox в этот файл. Будучи счастливым пользователем ff, я сделал это в первую очередь. :)
Готово. Теперь запишем выполнение нашего скрипта в cron.
У меня скрипт лежит в /root/bin/apldater.sh, поэтому добавляем строку:
Теперь система будет обновлять список пакетов из /etc/pkgs каждый день в 0:00. Частоту обновлений лучше менять в зависимости от частоты обновления пакетов из списка. Т.е если например у вас в списке самый часто обновляемый пакет это ядро, то нет необходимости проверять обновления каждый день, просто потому что с такой частотой его не обновляют.
Дело в том что я не считаю что даже на десктоп системе пользователю так уж необходимо обновлять абсолютно все пакеты. Лично мне бы хватило обновления только какого то списка пакетов, например браузера, DE и т.д.
Кратко опишем задачу.
Сама программа будет скриптом, который запускается планировщиком с какой то частотой. Скрипт будет обновлять список пакетов. Затем читать из файла список пакетов которые требуется держать в актуальном состоянии. Ну и затем обновлять программы из этого списка.
Иии…. Вот оно!
Сам скрипт, берет в качестве аргумента путь к списку программ. Листинг apldater.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash if [ ! -f "$1" ]; then echo "Usage: `basename $0` pkg_list" exit 0 fi update_repo="apt-get update" update_pkg="apt-get -y install" # Сначала обновим листинги пакетов. $update_repo 2>&1 >/dev/null if [ "$?" == "0" ]; then # Если листинги обновились pkgs=$(cat $1) for pkg in $pkgs; do # Распарсим список пакетов по одному $update_pkg $pkg 2>&1 >/dev/null if [ "$?" != "0" ]; then # Пакет не обновился. echo "Cant update $pkg.;(" fi done fi |
Я выбрал обновлять пакеты по одному а не все сразу не случайно. Я конечно понимаю что нагрузка возрастает, зато больше пакетов обновятся на плохом интернете.
Далее мы записываем в файл список пакетов, чтобы они обновлялись автоматически.
# >/etc/pkgs
(кто не в курсе эта строка создает файл /etc/pkgs)
И запишем mozilla-firefox в этот файл. Будучи счастливым пользователем ff, я сделал это в первую очередь. :)
# echo mozilla-firefox >/etc/pkgs
Готово. Теперь запишем выполнение нашего скрипта в cron.
# crontab –e
У меня скрипт лежит в /root/bin/apldater.sh, поэтому добавляем строку:
0 0 * * * /root/bin/apldater.sh /etc/pkgs
Теперь система будет обновлять список пакетов из /etc/pkgs каждый день в 0:00. Частоту обновлений лучше менять в зависимости от частоты обновления пакетов из списка. Т.е если например у вас в списке самый часто обновляемый пакет это ядро, то нет необходимости проверять обновления каждый день, просто потому что с такой частотой его не обновляют.