Building Mapguide on Ubuntu 7.10 Server

Below are instructions that will aid a user with installing FDO 3.3 and MapGuide Open Source 2.0 from SVN trunk on Ubuntu 7.10 (Gutsy Gibbon) Server. It is based on previous instructions, lots of credit to their authors!
==NOTES==
By the time you read this, FDO 3.3 and MapGuide 2.0 may have their own branches in SVN. If so, just swap out references to /trunk/ with the appropriate /branch/* where necessary.
The default directory used in these instructions is called /home/administrator. This assumes that you create your primary user account with the name "administrator". If you do not, mentally adjust where necessary.
You may want to consider using a client like PuTTY to access your server's terminal via openssh-server from a different computer. This really helps with copying and pasting. If so, either ensure that you install the OpenSSH server during your basic install, or add "openssh-server" to the list of packages below.
Any time that you run a task and pipe its output to a logfile, make sure that you look at the end of the logfile when you're done to make sure that it completed successfully. If it didn't then you have the logfile to post an error report from... Here's an example of how to do this:
 tail -n 30 mylogfile.log
==BASIC SETUP==
Install a basic Ubuntu Server 7.10 (Gutsy Gibbon). Once this is complete, you will have to add some extra packages to compile MapGuide. Make sure that you get all of these packages; the line is really long:
 sudo apt-get install build-essential bison flex automake1.7 automake1.9 libtool doxygen subversion libjpeg62-dev libpng12-dev libfreetype6-dev libexpat1-dev libxalan110-dev libxslt1-dev expat libcurl4-openssl-dev libasound2-Dev python2.5-dev sun-java5-jdk
If Java fails to install, you may need to edit /etc/apt/sources.list to uncomment the multiverse repository lines and then try installing it again.
To avoid "bad fd number" errors, type the following in the terminal:
 sudo dpkg-reconfigure dash
and choose No at the prompt. Be aware that this changes your default /bin/sh from dash back to bash.
Prepare your SVN profile to use the appropriate options for FDO and MapGuide. Type the following at the Terminal.
(this just sets up your initial .subversion settings folder)
 svn info http://svn.osgeo.org/fdo
(edit ~/.subversion/config)
 nano .subversion/config
You can enable options by removing the comments (# ) in front of them, or just add new lines to the appropriate locations.
In the Miscellany section, enable:
 use-commit-times = yes
 enable-auto-props = yes
In the Auto-Props section, add:
 *.*=svn:eol-style=native
 *.sh=svn:executable
Save and close the config file.
Set the SUN Java to be the default Java installation:
 sudo update-java-alternatives -s java-1.5.0-sun
Edit /etc/jvm, moving "/usr/lib/jvm/java-1.5.0-sun" to the top of the list
 sudo nano /etc/jvm
Edit /etc/environment so that services will know where to look for Java
 sudo nano /etc/environment
(Add the following line)
 JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun"
Log off and then log back on so that these settings take effect. Alternatively, export JAVA_HOME in your current session.
==FDO INSTALL==
In terminal type the following:
 mkdir fdosvn
(be prepared to wait a long time for this command to complete, the test data takes a while to download)
 svn checkout http://svn.osgeo.org/fdo/trunk fdosvn
(type in your password after the following command if prompted)
 sudo mkdir /usr/local/fdo-3.3.0
(if you are not logged in as administrator, you change the userid below!)
 sudo chown administrator /usr/local/fdo-3.3.0
 cd fdosvn
 source ./setenvironment.sh
In terminal, type the following to run the builds. Note, there will be no output from either command until completion as it is all being spooled to nohup.out. You can log into another terminal session and tail this file if you start getting antsy :-)
 nohup ./build_thirdparty.sh > build_thirdparty.log
 nohup ./build_linux.sh > build_linux.log
==APACHE / PHP INSTALL==
In Terminal type the following:
 cd ~
(you should now be in /home/administrator, or whatever your $HOME is)
 mkdir mgsvn
 svn checkout http://svn.osgeo.org/mapguide/trunk/MgDev/ mgsvn
 sudo mkdir /usr/local/mapguideopensource
(replace administrator with your userid if necessary)
 sudo chown administrator /usr/local/mapguideopensource
 cd mgsvn/Oem/LinuxApt
(careful when copying and pasting this line, the - got changed into . for me)
 find . -name "*.gz" -exec tar xzf {} \;
 nohup ./build_apt.sh > ../../build_apt.log
==BUILD OEM==
Perform the following:
 cd ~/mgsvn/
 nohup ./build_oem.sh > build_oem.log
==BUILD MAPGUIDE==
Go for the gusto:
 aclocal
 libtoolize --force
 automake --add-missing --copy
 autoconf
 ./configure --enable-optimized
 nohup make > make_mapguide.log
 nohup make install > install_mapguide.log
== STARTUP OPTIONS ==
While you're testing, it can be convenient to run services interactively, but eventually you'll want them to shut down / restart when you the computer is rebooted. This section gives you both options.
=== START SERVICES MANUALLY ===
Start Apache
 sudo /usr/local/mapguideopensource/webserverextensions/apache2/bin/apachectl restart
Stop Apache
 sudo /usr/local/mapguideopensource/webserverextensions/apache2/bin/apachectl stop
Start MapGuide
 sudo /usr/local/mapguideopensource/server/bin/mgserverd.sh
Stop MapGuide
 sudo pkill -f -u root "mgserver daemon"
=== SET SERVICES TO AUTO-START ===
!!! Warning, this is not working. See Ticket #309 !!!
Add Apache's control script into the system init structure:
 sudo ln -s /usr/local/mapguideopensource/webserverextensions/apache2/bin/apachectl /etc/init.d/apache-mapguide
Set up some default run level actions for Apache (basically, start on interactive, stop on shutdown/restart)
 sudo update-rc.d apache-mapguide defaults 30 70
Create a startup script for Mapguide server:
 touch /usr/local/mapguideopensource/mapguidectl
 chmod u=rwx,go=r /usr/local/mapguideopensource/mapguidectl
 nano /usr/local/mapguideopensource/mapguidectl
Add the following contents:
 #!/bin/sh
 # MapGuide init script
 . /lib/lsb/init-functions
 case "$1" in
 start)
 log_daemon_msg "Starting MapGuide Server 2.0.0..."
 export GDAL_DATA=/usr/local/mapguideopensource/server/bin/data
 export PROJ_LIB=/usr/local/mapguideopensource/server/bin/nad
 export LD_LIBRARY_PATH=/usr/local/fdo-3.3.0/lib:"$LD_LIBRARY_PATH"
 pushd /usr/local/mapguideopensource/server/bin > /dev/null
 ./mgserver daemon > /dev/null
 popd > /dev/null
 log_end_msg 0
 ;;
 stop)
 log_daemon_msg "Stopping MapGuide Server 2.0.0..."
 MGPROCESS=`/usr/bin/pgrep -f -u root "mgserver daemon"`
 if [ "$MGPROCESS" != "" ]
 then
 /bin/kill $MGPROCESS
 fi
 log_end_msg 0
 ;;
 *)
 echo "Usage: $0 {start|stop}"
 exit 1
 ;;
 esac
 exit 0
Add MapGuide's control script into the system init structure:
 sudo ln -s /usr/local/mapguideopensource/mapguidectl /etc/init.d/mapguide
Set up some default run level actions for MapGuide (basically, start on interactive, stop on shutdown/restart)
 sudo update-rc.d mapguide defaults 35 65
Restart and see if it works!