PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alien vs. Predator 2 ded. Server


mdjoadb
12.06.07, 15:15
Hallo zusammen,
ich bin jetzt schon seit Wochen damit beschaeftigt einen "Alien vs. Predator 2" Linux Server zum laufen zu bekommen. Aber dies will mir einfach nicht gelingen.
Nach dem ich jetzt schon jede Menge Dinge ausprobiert habe, moechte mir einfach nichts mehr einfallen, darum hoffe ich verzweifelt darauf hier Hilfe zu finden.

Hier ein paar Informationen zu meinem System, bzw. Fehlermeldungen:

#uname -a
Linux Debian-40-etch-64-LAMP 2.6.18-4-amd64 #1 SMP Mon Mar 26 11:36:53 CEST 2007 x86_64 GNU/Linux



#./avp2linux
./avp2linux: relocation error: ./avp2linux: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference



//test.sh
export LD_ASSUME_KERNEL=2.4.0
sh avp2linux



#./test.sh
sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory



#ldd avp2linux
linux-gate.so.1 => (0xffffe000)
libpthread.so.0 => /lib32/libpthread.so.0 (0xf7ed8000)
libstdc++-libc6.2-2.so.3 => /usr/lib32/libstdc++-libc6.2-2.so.3 (0xf7e97000)
libm.so.6 => /lib32/libm.so.6 (0xf7e73000)
libc.so.6 => /lib32/libc.so.6 (0xf7d47000)
/lib/ld-linux.so.2 (0xf7ef3000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf7d3c000)



