Purpose: To install a dedicated UT Server on linux.

First off let me say that this was MUCH more of a pain in the neck than I could have possibly realized.  After speaking with a few people our guess is that bad windows programmers are responsible for this linux port:  for more of my rant, read this link to the bottom of the page:

The first thing that threw me off was the prerequisites:
Whats listed in the readme and that are not really accurate:

The TRUE Prerequisites.
You will need the following libraries to even start setup:
 libxml
 libz
 libgtk
 libgdk
 libglade
 libc
 libgmodule
 libglib
 libdl
 libXi
 libXext
 libX11
 libm
 /lib/ld-linux

(you can check this by doing an "find /usr/lib -name 'libxml*' -print") (substitute libxml for the library you are looking for)

Granted in most applications, the only ones not installed are libxml and libglade .  They are easy enough to find.  (If you have SuSE 6.4 they are even readily available with your distro) otherwise try rpmfind.net

 You will need xdelta.  (This too comes with SuSE 6.4.  The version that came with 6.3 was old.)

 You will need to be running this from the console.  (I Tried installing under ssh with X port forwarding and received a very nice SEGFAULT after 95% of the install finished)

 You will need X-Windows on the server to do this.  (Rant:  Dedicated machines USUALLY do not have things such as a windowing system, X libraries, and other random stuff.  MY guess is that half of this stuff is not even used in launching a dedicated server game.)

 You will need about 1.1 GB of disk space free.  This is to locally house the CDRom, which I am told is also needed (unsure)

I recommend you have rsync.
 

(Starting Installation)

1:  Mount the CD.  The program assumes you will mount it as /mnt/cdrom so lets humor them.

2:  You will probably (as root) need to "mkdir /mnt/cdrom"

3:  You will then mount the cdrom "mount -r /dev/cdrom  /mnt/cdrom"  If you are keeping your CD in the machine, go on to step # 9.

4:  At this point I wanted to put the UT cd on my local hard drive as I will be a way from the server most of the time and its in a common location.  So as root I did a "mkdir /usr/local/UT".

5:  To copy the files, you can either do a "cp -rp /mnt/cdrom/* /usr/local/UT/" or use rsync:  "rsync -av /mnt/cdrom/* /usr/local/UT" (rsync may not be on all systems")  NOTE: Using winzip on your PC and zipping it across may cause problems as you may lose case-sensitivity in your directory and file names!

6:  Now that you have the CD installed, you can unmount the cd "umount /mnt/cdrom".

7:  You can delete the /mnt/cdrom directory  "rmdir /mnt/cdrom".

8:  You can now soft link the /mnt/cdrom to your UT directory. "ln -s /usr/local/UT /mnt/cdrom"

9:  You will need to download 2 patches.  They are: UT-linux-400a.tar.gz and UT-Patch413a-Linux.tar.gz  (413a includes the updated lpDrv.so)  Drop them somewhere out of the way.  Like "/usr/local/src/UTPATCHES"

10: cd to that directory, and open the first one: "gunzip -c UT-linux-400a.tar.gz  | tar -xvf -"

11: Cd into that directory "cd UT-Linux-400A"

12: Read the README. "more README"

13: Create a new user for running UT in /etc/passwd:
ut:x:1999:10:UnrealTournament:/usr/local/UT:/bin/bash

14: Create a ut user in /etc/shadow
ut:*:10902:0:10000::::

15: Change the user's password:  "passwd ut"

16: Make a directory called /usr/local/games  "mkdir -p /usr/local/games"

17: Change ownership of everything UT to the UT user: "chown -R ut /usr/local/games /usr/local/UT /usr/local/src/UTPATCHES"

18: Log in as the UT user ON THE CONSOLE.

19: Launch X-Windows.  "startx" (at least thats the command for me)

20: Open a shell and "cd /usr/local/src/UTPATCHES/UT-Linux-400A"

21: Run the setup.sh. (This did not work on suse6.4). If it works for you go to # 23.  If not run the two commands seperately.

22: ldd ./setup.data/bin/x86/glibc-2.1/setup.gtk | grep -Ei "notfound|missing"  The above should basically return nothing.  If you get something back then you are in trouble and need to add the other libraries. (Use rpm [or yast if you are suse]) or others for other flavors.

23: assuming all is ok, launch the setup.  You must run it from the top level of the 400A patch:  "./setup.data/bin/x86/glibc-2.1/setup.gtk"

24: The UT installer should come up. :)  Basically select everything.  (Yes even glide support even if you dont have a 3dfx card in the sucker)  You will note that everything should match:  The cdrom source is "/mnt/cdrom"  The destination directory is "/usr/local/games/UnrealTournament". Start the installation.

