mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 09:23:03 +01:00
218 lines
4.5 KiB
Bash
218 lines
4.5 KiB
Bash
#!/bin/sh
|
|
|
|
#------------------------------------------------------------------------
|
|
# Prompt for response, store result in Answer
|
|
|
|
Answer=""
|
|
|
|
AskQuestion() {
|
|
Test=$1
|
|
DefaultAns=$2
|
|
echo -n "${1}"
|
|
Answer="$DefaultAns"
|
|
read Answer
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------
|
|
# stop super server if it is running
|
|
# Also will only stop firebird, since that has the init script
|
|
|
|
|
|
stopServerIfRunning() {
|
|
|
|
checkString=`ps -ef | egrep "(fbserver|fbguard)" |grep -v grep`
|
|
|
|
if [ ! -z "$checkString" ]
|
|
then
|
|
if [ -f /sbin/init.d/firebird ]
|
|
then
|
|
/sbin/init.d/firebird stop
|
|
fi
|
|
fi
|
|
}
|
|
|
|
#------------------------------------------------------------------------
|
|
# stop server if it is running
|
|
|
|
|
|
checkIfServerRunning() {
|
|
|
|
|
|
stopServerIfRunning
|
|
|
|
|
|
checkString=`ps -ef | egrep "(fbserver|fbguard)" |grep -v grep`
|
|
|
|
if [ ! -z "$checkString" ]
|
|
then
|
|
echo "An instance of the Firebird SuperServer seems to be running."
|
|
echo "(the fbserver/fbguard process was detected running on your system)"
|
|
echo "Please quit all Firebird applications and then proceed"
|
|
exit -1
|
|
fi
|
|
|
|
|
|
|
|
checkString=`ps -ef | egrep "(fb_inet_server)" |grep -v grep`
|
|
|
|
if [ ! -z "$checkString" ]
|
|
then
|
|
echo "An instance of the Firebird Classic server seems to be running."
|
|
echo "Please quit all interbase applications and then proceed."
|
|
exit 1
|
|
fi
|
|
|
|
|
|
|
|
# Stop lock manager if it is the only thing running.
|
|
|
|
for i in `ps -ef | egrep "fb_lock_mgr" | awk '{print $2}' `
|
|
do
|
|
kill $i
|
|
done
|
|
|
|
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------
|
|
# Run process and check status
|
|
|
|
|
|
runAndCheckExit() {
|
|
Cmd=$*
|
|
|
|
# echo $Cmd
|
|
$Cmd
|
|
|
|
ExitCode=$?
|
|
|
|
if [ $ExitCode -ne 0 ]
|
|
then
|
|
echo "Install aborted: The command $Cmd "
|
|
echo " failed with error code $ExitCode"
|
|
exit $ExitCode
|
|
fi
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------
|
|
# Display message if this is being run interactively.
|
|
|
|
|
|
displayMessage() {
|
|
|
|
msgText=$1
|
|
if [ ! -z "$InteractiveInstall" ]
|
|
then
|
|
echo $msgText
|
|
fi
|
|
}
|
|
|
|
|
|
#------------------------------------------------------------------------
|
|
# Archive any existing prior installed files.
|
|
# The 'cd' stuff is to avoid the "leading '/' removed message from tar.
|
|
# for the same reason the DestFile is specified without the leading "/"
|
|
|
|
|
|
archivePriorInstallSystemFiles() {
|
|
|
|
oldPWD=`pwd`
|
|
archiveFileList=""
|
|
|
|
cd /
|
|
|
|
DestFile=${FBRootDir#/} # strip off leading /
|
|
if [ -e "$DestFile" ]
|
|
then
|
|
echo ""
|
|
echo ""
|
|
echo ""
|
|
echo "--- Warning ----------------------------------------------"
|
|
echo " The installation target directory: $FBRootDir"
|
|
echo " Already contains a prior installation of Firebird."
|
|
echo " This and files found in /usr/include and @libdir@ will be"
|
|
echo " archived in the file : ${ArchiveMainFile}"
|
|
echo ""
|
|
|
|
if [ ! -z "$InteractiveInstall" ]
|
|
then
|
|
AskQuestion "Press return to continue or ^C to abort"
|
|
fi
|
|
|
|
if [ -e $DestFile ]
|
|
then
|
|
archiveFileList="$archiveFileList $DestFile"
|
|
fi
|
|
fi
|
|
|
|
|
|
for i in ibase.h ib_util.h
|
|
do
|
|
DestFile=usr/include/$i
|
|
if [ -e $DestFile ]
|
|
then
|
|
archiveFileList="$archiveFileList $DestFile"
|
|
fi
|
|
done
|
|
|
|
for i in libib_util.so libfbclient.so.1.5.0 libfbclient.so.1 libfbclient.so
|
|
do
|
|
DestFile=usr/lib/$i
|
|
if [ -e $DestFile ]
|
|
then
|
|
archiveFileList="$archiveFileList $DestFile"
|
|
fi
|
|
done
|
|
|
|
if [ ! -z "$archiveFileList" ]
|
|
then
|
|
|
|
displayMessage "Archiving..."
|
|
|
|
runAndCheckExit "tar -cvf $ArchiveMainFile $archiveFileList"
|
|
|
|
|
|
displayMessage "Done."
|
|
displayMessage "Deleting..."
|
|
|
|
for i in $archiveFileList
|
|
do
|
|
rm -rf $i
|
|
done
|
|
|
|
displayMessage "Done."
|
|
|
|
fi
|
|
cd $oldPWD
|
|
|
|
}
|
|
|
|
|
|
|
|
#== Main Pre =================================================================
|
|
|
|
FBRootDir=@prefix@
|
|
FBBin=$FBRootDir/bin
|
|
ArchiveDateTag=`date +"%Y%m%d_%H%M"`
|
|
ArchiveMainFile="${FBRootDir}_${ArchiveDateTag}.tar"
|
|
|
|
# Ok so any of the following packages are a problem
|
|
# these don't work at least in the latest rpm manager, since it
|
|
# has the rpm database locked and it fails.
|
|
|
|
# checkForRPMInstall InterBase
|
|
# checkForRPMInstall FirebirdCS
|
|
# checkForRPMInstall FirebirdSS
|
|
|
|
|
|
checkIfServerRunning
|
|
|
|
|
|
# Failing that we archive any files we find
|
|
|
|
archivePriorInstallSystemFiles
|
|
|