Simplest Enterprise Continuous Integration Solutions

Saturday, May 18, 2013

Enterprise Linux: Get RPM info built by RPM Maven Plugin

Install a RPM package built by RPM Maven Plugin

# get RPM info
[root@rpm-build-server ~]# rpm -qi qxc-rpm-demo
Name        : qxc-rpm-demo                 Relocations: /opt/qxc
Version     : 1.0                          Vendor: http://www.qxconsultant.com
Release     : 215708                       Build Date: Thu Nov 22 2012 22:47:14 UTC
Install Date: Thu Nov 22 2012 22:56:16 UTC Build Host: rpm-build-server
Group       : qxc/build                    Source RPM: qxc-rpm-demo-1.0-215708.src.rpm
Size        : 48                           License: Academic Free License
Signature   : (none)
Packager    : info@qxconsutlant.com
URL         : http://www.qxconsultant.com
Summary     : qxc-rpm-demo
Description :
This is a sample RPM generated by RPM Maven Plugin

# get RPM package content list info
[root@rpm-build-server ~]# rpm -ql qxc-rpm-demo
/opt/qxc/qxc-rpm-demo/conf
/opt/qxc/qxc-rpm-demo/conf/configuration.properties
/opt/qxc/qxc-rpm-demo/scripts/demo.sh

# get RPM scriptlets info
[root@rpm-build-server ~]# rpm -q --scripts qxc-rpm-demo
preinstall scriptlet (using /bin/sh):
#!/bin/sh
#
# RPM pre Scriptlet Section
#

# do something if necessary

exit 0
postinstall scriptlet (using /bin/sh):
#!/bin/sh
#
# RPM post Scriptlet Section
#
# ----- Initialization ----- #

PACKAGE_NAME=qxc-rpm-demo
BASEDIR=$RPM_INSTALL_PREFIX/$PACKAGE_NAME
SETUP_SH=$BASEDIR/SETUP.sh
SETUP_CSH=$BASEDIR/SETUP.csh
PROFILED_SETUP_SH=/etc/profile.d/SETUP-${PACKAGE_NAME}.sh
PROFILED_SETUP_CSH=/etc/profile.d/SETUP-${PACKAGE_NAME}.csh
# ----- SETUP_SH ----- #
cat <<EOF > $SETUP_SH
#!/bin/sh

export QXCHOME=$BASEDIR
export JAVA_HOME=\`/bin/rpm -q --queryformat '%{INSTPREFIXES}' jdk\`/latest

EOF
# ----- SETUP_CSH ----- #
cat <<EOF > $SETUP_CSH
#!/bin/csh

setenv QXCHOME $BASEDIR
setenv JAVA_HOME  \`/bin/rpm -q --queryformat '%{INSTPREFIXES}' jdk\`/latest

EOF

# make SETUP scripts executable
/bin/chmod a+x $SETUP_SH
/bin/chmod a+x $SETUP_CSH

# Create symbolic link to SETUP scripts
if [ -d /etc/profile.d ]; then
    /bin/ln -sf $SETUP_SH $PROFILED_SETUP_SH
    /bin/ln -sf $SETUP_CSH $PROFILED_SETUP_CSH
fi
preuninstall scriptlet (using /bin/sh):
#!/bin/sh
#
# RPM preun Scriptlet Section
#
# ----- Initialization ----- #
PACKAGE_NAME=qxc-rpm-demo
BASEDIR=$RPM_INSTALL_PREFIX/$PACKAGE_NAME
SETUP_SH=$BASEDIR/SETUP.sh
SETUP_CSH=$BASEDIR/SETUP.csh
PROFILED_SETUP_SH=/etc/profile.d/SETUP-${PACKAGE_NAME}.sh
PROFILED_SETUP_CSH=/etc/profile.d/SETUP-${PACKAGE_NAME}.csh

if [ $1 -lt 1 ]; then
   #
   # Stop the watcher daemon if it is running
   #
   if ! /usr/bin/test `/bin/ps -e | /bin/grep watcher-daemon|wc -l` = 0
   then
      /bin/sh /etc/rc.d/init.d/nuance-wd stop
   fi

   # Remove SETUP* symbolic links
   /bin/rm -f $PROFILED_SETUP_SH
   /bin/rm -f $PROFILED_SETUP_CSH

   # Remove SETUP scripts
   /bin/rm -f $SETUP_SH
   /bin/rm -f $SETUP_CSH
   /bin/rm -rf $BASEDIR
fi

# get RPM changelog info 
[root@rpm-build-server ~]# rpm -q --changelog qxc-rpm-demo
* Thu Nov 22 2012 RPM Builder <info@qxconsutlant.com>
- Initial Spec File

# get installed RPM content list info 
[root@rpm-build-server ~]# find /opt/qxc
/opt/qxc
/opt/qxc/qxc-rpm-demo
/opt/qxc/qxc-rpm-demo/SETUP.sh
/opt/qxc/qxc-rpm-demo/SETUP.csh
/opt/qxc/qxc-rpm-demo/scripts
/opt/qxc/qxc-rpm-demo/scripts/demo.sh
/opt/qxc/qxc-rpm-demo/conf
/opt/qxc/qxc-rpm-demo/conf/configuration.properties

# get symbolic link setup scripts info
[root@rpm-build-server ~]# ls -al /etc/profile.d/SETUP-qxc-rpm-demo*
lrwxrwxrwx   1 root root    31 Nov 22 22:56 SETUP-qxc-rpm-demo.csh -> /opt/qxc/qxc-rpm-demo/SETUP.csh
lrwxrwxrwx   1 root root    30 Nov 22 22:56 SETUP-qxc-rpm-demo.sh -> /opt/qxc/qxc-rpm-demo/SETUP.sh

# uninstall RPM 
[root@rpm-build-server ~]# rpm -e qxc-rpm-demo

# nothing should be left over after uninstalled RPM
[root@rpm-build-server ~]# ls -al /opt/qxc/
total 8
drwxr-xr-x  2 root root 4096 Nov 22 23:07 .
drwxr-xr-x. 6 root root 4096 Nov 22 21:49 ..
[root@rpm-build-server ~]# ls -al /etc/profile.d/SETUP-qxc-rpm-demo*


ls: cannot access /etc/profile.d/SETUP-qxc-rpm-demo*: No such file or directory