Inhaltsverzeichnis

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

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

Pre-Installation

Damit RedOrchestra überhaupt starten kann, benötigt es das Paket „libc6-i386“.

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 libc6-i386
 aptitude **hold** libc6-i386
 echo libc6-i386 **hold** | dpkg --set-selections

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

 aptitude update
 aptitude **unhold** libc6-i386
 aptitude dist-upgrade
 aptitude **hold** libc6-i386

Installation

Steam-Server-Client für Linux besorgen:

 mkdir <IrgendEinVerzeichnis>
 cd <InDasSoebenAngelegteVerzeichnis>
 wget http://storefront.steampowered.com/download/hldsupdatetool.bin
 chmod u+x hldsupdatetool.bin
 ./hldsupdatetool.bin

RedOrchestra installieren (bzw. aktualisieren):

 ./steam -command update -verify_all -game redorchestra -dir <DasSoebenAngelegteVerzeichnis>

RedOrchestra-Benutzer anlegen:

 addgroup roserver
 adduser --ingroup roserver --home <DasSoebenAngelegteVerzeichnis> roserver

Mit dem unten stehenden init-Skript kann man den Server nun bequem starten und stoppen.

init-Skript

 #! /bin/sh
 #
 # roserver     initscript for the red orchestra dedicated server
 #               placed in /etc/init.d.
 #
 # Author:       Patrick NEUMANN <patrick@neumannsland.de>.
 #
 # Version:      @(#)roserver  1.0 18-Feb-2008  patrick@neumannsland.de
 #
 #
 # Deps:         screen, psmisc
 #
 set -e
 PATH="/sbin:/bin:/usr/sbin:/usr/bin"
 DESC="RedOrchestra dedicated Server"
 NAME=startserver.sh
 DAEMON=/opt/ro_server/$NAME
 SCRIPTNAME=/etc/init.d/roserver
 # 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 roserver su - roserver -c "sh $NAME"
 }
 #
 #       Function that stops the daemon/service.
 #
 d_stop() {
   local pid=`screen -list | grep roserver | 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 roserver 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 roserver | 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 roserver 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 roserver defaults