!!! ACHTUNG - evtl. veraltet - ACHTUNG !!!

Diese Seite wurde zuletzt am 9. Juli 2014 um 10:53 Uhr geändert.

Installation

Damit Tactical Ops:Crossfire überhaupt starten kann, benötigt es das Paket „libstdc++5“.

Da das Paket durch keine Abhängigkeit eines anderen Paketes im System „gehalten“ wird, sollte man es auf „hold“ setzen, damit es nach der nächsten Aktualisierung per aptitude nicht wieder verschwindet. Nutzt man zum Sauberhalten des Systems dann noch deborphan (welches seinerseits „apt-get“ direkt verwendet), muss man dieses dann auch gleich zweimal tun:

 aptitude install libstdc++5
 aptitude hold libstdc++5
 echo libstdc++5 hold | dpkg --set-selections

ABER: es wird so in Zukunft auch nicht mehr durch aptitude aktualisiert! (⇒ Handarbeit)

 aptitude update
 aptitude unhold libstdc++5
 aptitude dist-upgrade
 aptitude hold libstdc++5

init-Skript

 #! /bin/sh
 #
 # tocserver     initscript for the tactical ops:crossfire dedicated server
 #               placed in /etc/init.d.
 #
 # Author:       Patrick NEUMANN <patrick@neumannsland.de>.
 #
 # Version:      @(#)tocserver  1.0 18-Feb-2008  patrick@neumannsland.de
 #
 #
 # Deps:         screen, psmisc
 #
 set -e
 PATH="/sbin:/bin:/usr/sbin:/usr/bin"
 DESC="Tactical Ops:Crossfire dedicated Server"
 NAME=startserver.sh
 DAEMON=/opt/toc_dedi_server/TOCrossfire/$NAME
 SCRIPTNAME=/etc/init.d/tocserver
 # Gracefully exit if the package has been removed.
 test -x $DAEMON || exit 0
 #
 #       Function that starts the daemon/service.
 #
 d_start() {
         screen -A -m -d -S tocserver su - tocserver -c "sh $NAME"
 }
 #
 #       Function that stops the daemon/service.
 #
 d_stop() {
   local pid=`screen -list | grep tocserver | awk -F . '{print $1}' | sed -e s/.//`
   if [[|-z "${pid}" ]] ; then
     echo "Lost screen session"
     exit 1
   else
     pid=`pstree -p ${pid} | sed -e 's/^.*sh(//' -e 's/ucc-bin.*$//' -e 's/).*$//'`
     if [[|-z "${pid}" ]] ; then
       echo "Lost tocserver session"
       exit 1
     else
       kill -TERM ${pid}
     fi
   fi 
 }
 #
 #       Function that checks, if the daemon/service is running.
 #
 d_status() {
   local pid=`screen -list | grep tocserver | awk -F . '{print $1}' | sed -e s/.//`
   if [[|-z "${pid}" ]] ; then
     echo "$DESC ist not running (or: lost screen session)!"
     exit 1
   else
     pid=`pstree -p ${pid} | sed -e 's/^.*sh(//' -e 's/ucc-bin.*$//' -e 's/).*$//'`
     if [[|-z "${pid}" ]] ; then
       echo "$DESC is not running (or: lost tocserver session)!"
       exit 1
     else
       echo "$DESC ist running (PID: ${pid})! :-)"
     fi
   fi 
 }
 case "$1" in
   start)
     echo -e "Starting $DESC \c"
     d_start
     echo -e ". \c"
     sleep 1
     echo -e ". \c"
     sleep 1
     echo -e ". \c"
     sleep 1
     echo " done!"
     ;;
   stop)
     echo -e "Stopping $DESC \c"
     d_stop
     echo ". . . done!"
     ;;
   restart)
     echo -e "Stopping $DESC \c"
     d_stop
     echo ". . . and now . . ."
     sleep 1
     echo -e "Starting $DESC \c"
     d_start
     echo -e ". \c"
     sleep 1
     echo -e ". \c"
     sleep 1
     echo -e ". \c"
     sleep 1
     echo " done!"
     ;;
   status)
     d_status
     ;;
   *)
     echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
     exit 1
     ;;
 esac
 exit 0

Damit man nach einem Server-Neustart (sei es auch nur der virtuelle), was äußerst selten vorkommen sollte, nicht vergisst, auch den Dienst neu zu starten, sollte man das init-Skipt am Besten gleich in die Standard-Runlevel mitaufnehmen:

 update-rc.d tocserver defaults