Связаться по:
vkarabedyants Telegram Viber

Блог о системном администрировании серверов и сайтов

Установка, настройка программного обеспечения Linux, Windows операционных систем

Как запустить команду или скрипт после запуска apt-get

В данной статье мы рассмотрим как запустить команду непосредственно после выполнения ‘apt-get upgrade‘ или ‘apt-get dist-upgrade, т.е. не вручную её выполнить, а запустить автоматически по окончани команды apt-get

Как подключить скрипт к apt-get команде на моем сервере Ubuntu Linux?  Вы можете настраивать команду apt-get с помощью файла конфигурации  /etc/apt/apt.conf или добавить конфигурационый файл в определенную директорию  /etc/apt/apt.conf.d/

Следующие две опции позволяют запускать скрипт или выполнять команду до или после dpkg/apt-get

DPkg::Post-Invoke

Выполнить команду после apt-get, cинтаксис следующий:

# This is a list of shell commands to run after invoking dpkg/apt-get #
DPkg::Post-Invoke {"command";};
DPkg::Post-Invoke {"/path/to/sbin/command";};
DPkg::Post-Invoke {"/path/to/script";};

DPkg::Pre-Invoke

Выполнить команду до apt-get, cинтаксис следующий:

# This is a list of shell commands to run before invoking dpkg/apt-get #
DPkg::Pre-Invoke {"command";};
DPkg::Pre-Invoke {"/path/to/sbin/command";};
DPkg::Pre-Invoke {"/path/to/script";};

Эти команды выполняются по очередности, если команда выполнится с ошибкой то apt прервется

Примеры

В этом примере автоматически перемонтируется папка /use/ которая была в readonly, что бы могла выполниться команда apt-get. Отредактируем или создадим следующий файл  /etc/apt/apt.conf.d/100update

sudo vi /etc/apt/apt.conf.d/100update

Добавить или заменить

Pre-Invoke {"/bin/mount -o remount,rw /usr/";};
Post-Invoke {"/bin/mount -o remount,ro /usr/";};

Другой пример

 Update
  {
     Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; };
     Post-Invoke {"touch /var/lib/apt/post-update-stamp"; };
  };

Запуск пользовательского скрипта в apt-get на Debian или Ubuntu Linux.

Например я хочу добавить в команду apt-get выполнение скрипта /root/bin/helper

#!/bin/bash
# Name: /root/bin/helper
# ------
function update_php(){
	local u="apache"  # имя нового пользователя
	local r="www-data"   # имя старого пользователя
	local f="/usr/lib/tmpfiles.d/php7.0-fpm.conf" # файл конфигурации
	local wrcmd="/etc/init.d/lighttpd restart"    # перезапуск службы
	local prcmd="/etc/init.d/php7.0-fpm restart"
	# patch it
	echo "$0: Patching $f..."
	sed -i "s/$r/$u/g" $f
	# restart it
	$prcmd
	$wrcmd
}
# main #
update_php

Создадим файл  /etc/apt/apt.conf.d/80upgradehook  содержимым

DPkg::Post-Invoke {"/root/bin/helper";};

Теперь при запуске команды  sudo apt-get upgrade выполнится скрипт

/root/bin/helper

apt-get-hook

Оставить комментарий

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.