**!!! 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
cd
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
RedOrchestra-Benutzer anlegen:
addgroup roserver
adduser --ingroup roserver --home 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 .
#
# 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