#!/bin/sh # # This is a shell archive. To extract its contents, # execute this file with /bin/sh to create the file(s): # # chkinstall.sh # # This shell archive created: Wed Feb 16 09:26:18 CST 2000 # echo "Extracting file chkinstall.sh" sed -e 's/^X//' <<\SHAR_EOF > chkinstall.sh X#!/bin/sh X################################################################################ X# X# chkinstall.sh X# ============= X# X# Author: mailto:markus.holzbauer@mch.siemens.de X# X# - check informix installation (owner, group, exist, links) X# - Must be started as "root". X# X# usage: X# ------ X# chkinstall.sh [ -f | -l ] X# -f fixes installation errors: X# owner, group, permissions and not existing X# or wrong (symbolic) links. X# -l only list installed product files. X# X################################################################################ X Xif [ "X$DEBUG" = "X1" ] Xthen X set -x Xfi X Xif [ "X$1" = "X-f" ] Xthen X FIX_IT=1 Xelse X FIX_IT=0 Xfi X Xif [ "X$1" = "X-l" ] Xthen X LIST_IT=1 Xelse X LIST_IT=0 Xfi X Xecho Xecho Xecho "Check Installation Script" Xecho Xecho "This check installation procedure must be run by root (super-user)." Xecho "It will check all files of a selected package in this directory." Xecho X Xecho "chkinstall" > __chkinstall__ Xchown root __chkinstall__ 2> /dev/null XRET=`echo $?` X Xif [ "$RET" -ne "0" ] Xthen X echo X echo "Please rerun this check procedure as super-user." X rm __chkinstall__ X exit 1 Xfi X Xchmod 4755 __chkinstall__ 2> /dev/null XRET=`echo $?` X Xif [ "$RET" -ne "0" ] Xthen X echo X echo "Please rerun this check procedure as super-user." X rm __chkinstall__ X exit 1 Xfi X Xrm __chkinstall__ X Xecho Xecho "Press RETURN to continue," Xecho "or the interrupt key (usually CTRL-C or DEL) to abort." Xecho X Xread I X X# X# Check INFORMIXDIR is set, and we're in it X# X Xif [ "X$INFORMIXDIR" = "X" ] Xthen X echo "INFORMIXDIR is not set." X exit 1 Xfi X Xif [ "$INFORMIXDIR" != `pwd` ] Xthen X echo "INFORMIXDIR and working directory do not match." X echo "INFORMIXDIR is set to $INFORMIXDIR" X echo "Current working directory is `pwd`" X exit 1 Xfi X X# X# Get product names X# Xgrep "^PRODUCT" etc/*files > __products__ XN=1 X Xecho Xecho "Please choose which package you wish to CHECK." Xecho X Xwhile read keywd PRODUCT Xdo X echo "($N) - $PRODUCT" X N=`expr $N + 1` Xdone < __products__ XRET=`echo $?` X X# X# Since above while loop is executed in subshell, need to exit script if X# there were any errors. X# Xif [ "$RET" -ne "0" ] Xthen X rm __products__ X exit 1 Xfi X Xecho Xread P X XNR_PRODUCTS=`ls -1 etc/*files|awk 'END{print NR}'` XFILELIST=`ls etc/*files|awk '{if(NR=='$P'){print}}'` XPRODUCT=`grep "^PRODUCT" $FILELIST|awk '{print substr($0,9)}'` X X# X# Quit if selection is wrong X# Xif [ "$P" -lt "1" -o "$P" -gt "$NR_PRODUCTS" ] Xthen X echo X echo "No packages choosed. Check installation complete." X exit 0 Xfi X X# X# last chance to stop... X# Xecho Xecho "Check installation of '$PRODUCT' ..." Xecho Xecho Xecho "Press RETURN to continue," Xecho "or the interrupt key (usually CTRL-C or DEL) to abort." Xecho X Xread I X X# X# Reset the counters X# XNR_FOUND_ERR=0 Xrm -f __nr_found_err__ X Xif [ "$FIX_IT" -eq "1" ] Xthen X NR_FIXED_ERR=0 X rm -f __nr_fixed_err__ Xfi X X# X# check the files X# Xwhile read NAM OWN GRP MOD FLG FLG2 Xdo X case $NAM in X \#* | "" | " "* | " "* | DISK* ) X continue X ;; X NAME* ) X continue X ;; X PRODUCT* ) X continue X ;; X esac X X if [ "$LIST_IT" -eq "1" ] X then X if [ "X$FLG" != "X" ] X then X case $FLG in X REMOVE ) X continue X ;; X RENAME ) X NAM="$FLG2" X ;; X esac X fi X X if [ ! -d "$NAM" ] X then X ls -l $NAM X fi X X case $FLG in X SHARELIB | LINK | ELINK ) X ls -l $FLG2 X ;; X esac X X continue X fi X X if [ ! -f "$NAM" -a ! -d "$NAM" -a ! -h "$NAM" ] X then X if [ "X$FLG" = "XREMOVE" ] X then X continue X fi X X if [ "X$FLG" = "XRENAME" -a -f "$FLG2" ] X then X NAM="$FLG2" X else X echo "ERROR: file/directory '$NAM' doesn't exist !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X continue X fi X fi X X if [ ! -f "$NAM" -a "X$FLG" = "XLINK" -a -f "$FLG2" ] X then X echo "ERROR: link '$NAM' doesn't exist !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ "$FIX_IT" -eq "1" ] X then X ln $FLG2 $NAM X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X X if [ ! -f "$NAM" -a "X$FLG" = "XELINK" -a -f "$FLG2" ] X then X echo "ERROR: link '$NAM' doesn't exist !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ "$FIX_IT" -eq "1" ] X then X ln $FLG2 $NAM X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X X if [ -f "$NAM" -a "X$FLG" = "XSHARELIB" -a ! -f "$FLG2" ] X then X echo "ERROR: link to shared library '$NAM' doesn't exist !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ -h "$FLG2" ] X then X REAL_NAM=`ls -l $FLG2|awk '{print $NF}'` X X if [ "$REAL_NAM" != "$NAM" ] X then X echo "ERROR: wrong shared library link:" X echo " '$FLG2' points to '$REAL_NAM' !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X fi X fi X X if [ "$FIX_IT" -eq "1" ] X then X # X # See if machine supports symbolic links X # X echo symlink > _linkfile X ln -s _linkfile __linkfile X X if [ "$?" -eq "0" ] X then X SHCMD="ln -s" X else X SHCMD="cp" X fi X X rm -f _linkfile __linkfile X X if [ -h "$FLG2" -a "$REAL_NAM" != "$NAM" ] X then X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X X rm -f $FLG2 X $SHCMD $INFORMIXDIR/$NAM $FLG2 X X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X X FTYPE="" X LS="ls -l" X X if [ -f "$NAM" ] X then X FTYPE="file" X fi X X if [ -d "$NAM" ] X then X FTYPE="dir " X LS="ls -ld" X fi X X if [ -h "$NAM" ] X then X FTYPE="link" X fi X X if [ -f "$NAM" -o -d "$NAM" ] X then X REAL_OWN=`$LS $NAM|awk '{print $3}'` X REAL_GRP=`$LS $NAM|awk '{print $4}'` X REAL_MOD="" X MOD=`echo $MOD|awk '{if((length($1) == 4) && (substr($1,1,1) == 0)){print substr($1,2,3)}else{print $1}}'` X MODE=`$LS $NAM|awk '{print substr($1,2,9)}'` X X case $MODE in X "r--r-----") REAL_MOD=440 ;; X "r--r--r--") REAL_MOD=444 ;; X "r-xr--r--") REAL_MOD=544 ;; X "r-xr-xr-x") REAL_MOD=555 ;; X "rw-r--r--") REAL_MOD=644 ;; X "rw-rw----") REAL_MOD=660 ;; X "rw-rw-r--") REAL_MOD=664 ;; X "rw-rw-rw-") REAL_MOD=666 ;; X "rwxr--r--") REAL_MOD=744 ;; X "rwxr-xr--") REAL_MOD=754 ;; X "rwxr-xr-x") REAL_MOD=755 ;; X "rwxrwx---") REAL_MOD=770 ;; X "rwxrwxr-x") REAL_MOD=775 ;; X "rwxrwxrwx") REAL_MOD=777 ;; X "rwxr-sr--") REAL_MOD=2754 ;; X "rwxr-sr-x") REAL_MOD=2755 ;; X "rwxrwsr-x") REAL_MOD=2775 ;; X "rwsr-xr-x") REAL_MOD=4755 ;; X "rws--s--x") REAL_MOD=6711 ;; X "rwsr-sr--") REAL_MOD=6754 ;; X "rwsr-sr-x") REAL_MOD=6755 ;; X esac X fi X X if [ "$REAL_OWN" != "$OWN" ] X then X if [ "$OWN" != "AAO_O" -a "$OWN" != "DSO_O" ] X then X echo "ERROR: "$FTYPE" '$NAM' has wrong owner:" X echo " should be '"$OWN"' not '"$REAL_OWN"' !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ "$FIX_IT" -eq "1" ] X then X chown $OWN $NAM X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X fi X X if [ "$REAL_GRP" != "$GRP" ] X then X if [ "$GRP" != "AAO_G" -a "$GRP" != "DSO_G" ] X then X echo "ERROR: "$FTYPE" '$NAM' has wrong group:" X echo " should be '"$GRP"' not '"$REAL_GRP"' !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ "$FIX_IT" -eq "1" ] X then X chgrp $GRP $NAM X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X fi X X if [ "$REAL_MOD" != "$MOD" ] X then X echo "ERROR: "$FTYPE" '$NAM' has wrong access rights:" X echo " should be '"$MOD"' not '"$REAL_MOD"' !" X NR_FOUND_ERR=`expr $NR_FOUND_ERR + 1` X echo "$NR_FOUND_ERR" > __nr_found_err__ X X if [ "$FIX_IT" -eq "1" ] X then X chmod $MOD $NAM X echo " .....fixed." X NR_FIXED_ERR=`expr $NR_FIXED_ERR + 1` X echo "$NR_FIXED_ERR" > __nr_fixed_err__ X fi X fi X Xdone < $FILELIST XRET=`echo $?` X Xrm __products__ X X# X# Since above while loop is executed in subshell, need to exit script if X# there were any errors. X# Xif [ "$RET" -ne "0" ] Xthen X exit 1 Xfi X Xif [ "$LIST_IT" -eq "0" ] Xthen X # X # how many errors found ? X # X NR_FOUND_ERR=`cat __nr_found_err__|awk '{print $1}'` X rm __nr_found_err__ X X echo X echo X echo "Nr. of errors found: $NR_FOUND_ERR" X X # X # how many errors fixed ? X # X if [ "$FIX_IT" -eq "1" ] X then X NR_FIXED_ERR=`cat __nr_fixed_err__|awk '{print $1}'` X rm __nr_fixed_err__ X echo "Nr. of errors fixed: $NR_FIXED_ERR" X fi Xfi X Xecho Xecho "Check installation of '$PRODUCT' complete." Xexit 0 SHAR_EOF if [ `wc -c < chkinstall.sh` -ne 8650 ] then echo "Lengths do not match -- Bad Copy of chkinstall.sh" fi echo "Done." exit 0