#strace ./avp2linux
execve("./avp2linux", ["./avp2linux"], [/* 16 vars */]) = 0
[ Process PID=25831 runs in 32 bit mode. ]
uname({sys="Linux", node="Debian-40-etch-64-LAMP", ...}) = 0
brk(0) = 0x8614000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7f1f000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(0x3, 0xffe432d8) = 0
mmap2(NULL, 26062, PROT_READ, MAP_PRIVATE, 3, 0) = 0xfffffffff7f18000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib32/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0|G\ 0\000"..., 512) = 512
fstat64(0x3, 0xffe43354) = 0
mmap2(NULL, 66008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7f07000
mmap2(0xf7f14000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd) = 0xfffffffff7f14000
mmap2(0xf7f16000, 4568, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7f16000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib32/libstdc++-libc6.2-2.so.3", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20 0\205"..., 512) = 512
fstat64(0x3, 0xffe43338) = 0
mmap2(NULL, 265696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7ec6000
mmap2(0xf7efc000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36) = 0xfffffffff7efc000
mmap2(0xf7f05000, 7648, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7f05000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib32/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000 4\0\000"..., 512) = 512
fstat64(0x3, 0xffe4331c) = 0
mmap2(NULL, 143488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7ea2000
mmap2(0xf7ec4000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x21) = 0xfffffffff7ec4000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib32/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0zO\ 1\000"..., 512) = 512
fstat64(0x3, 0xffe43300) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7ea1000
mmap2(NULL, 1222812, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7d76000
mmap2(0xf7e97000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x120) = 0xfffffffff7e97000
mmap2(0xf7e9e000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7e9e000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib32/libgcc_s.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\24 0\30"..., 512) = 512
fstat64(0x3, 0xffe431c4) = 0
mmap2(NULL, 43524, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xfffffffff7d6b000
mmap2(0xf7d75000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9) = 0xfffffffff7d75000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff7d6a000
mprotect(0xf7e97000, 20480, PROT_READ) = 0
writev(2, [{umovestr: Input/output error
0xbffe43e80, 12749861241}, {umovestr: Input/output error
0x10f7f3706a, 12749861245}, {umovestr: Input/output error
0xbffe43e80, 12749861236}, {umovestr: Input/output error
0x56ffe435a0, 4159925198}, {"", 8454893961}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}, {NULL, 0}], 10./avp2linux: relocation error: ./avp2linux: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
) = 131
exit_group(127) = ?
Process 25831 detached


Vielen lieben Dank schonmal.
Sollten noch weitere Infos gebraucht werden sagt bescheid.
Schoenen Gruss: mdj.

Fisch.666
12.06.07, 22:19
Hi!

Ersteinmal ein Lob für die masse an Infos, die Du hier geposted hast. So kann man gleich richtig weiterhelfen und muss nicht erst groß rumfragen... :)

Installier mal die Pakete hier:

apt-get install libc6 libc6-i386 ia32-libs

und probier dann mal ob der Server richtig startet.

mdjoadb
13.06.07, 00:14
Hi, das hatte ich auch leider schon ausprobiert.


#apt-get install libc6 libc6-i386 ia32-libs
Reading package lists... Done
Building dependency tree... Done
libc6 is already the newest version.
libc6-i386 is already the newest version.
ia32-libs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 13 not upgraded.


Wenn ich raten muesste wuerde ich sagen mein Problem hat dennoch etwas mit einer Library zu tun, ob das jetzt durch eine zu neue Version verursacht wird, oder aber durch eine fehlende aeltere, das mag ich nicht zu sagen.

Fisch.666
13.06.07, 11:27
Mhhh, sehr sehr komisch. Die libdl.so.2 ist nur in den beiden Paketen enthalten:

http://packages.debian.org/cgi-bin/search_contents.pl?word=libdl.so.2&searchmode=searchfiles&case=insensitive&version=stable&arch=amd64

bzw. auch im libc6-dbg welches aber denke ich mal nicht installiert werden muss. Hast Du mal die libdl.so und den Symlink libdl.so.2 ins AVP2 Verzeichniss kopiert und im Skript mit LD_Preload im Skript geladen?

mdjoadb
14.06.07, 20:16
Danke fuer den Tipp, habe es mal versucht. Hat leider nicht geholfen. :o/
Ich bekomme jetzt nachdem ich nochmal etwas an den Libraries geaendert habe und strace mit dem AvP2 Server gestartet habe folgende Meldung innerhalb des Outputs:


access("/lib32/libpthread.so.0", F_OK) = -1 ENOENT (No such file or directory)


Dabei ist die Datei vorhanden.
Ich bin so ziemlich ratlos, habe vorhin nochmal Google um eine Antwort bemueht, allerdings finde ich lediglich alte Foreneintraege bei denen die Benutzer aehnliche Probleme haben wie ich, nur gibt es dort auch keine Loesungsansaetze.
Hin und wieder schreibt nur jemand, dass er ohne jegliche Probleme einen AvP2 Linux Server unter Debian / Redhat / Gentoo sonstetwas zum Laufen bekommen hat. *seufz*

Fisch.666
14.06.07, 23:35
Hi!

Mhhh, dann kann ich Dir leider so auch nicht mehr weiterhelfen. Ich werd aber mal versuchsweiße nen AvP2 Server auf meinem AMD64 Debian Server installieren, vielleicht hab ich dann noch ne Idee... :)

kratz00
15.06.07, 14:52
Probier mal folgendes aus: http://kratz00.org/index.php?title=AvP2

Hab da mal schnell was zusammen gebastelt, fuer mich hat es funktioniert, vielleicht tut es das auch fuer dich.

mdjoadb
15.06.07, 16:47
kratz00, ich danke dir. Es funktioniert *freu* Vielen Dank. :)

Hab mir dazu mal ein kleines Startscript geschrieben, was auch recht gut funktioniert.
Allerdings gibt es da noch ein Problemchen; der Output vom AvP2Server kommt nicht in meine Logdatei,
sondern landet auf dem Screen-Terminal. Koennte mir da vielleicht nochmal jemand einen Tipp geben?


#!/bin/sh
start=`date '+%H:%M on %d/%m/%y'`
if [ "$USER" != "avp2serv" ]; then
echo -e "\033[1;34mFalscher Benutzer!!\033[0m";
exit 127
else
case $1 in
start)
cd /
echo -e "\n-----------------------------------------------------------------\n" >> /home/avp2serv/avp2.log
echo -e "--- Alien vs. Predator 2 - Server started @ $start ---\n" >> /home/avp2serv/avp2.log
screen -d -m -S Nightclub ./home/avp2serv/avp2/avp2Serv/startAvP2ded nightclub.txt >> /home/avp2serv/avp2.log 2>/dev/null
exit 0
;;
stop)
screen -S Nightclub -X quit
exit 0
;;
restart)
$0 stop
$0 start
exit 0
;;
*)
echo -e "Usage: $0 [\033[1;33mstart\033[0m|\033[1;33mstop\033[0m|\033[1;33mrestart\033[0m]"
exit 0
;;
esac
fi



Vielen Dank nochmal.

Fisch.666
17.06.07, 19:04
Hi!

Mhhh, ich hab gerade keine Zeit das mit dem Skript genau anzuschauen aber auf die schnelle sehe ich dass Du die Option:

d

bei screen benutzt. Damit wird der Prozess ja gleich in den Hintergrund geschickt und deswegen kann ja auch nichts mitgeloggt werden. Schau mal unter "man screen", gibts da nicht ne Option mit der man den Screen mitloggen kann?

mdjoadb
18.06.07, 01:38
Nun das sollte ja auch Sinn der Sache sein, dass der Prozess im Hintergrund ausgefuehrt wird, damit der nicht beendet wird, sobald ich mich per SSH auslogge. Wenn ich lediglich ein "&" hinter das Programm setze, um diesen so im Hintergrund laufen zu lassen, wird leider auch nichts bis auf die Trennzeichen und das Datum in meine Logdatei geschrieben. Starte ich den Prozess im Vordergrund funktioniert die Umleitung in die Datei. Habe mir die Manpage von Screen und ein paar HowTo's dazu schon angesehen, ich finde aber keine Moeglichkeit die Ausgabe in eine Datei umzuleiten.

