#!/bin/bash # # uninstall.sh # # Copyright (C) 2011-2012 Cesnet z.s.p.o # VERSION="2.1" #------------------------------------------------------------------------------- # FUNCTIONS #------------------------------------------------------------------------------- usage() { echo "Usage: `basename $0` [-d <directory>] [-hV]" echo "-d <directory> uninstallation directory (default: /opt)" echo "-h print this help" echo "-V print script version number and exit" echo echo "Example: # ./`basename $0` -d /opt" echo echo "Note: You must be root for running this script." echo " For more information about uninstallation process, see README file (section Uninstallation)." echo exit 0 } version() { echo "`basename ${0}` - current version is $VERSION" exit 0 } err() { echo "FAILED!" cat $err rm -rf $err $backup_dir echo echo "Uninstallation of $package_version package FAILED!!!" exit 1 } err_clean() { echo "FAILED!" echo " -> Reverting changes of warden server package ... OK" rm -rf ${server_path}/* > /dev/null 2>&1 # delete new version cp -R ${backup_dir}/* $server_path # copy old backuped server for file in `ls -1 $bin` do ln -s ${bin}/$file ${local_bin}/$file # create symlinks to /usr/local/bin done cat $err rm -rf $err $backup_dir echo echo "Uninstallation of $package_version package FAILED!!!" exit 1 } root_chck() { if [ $UID -ne 0 ]; then echo "You must be root for running this script!" exit 1 fi } params_chck() { if [ -z $prefix ]; then prefix=/opt echo "Warning: parameter -d <directory> is not set - default uninstallation directory is ${prefix}!" fi } obtain_package_version() { if [ -f $old_package_version_file ]; then package_version=`cat $old_package_version_file` else package_version="unknown" fi } warden_dir_chck() { echo -n "Checking Warden server directory ... " if [ ! -d $server_path ]; then echo "FAILED!" ls $server_path exit 1 else echo "OK" fi } backup() { echo -n "Backing-up Warden server directory ... " mkdir $backup_dir if cp -R ${server_path}/* $backup_dir 2> $err; then echo "OK" else err fi } delete_symlinks() { echo -n "Deleting symlinks from /usr/local/bin ..." for file in `ls -1 $bin` do rm -rf ${local_bin}/$file 2> /dev/null done echo "OK" } uninstall_warden_server() { echo -n "Uninstalling $package_version package ... " cp ${doc}/UNINSTALL $uninstall_file if rm -rf $server_path 2> $err; then echo "OK" else err_clean fi } #------------------------------------------------------------------------------- # MAIN #------------------------------------------------------------------------------- # read input while getopts "d:Vh" options; do case $options in d ) prefix=$OPTARG;; h ) usage;; V ) version;; * ) usage;; esac done # root test root_chck # params test params_chck # create variables [[ $prefix == */ ]] && prefix="${prefix%?}" # remove last char (slash) from prefix dirname=`dirname $0` server_path="${prefix}/warden-server" bin="${server_path}/bin" local_bin="/usr/local/bin" etc="${server_path}/etc" doc="${server_path}/doc" uninstall_file="/tmp/UNINSTALL.warden" old_package_version_file="${etc}/package_version" err="/tmp/warden-err" backup_dir="/tmp/warden-backup" # obtain version of installed warden-server package obtain_package_version echo echo "------------------------- Uninstallation process --------------------------------" # check if $prefix/warden-server directory exist warden_dir_chck # make backup of currently installed warden-server package backup # delete symbolic links delete_symlinks # do uninstallation uninstall_warden_server echo echo "Please follow post-uninstallation steps in $uninstall_file!" echo echo "Uninstallation of $package_version package was SUCCESSFUL!" echo # cleanup section rm -rf $err $backup_dir exit 0