Linux RPM: View Script That Run When You Install RPM Files

last updated in Categories , ,

All rpm packages can run scripts after a package is added or removed. How do I view pre/post install and uninstall rpm file scripts under rpm based Linux distributions?

The option –scripts to rpm command displays the package specific scriptlet(s) that are used as part of the installation and uninstallation processes. Use the following command line option to view rpm file scripts for .rpm file:

rpm -qp --scripts filename.rpm

For example, to list all scripts for memcached-1.2.8-1.el5.x86_64.rpm, enter:
$ rpm -qp --scripts memcached-1.2.8-1.el5.x86_64.rpm
Sample outputs:

preinstall scriptlet (using /bin/sh):
getent group memcached >/dev/null || groupadd -r memcached
getent passwd memcached >/dev/null || \
useradd -r -g memcached -d /var/run/memcached \
    -s /sbin/nologin -c "Memcached daemon" memcached
exit 0
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add memcached
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    /sbin/service memcached stop > /dev/null 2>&1
    /sbin/chkconfig --del memcached
fi
exit 0
postuninstall scriptlet (using /bin/sh):
if [ "$1" -ge 1 ]; then
    /sbin/service memcached condrestart > /dev/null 2>&1
fi
exit 0

To view scripts for installed packages, enter:
# rpm -q --scripts packageName
# rpm -q --scripts httpd

Sample outputs:

preinstall scriptlet (using /bin/sh):
getent group memcached >/dev/null || groupadd -r memcached
getent passwd memcached >/dev/null || \
useradd -r -g memcached -d /var/run/memcached \
    -s /sbin/nologin -c "Memcached daemon" memcached
exit 0
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add memcached
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    /sbin/service memcached stop > /dev/null 2>&1
    /sbin/chkconfig --del memcached
fi
exit 0
postuninstall scriptlet (using /bin/sh):
if [ "$1" -ge 1 ]; then
    /sbin/service memcached condrestart > /dev/null 2>&1
fi
exit 0
[root@txvip1 tmp]# rpm -q --scripts httpd
preinstall scriptlet (using /bin/sh):
# Add the "apache" user
/usr/sbin/useradd -c "Apache" -u 48 \
	-s /sbin/nologin -r -d /var/www apache 2> /dev/null || :
postinstall scriptlet (using /bin/sh):
# Register the httpd service
/sbin/chkconfig --add httpd
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
	/sbin/service httpd stop > /dev/null 2>&1
	/sbin/chkconfig --del httpd
fi

See also:

man rpm

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.