View scripts which run when installing using RPM file

When using RPM (Redhat Package Manager) for installing a package or application, we just use the following syntax and get the things done!

rpm -ivh {package-file.rpm}

However, never realize what happens in the background.

For those who are curious to know this, they can get the details of the script which execute while using rpm files with an additional switch for the rpm command. You can use the –scripts option/switch while querying a package file or and installed package.

The following are a few example to explain this.

Find scripts which will run when installing a RPM package file

So I am trying to install ntop 3.3 using rpm file ntop-3.3.8-2.el4.rf.x86_64.rpm. The following command will provide me the script which will execute when installing this package file:

[root@gagan ~]# rpm -qp –scripts ntop-3.3.8-2.el4.rf.x86_64.rpm

Output:

preinstall scriptlet (using /bin/sh):
if ! /usr/bin/id ntop &>/dev/null; then
    /usr/sbin/useradd -M -s /sbin/nologin -r ntop &>/dev/null || \
        logger -t ntop/rpm "Unexpected error adding user \"ntop\". Abort installation."
fi
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add ntop
/sbin/ldconfig 2>/dev/null

if /usr/bin/id ntop &>/dev/null; then
    /usr/sbin/usermod -s /sbin/nologin -c "ntop user" -g ntop \
        -d /var/ntop ntop &>/dev/null || \
        logger -t ntop/rpm "Unexpected error modifying user \"ntop\". Abort installation."
fi
preuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ]; then
    /sbin/service ntop stop &>/dev/null || :
    /sbin/chkconfig --del ntop
fi
postuninstall scriptlet (using /bin/sh):
if [ $1 -eq 0 ]; then
    /usr/sbin/userdel ntop || logger -t ntop/rpm "User \"ntop\" could not be deleted."
    /usr/sbin/groupdel ntop || logger -t ntop/rpm "Group \"ntop\" could not be deleted."
fi

if [ $1 -ge 1 ]; then
    /sbin/service ntop condrestart &>/dev/null || :
fi
/sbin/ldconfig 2>/dev/null

Find scripts which ran for installation of a RPM package

You can use the same switch for querying an installed rpm package. Taking an example for postfix-2.2.10-1.RHEL4.2 installed on the system, I will try to find the scripts which executed.

[root@gagan ~]# rpm -q –scripts postfix-2.2.10-1.RHEL4.2

Output:

preinstall scriptlet (using /bin/sh):
# Add user and groups if necessary
/usr/sbin/groupadd -g 90 -r postdrop 2>/dev/null
/usr/sbin/groupadd -g 89 -r postfix 2>/dev/null
/usr/sbin/groupadd -g 12 -r mail 2>/dev/null
/usr/sbin/useradd -d /var/spool/postfix -s /sbin/nologin -g postfix -G mail -M -r -u 89 postfix 2>/dev/null
exit 0
postinstall scriptlet (using /bin/sh):
umask 022

/sbin/chkconfig --add postfix

# upgrade configuration files if necessary
sh /etc/postfix/post-install \
   config_directory=/etc/postfix \
   daemon_directory=/usr/libexec/postfix \
   command_directory=/usr/sbin \
   mail_owner=postfix \
   setgid_group=postdrop \
   manpage_directory=/usr/share/man \
   sample_directory=/usr/share/doc/postfix-2.2.10/samples \
   readme_directory=/usr/share/doc/postfix-2.2.10/README_FILES \
   upgrade-package

/usr/sbin/alternatives --install /usr/sbin/sendmail mta /usr/sbin/sendmail.postfix 30 \
        --slave /usr/bin/mailq mta-mailq /usr/bin/mailq.postfix \
        --slave /usr/bin/newaliases mta-newaliases /usr/bin/newaliases.postfix \
        --slave /etc/pam.d/smtp mta-pam /etc/pam.d/smtp.postfix \
        --slave /usr/bin/rmail mta-rmail /usr/bin/rmail.postfix \
   --slave /usr/lib/sendmail mta-sendmail /usr/lib/sendmail.postfix \
        --slave /usr/share/man/man1/mailq.1.gz mta-mailqman /usr/share/man/man1/mailq.postfix.1.gz \
        --slave /usr/share/man/man1/newaliases.1.gz mta-newaliasesman /usr/share/man/man1/newaliases.postfix.1.gz \
        --slave /usr/share/man/man8/sendmail.8.gz mta-sendmailman /usr/share/man/man1/sendmail.postfix.1.gz \
        --slave /usr/share/man/man5/aliases.5.gz mta-aliasesman /usr/share/man/man5/aliases.postfix.5.gz \
   --initscript postfix
preuninstall scriptlet (using /bin/sh):
umask 022

if [ "$1" = 0 ]; then
    # stop postfix silently, but only if it's running
    /sbin/service postfix stop &>/dev/null
    /sbin/chkconfig --del postfix
    /usr/sbin/alternatives --remove mta /usr/sbin/sendmail.postfix
fi

exit 0
postuninstall scriptlet (using /bin/sh):
if [ "$1" != 0 ]; then
   /sbin/service postfix condrestart 2>&1 > /dev/null
fi
exit 0

Tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *


7 × = 28

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>