25:  Assuming the install completes, you can check this by "cat /usr/local/games/UnrealTournament/System/UnrealTournament.ini"  Its one of the last files put on and will show that installation completed.

26:  You will now need to install the latest patch. (As of 5/25/00 it was 413a)  Copy the patch to the Unreal Top directory "cp /usr/local/src/UTPATCHES/UT-Patch413a-Linux.tar.gz /usr/local/UT"

27:  cd to that directory "cd /usr/local/UT" Extract the file "gunzip -c UT-Patch-413a-Linux.tar.gz  | tar -xvf -"  This will create a directory called Patch

28: "cd Patch"  read the readme "more README".  Run the patch installer "./install_patch"  That should hopefully work. :)

29:  Now go and modify your UnrealTournament.ini.  "vi (pico) (emacs) (ed) /usr/local/games/UnrealTournament/System/UnrealTournament.ini"
  You will mainly want to change your "ServerName" and "ShortName".  I also changed my localmap from "CityIntro.unr" to "DM-Turbine.unr"

30:  You may also wish to run the UT Web Server.  For that set "bEnabled=True" in the .ini file.  You probably should also add: ListenPort=XXXXX Where XXXXX is a port to run the web server on.  (Add this line directly under bEnabled=True)

31:  Also a few lines below all that is the AdminUsername and AdminPassword,  set those accordingly.

32:  You may also wish to adjust the variable "MaxPlayers" (under Engine.GameInfo)

33:  If you've gotten this far its time to try it out:   "cd /usr/local/games/UnrealTournament/System"   run "./ucc server DM-Turbine"  If this is the machine you intend to run UT server on, you are DONE.  OTherwise:

Porting a working installation
34:  If you are a paranoid bastard, or the server you want to run DOES NOT have a console, and you have more than 1 machine, you can still install UT.  After finishing all of the above steps: you can tar the  /usr/local/UT directory up and the /usr/local/games/UnrealTournament directory up and scp/rsync/ftp them to your production machine.  You can extract them there (in the same hierarcy), (dont forget about the link to /mnt/cdrom) and lauch your Dedicated Server that way.
 

The commands for this would be: (assuming /usr/local/foo was a transfer dir and owned by user ut)
cd /usr/local
tar -cvf /usr/local/foo/UT.tar ./UT
cd /usr/local/games
tar -cvf /usr/local/foo/UnrealTournament.tar ./UnrealTournament
cd /usr/local/foo
scp *tar productionmachine:/usr/local/foo (assume /usr/local/foo better exist on production machine and that ut is a user on the other machine)

(NOW ON PRODUCTION MACHINE.)
cd /usr/local
tar -xvf /usr/local/foo/UT.tar
cd /usr/local/games
tar -xvf /usr/local/foo/UnrealTournament.tar
ln -s /usr/local/UT /mnt/cdrom

You should be able to repeat step 33 and be on your way.

Thats about as far as I have gotten so far, but it should be good enough to help get support on general admin :)
 

(RANT MODE)
1: There should be 2 installs for UT for linux.  A Server only install, and a Client install.  Both with a specific list of requirements.  Hopefully the server requirements are less stringent on the packages that are needed.
2: No server type install should require a GUI to run.  In the unix world, a server does not tend to have a monitor or X-windows.
3: No install should require you to be on the console.  You should be able to x-host it out at least.  My guess is that the end of setup.sh calls a terminal window or something that tries 127.0.0.1 (instead of whatever $DISPLAY is)
4: You should not need a CD to run the dedicated server (i'm not sure if this is true)
5: (from when I tried to install on SuSE6.3) Use something more common for installing patches that people in the rest of the world use.  How about autoconf? Makefile? Diff? cp?  Whats with this xdelta stuff that was not (until recently) shipped stock with the OS? and using a very recent version too.
6: If you create a program called setup.sh, maybe you should try it on more than one flavor of Linux?

(THANKS MODE)
1:  Thanks to SuSE for making a distro that has all the wierd stuff needed to get this running.

If you have any questions drop me a line:
utadmin-web@congiman.com