run custom command after 'apt-get upgrade' or 'apt-get dist-upgrade' on a Debian or Ubuntu Linux based system? How do I hook a script to apt-get command on my Ubuntu Linux server?
You can configure the apt-get command using /etc/apt/apt.conf file or place configuration in a special directory at /etc/apt/apt.conf.d/. The following two options allows you to run shell commands or script before/after invoking dpkg/apt-get tools:
You can configure the apt-get command using /etc/apt/apt.conf file or place configuration in a special directory at /etc/apt/apt.conf.d/. The following two options allows you to run shell commands or script before/after invoking dpkg/apt-get tools:
DPkg::Post-Invoke
The syntax is:
# 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
The syntax is:
# 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";};
Like options this must be specified in list notation. The commands are invoked in order using /bin/sh; should any fail APT will abort.
Examples
In this example auto re-mounting of a readonly /use/ folder so that apt-get will work properly. Edit or create a file called /etc/apt/apt.conf.d/100update:
Append/edit as follows:
$ sudo vi /etc/apt/apt.conf.d/100update
Append/edit as follows:
Pre-Invoke {"/bin/mount -o remount,rw /usr/";}; Post-Invoke {"/bin/mount -o remount,ro /usr/";};
Another example:
Update { Pre-Invoke {"touch /var/lib/apt/pre-update-stamp"; }; Post-Invoke {"touch /var/lib/apt/post-update-stamp"; }; };
Running or hooking a custom script to apt-get on a Debian or Ubuntu Linux server
In this example I want to run the following script (/root/bin/php7helper) so that I can patch config file upon running apt-get command:
#!/bin/bash # Name: /root/bin/php7helper # Purpose: A shell script to patch php 7 fpm on Ubuntu serer # Author: Vivek Gite <www.cyberciti.biz> under GPL version 2+ # ------ function update_php7(){ local u="cyberciti" # new user name local r="www-data" # old user name local f="/usr/lib/tmpfiles.d/php7.0-fpm.conf" # config file local wrcmd="/etc/init.d/lighttpd restart" # restart services 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_php7
Create a file called /etc/apt/apt.conf.d/80upgradehook:
Sample outputs:
$ cat /etc/apt/apt.conf.d/80upgradehook
Sample outputs:
DPkg::Post-Invoke {"/root/bin/php7helper";};
Now simply run the apt-get upgrade command and the script /root/bin/php7helper will get executed:
Sample outputs:
$ sudo apt-get upgrade
Sample outputs:
No comments :
Post a Comment