В данной статье мы рассмотрим как запустить команду непосредственно после выполнения ‘apt-get upgrade‘ или ‘apt-get dist-upgrade, т.е. не вручную её выполнить, а запустить автоматически по окончани команды apt-getnnКак подключить скрипт к apt-get команде на моем сервере Ubuntu Linux? Вы можете настраивать команду apt-get с помощью файла конфигурации /etc/apt/apt.conf или добавить конфигурационый файл в определенную директорию /etc/apt/apt.conf.d/nnСледующие две опции позволяют запускать скрипт или выполнять команду до или после dpkg/apt-getn
DPkg::Post-Invoke
Выполнить команду после apt-get, cинтаксис следующий:n
n
# This is a list of shell commands to run after invoking dpkg/apt-get #nDPkg::Post-Invoke {"command";};nDPkg::Post-Invoke {"/path/to/sbin/command";};nDPkg::Post-Invoke {"/path/to/script";}; |
n
n
DPkg::Pre-Invoke
Выполнить команду до apt-get, cинтаксис следующий:n
n
# This is a list of shell commands to run before invoking dpkg/apt-get #nDPkg::Pre-Invoke {"command";};nDPkg::Pre-Invoke {"/path/to/sbin/command";};nDPkg::Pre-Invoke {"/path/to/script";}; |
nЭти команды выполняются по очередности, если команда выполнится с ошибкой то apt прерветсяnnПримерыnnВ этом примере автоматически перемонтируется папка /use/ которая была в readonly, что бы могла выполниться команда apt-get. Отредактируем или создадим следующий файл /etc/apt/apt.conf.d/100updaten
sudo vi /etc/apt/apt.conf.d/100update
Добавить или заменитьn
Pre-Invoke {"/bin/mount -o remount,rw /usr/";};nPost-Invoke {"/bin/mount -o remount,ro /usr/";};
nДругой примерn
Updaten {n Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };n Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };n };
Запуск пользовательского скрипта в apt-get на Debian или Ubuntu Linux.nnНапример я хочу добавить в команду apt-get выполнение скрипта /root/bin/helpern
n
#!/bin/bashn# Name: /root/bin/helpern# ------nfunction update_php(){n local u="apache" # имя нового пользователяn local r="www-data" # имя старого пользователяn local f="/usr/lib/tmpfiles.d/php7.0-fpm.conf" # файл конфигурацииn local wrcmd="/etc/init.d/lighttpd restart" # перезапуск службыn local prcmd="/etc/init.d/php7.0-fpm restart"n # patch itn echo "$0: Patching $f..."n sed -i "s/$r/$u/g" $fn # restart itn $prcmdn $wrcmdn}n# main #nupdate_php |
nСоздадим файл /etc/apt/apt.conf.d/80upgradehook содержимымn
DPkg::Post-Invoke {"/root/bin/helper";};
Теперь при запуске команды sudo apt-get upgrade выполнится скриптn
/root/bin/helper