Fisch.666
18.06.07, 09:20
Hi!

Klar dass das der Sinn der Sache sein soll, nur bringt Dir das hier:

>> /home/avp2serv/avp2.log 2>/dev/null

nichts wenn Du den Screen gleich in den Hintergrund schickst und der Screen keine Ausgabe erzeugt.

Zum Logging von Screen hab ich jetzt das hier gefunden:

http://web.mit.edu/gnu/doc/html/screen_17.html

Ich hab hier gerade keine Möglichkeit dass zu testen, denke aber mal das sollte schon funktionieren. :)

mdjoadb
18.06.07, 17:03
Vielen Dank. Werde ich direkt mal ausprobieren, nur komisch das ich das nicht in auf der Manpage finden konnte.

Edit: Mit dem Befehl "screen -L" kann man den Inhalt nach screenlog.0 loggen lassen, allerdings lediglich in das aktuelle Verzeichnis "/" und das kann ich nicht aendern. Wie es aussieht muss ich dem Benutzer wohl Schreibrechte auf die Datei "/screenlog.0" geben, was mir eigentlich garnicht gefaellt.

Edit²: Danke nochmal, ich hab es hinbekommen. Auch wenn etwas umstaendlich durch Umleitung in 2 Dateien.

Fisch.666
18.06.07, 18:24
Hi!

Kein Problem. :)

Gibt halt teilweiße Manpages die nicht immer komplett sind bzw. nicht aktuell gehalten werden.

mdjoadb
23.06.07, 10:32
Falls es noch jemanden interessieren sollte, das Startscript sieht nun so aus, um das Problem mit dem Logoutput von Screen zu umgehen:


#!/bin/sh
START=`date '+%H:%M on %d/%m/%y'`
PROC="tail"
LOGDIR="/home/avp2serv/BACKUP"
PIDFILE="$LOGDIR/tail.pid"
if [ "$USER" != "avp2serv" ]; then
echo -e "\033[1;34mFalscher Benutzer. Umloggen!\033[0m";
exit 127
else
case $1 in
pubstart)
SRVTAG="Nightclub"
SRVDATA="nightclub.txt"
echo -e "\n-----------------------------------------------------------------\n" >> /home/avp2serv/avp2.log
echo -e "------ AvP2 - PUBLIC -- Server started @ $START ------\n" >> /home/avp2serv/avp2.log
if [ -f $PIDFILE ]; then
VAL=`pidof $PROC`
for l in $VAL; do
if [ "`cat $PIDFILE`" == "$l" ]; then
echo -e "Tail is already running. (PID `pidof $PROC`)" >> /home/avp2serv/avp2.log
exit 1
fi
done

if [ -f $PIDFILE ]; then
rm -f $PIDFILE
fi
fi

if [ ! -z "`pidof -s $PROC`" ];then
echo -e "No pidfile, but running (PID `pidof $PROC`)" >> /home/avp2serv/avp2.log
exit 1
fi

cd $LOGDIR
screen -L -d -m -S $SRVTAG .././avp2/avp2Serv/startAvP2ded $SRVDATA
tail -f /home/avp2serv/BACKUP/screenlog.0 >> /home/avp2serv/avp2.log&
pidof -s tail >> $LOGDIR/tail.pid
exit 0
;;
pubstop)
SRVTAG="Nightclub"
rm $LOGDIR/screenlog.0
if [ ! -z "`pidof $PROC`" ]; then
kill -TERM `pidof $PROC`
fi
rm $PIDFILE
screen -S $SRVTAG -X quit
exit 0
;;
# restart)
# $0 stop
# $0 start
# exit 0
# ;;
prvstart)
echo -e "------ AvP2 - PRIVATE - Server started @ $START ------\n" >> /home/avp2serv/avp2.log
SRVTAG="Eternity"
SRVDATA="eternity.txt"
cd $LOGDIR
screen -d -m -S $SRVTAG .././avp2/avp2Serv/startAvP2ded $SRVDATA
exit 0
;;
prvstop)
SRVTAG="Eternity"
screen -S $SRVTAG -X quit
exit 0
;;
*)
echo -e "Usage: $0 [\033[1;33mpubstart/stop\033[0m|\033[1;33mprvstart/stop\033[0m]"
exit 0
;;
esac
fi


Nightclub = Public Server mit aktivem Log.
Eternity = Clan Server ohne Logging.

Vielleicht bau ich noch eine "Restart" Funktion ein, aber die duerfte eigentlich ueberfluessig sein.
Ich bin mir sicher, das man das Script viel einfacher schreiben kann, aber so funktioniert es jedenfalls :)
Sollte man "tail" noch fuer etwas anderes verwenden, muss man im Script "PROC="tail"" naeher definieren.

Schoenen Gruss.