Mon 18 May 2009
I am ashamed to say that I wasn’t really sure if the Mono project would ever succeed. It seemed like such an enormous task, and one that would forever be playing catch-up with M$, that it just didn’t make sense.
Even so, I’ve sort of been following it from the sidelines for a while and I’m excited to say that Mono 2.4 seems to be a drop-in replacement for the bits of the .NET SDK I was actually using. Now with the release of MonoDevelop 2.0 it seems that I’m also able to get a functioning alternative to the Visual Studio GUI I’ve been using. It’s a colossal achievement and one that makes me even more ashamed. Ashamed that I didn’t think it was possible, and ashamed that I didn’t help out.
To get it working was a bit of a trial though. It turns out that because I already had the default MonoDevelop 1.0 installed that when I started trying to build a new version things got very confused. Not only that it turns out that the build instructions for MonoDevelop 2.0 aren’t exactly correct. After a lot of messing around I think I managed to damage the default installation and cross-link a few libraries here and there. I think if I was doing it again I should probably have followed these instructions Parallel Mono Environments before doing anything. Too late now though. After much building and swearing I ended up uninstalling all Mono environments and then rebuilding everything for Mono 2.4. I didn’t put the Hardy version back yet, I’ll do that if I need to.
Here’s what I did, in case it helps anyone.
First of all I decided that this is a temporary solution and that eventually I would be able to get MonoDevelop 2.0 running from APT, therefore I decided to install everything in /usr/local.
Ubuntu Development Packages
As ever with Ubuntu you will quite probably need to install a bunch of development libraries to make it work. I probably had a lot of the dependencies I needed installed before I began but here are the ones that I didn’t have that I needed. Your mileage might vary.
sudo apt-get install bison gnunet-gtk-dev libpango1.0-dev libgtk2.0-dev libglade2-dev libgnome-dev libart-dev libgnome2-dev libgnome-dev libgnomeui-dev libgnomeprint2.2-dev libgnomeprintui2.2-dev libgnomecanvas2-dev libpanel-applet2-dev
As per the parallel environments guide I set up this environment in a script and executed it.
#!/bin/bash MONO_PREFIX=/usr/local GNOME_PREFIX=/usr export DYLD_LIBRARY_PATH=$MONO_PREFIX/lib:$DYLD_LIBRARY_PATH export LD_LIBRARY_PATH=$MONO_PREFIX/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=$MONO_PREFIX/include:$GNOME_PREFIX/include export ACLOCAL_PATH=$MONO_PREFIX/share/aclocal export PKG_CONFIG_PATH=$MONO_PREFIX/lib/pkgconfig:$GNOME_PREFIX/lib/pkgconfig PATH=$MONO_PREFIX/bin:$PATH MONO_GAC_PREFIX=/usr/local PS1="[mono] \w @ "
I then downloaded the following libraries from the Mono 2.4 sources page.
wget http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-2.4.tar.bz2 http://ftp.novell.com/pub/mono/sources/mono/mono-2.4.tar.bz2 http://ftp.novell.com/pub/mono/sources/gtk-sharp212/gtk-sharp-2.12.8.tar.bz2 http://ftp.novell.com/pub/mono/sources/gnome-sharp220/gnome-sharp-2.20.1.tar.bz2 http://ftp.novell.com/pub/mono/sources/mono-addins/mono-addins-0.4.zip http://ftp.novell.com/pub/mono/sources/mono-tools/mono-tools-2.4.tar.bz2 http://ftp.novell.com/pub/mono/sources/mono-debugger/mono-debugger-2.4.tar.bz2 http://ftp.novell.com/pub/mono/sources/monodevelop/monodevelop-2.0.tar.bz2 http://ftp.novell.com/pub/mono/sources/monodevelop-debugger-mdb/monodevelop-debugger-mdb-2.0.tar.bz2 http://ftp.novell.com/pub/mono/sources/monodevelop-database/monodevelop-database-2.0.tar.bz2
Extract all these and then run the below command in each. Because this is a dependency stack you will need to do them roughly in the order they're listed above.
./configure --prefix=/usr/local make && sudo make install
After that you should be left with a working MonoDevelop 2.0!
I encountered a few problems on the way, mostly there were problems relating to not having the correct Ubuntu development libraries and headers installed when the parts of the stack were configured.
I also ran into some problems with the GAC having pre-installed versions of conflicting libraries installed. Eventually though this problem was resolved by uninstalling the default Hardy version of Mono and starting again. Hopefully you won't have this problem because you will have setup a parallel environment in the first place ...