In the past few weeks I’ve been curious as to whether it is possible to run an Asp.Net Web Application under Linux or not. Although the feature was available in Mono, there was never a well rounded IDE to work with. With MonoDevelop that has changed, the latest version (downloaded from svn) allows you to edit pages in design view as well. It also allows you to open existing Web Application Projects created in Visual Studio 2005.

Installing it on a fresh install of Ubuntu Gutsy Gibbon however isn’t as straightforward. I’ve put together a tutorial that describes the steps necessary to do so (the biggest problem being installing packages that are necessary to compile MonoDevelop, but are not installed on a fresh install of Ubuntu).

As per the MonoDevelop website, in order to install MonoDevelop from source you need to install the following packages:

  • Gtk# 2.8.4
  • Gtksourceview#-2.0 0.10
  • Monodoc 1.0
  • Gecko#-2.0 0.10
  • MonoDevelop Source

Unfortunately a fresh install of Ubuntu doesn’t allow you to compile any of these packages and/or install them. When I first tried it out I came across a lot of errors. I finally figured out which packages once installed would aid in an easy installation of MonoDevelop from source.

First go to MonoDevelop’s website and download the following packages from there to a local folder on your disk:

  • Gtk# 2.8.4
  • Gtksourceview#-2.0 0.10
  • Monodoc 1.0
  • Gecko#-2.0 0.10

You can extract them by right clicking on the package and choosing extract.

Next we have to get the latest version of the source from mono’s svn. Open up a terminal (Applications->Accessories->Terminal) and navigate to your directory where you have these packages installed.

Type in:

$ svn co svn://anonsvn.mono-project.com/source/trunk/monodevelop

If this is a fresh install of Ubuntu you will end up with the error message:

The program ’svn’ is currently not installed. You can install it by typing:
sudo apt-get install subversion

So go ahead and install it with “sudo apt-get install subversion”. It will request to install additional packages so go ahead and accept it. Once that is done, go ahead and get the latest version of mono from svn.

Going by the list, we would have to first install Gtk#. So we bring up a terminal and in that directory type:

ramesh@Xanadu:~/Desktop/mono/gtk-sharp-2.8.4$ ./configure

Unfortunately we are stopped short and get the following output:

checking build system type… i686-pc-linuxlibc1
checking host system type… i686-pc-linuxlibc1
checking target system type… i686-pc-linuxlibc1
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for gawk… no
checking for mawk… mawk
checking whether make sets $(MAKE)… yes
checking whether to enable maintainer-specific portions of Makefiles… no
checking for gcc… gcc
checking for gcc… (cached) gcc
checking for C compiler default output file name… configure: error: C compiler cannot create executables
See `config.log’ for more details.

This basically tells us that our C compiler cannot create executables and the reason is because a fresh install of Ubuntu doesn’t come with build essentials.

Now in order to get most of the packages installed without problems we need to add a few repositories. Start ‘System->Administration->Synaptic Package Manager’ and then ‘Settings->Repositories’. Select all the repositories for now.

Ubuntu repositories

Search for a package called ‘build-essential’, select it and install it by clicking ‘Apply’.

This will allow the C compiler to create executables.

synaptic

Attempting to configure again will result in another error

checking for al… no
configure: error: No al tool found. You need to install either the mono or .Net SDK.

After digging around and some trial and error (and figuring out missing packages) these are the list of packages I’ve found are required for a comfortable install of monodevelop. (Note: Some of these came up as dependencies of other packages. Some of these may not even be necessary, however since they had the mono name in them I have included them.)

The next step is to install a set of packages from the repositories, so fire up Synaptic Package Manager (System->Administration->Synaptic) and install the following packages:

autoconf (2.61-4)
automake (1:1.10+nogfdl-1)
intltool (0.36.2-0ubuntu1)

libgdiplus (1.2.4-2ubuntu1)
libungif4g (4.1.4-5)

libmono-dev (1.2.4-6ubuntu6)
libmono-microsoft-build2.0-cil (1.2.4-6ubuntu6)
libmono-microsoft7.0-cil (1.2.4-6ubuntu6)
libmono-microsoft8.0-cil (1.2.4-6ubuntu6)
libmono-system-data1.0-cil (1.2.4-6ubuntu6)
libmono-system-messaging1.0-cil (1.2.4-6ubuntu6)
libmono-system-messaging2.0-cil (1.2.4-6ubuntu6)
libmono-system-runtime1.0-cil (1.2.4-6ubuntu6)
libmono-system-runtime2.0-cil (1.2.4-6ubuntu6)
libmono0-dbg (1.2.4-6ubuntu6)
libmono1.0-cil (1.2.4-6ubuntu6)
mono (1.2.4-6ubuntu6)
mono-dbg (1.2.4-6ubuntu6)
mono-devel (1.2.4-6ubuntu6)
mono-gmcs (1.2.4-6ubuntu6)
mono-jit-dbg (1.2.4-6ubuntu6)
mono-mcs (1.2.4-6ubuntu6)
mono-xsp (1.2.4-1.1ubuntu1)
mono-xsp-base (1.2.4-1.1ubuntu1)
mono-xsp2 (1.2.4-1.1ubuntu1)
mono-xsp2-base (1.2.4-1.1ubuntu1)
monodoc (1.2.4-1ubuntu1) <--- This needed to be compiled, but not any more

libgtk2.0-dev (2.12.0-1ubuntu3)
libgtksourceview-dev (1.8.5-1)
libgtksourceview2.0-cil (0.10-3.1)
libgtksourceview2.0-dev (2.0.0-0ubuntu1)

gnome-sharp2 (2.16.0-7ubuntu1)
gtk-sharp (1:1.0.10-5build3)
gtk-sharp2 (2.10.2-1ubuntu2) <-- This needed to be compiled but not any more

Selecting these above packages will most likely cause the below dependencies to automatically get installed.
If not, then select them.

autotools-dev (20070306.1)
gettext (0.16.1-2ubuntu3)
m4 (1.4.10-0ubuntu2)

libgecko2.0-cil (0.11-3ubuntu3)
libglib2.0-dev (2.14.1-1ubuntu1)
libmono-accessibility1.0-cil (1.2.4-6ubuntu6)
libmono-accessibility2.0-cil (1.2.4-6ubuntu6)
libmono-cairo2.0-cil (1.2.4-6ubuntu6)
libmono-cecil0.5-cil (0.5-2)
libmono-data-tds1.0-cil (1.2.4-6ubuntu6)
libmono-peapi1.0-cil (1.2.4-6ubuntu6)
libmono-peapi2.0-cil (1.2.4-6ubuntu6)
libmono-relaxng1.0-cil (1.2.4-6ubuntu6)
libmono-security1.0-cil (1.2.4-6ubuntu6)
libmono-sharpzip0.84-cil (1.2.4-6ubuntu6)
libmono-system-web1.0-cil (1.2.4-6ubuntu6)
libmono-winforms1.0-cil (1.2.4-6ubuntu6)
libmono-winforms2.0-cil (1.2.4-6ubuntu6)
lynx (2.8.6-2ubuntu1)
mono-debugger (0.50-1)
mono-jay (1.2.4-6ubuntu6)
mono-utils (1.2.4-6ubuntu6)
monodoc-base (1.2.4-1ubuntu1)
monodoc-browser (1.2.4-1ubuntu1)
monodoc-manual (1.2.4-1ubuntu1)

libart-2.0-dev (2.3.19-3)
libatk1.0-dev (1.20.0-0ubuntu1)
libcairo2-dev (1.4.10-1ubuntu4)
libexpat1-dev (1.95.8-4ubuntu1)
libfontconfig1-dev (2.4.2-1.2ubuntu4)
libfreetype6-dev (2.3.5-1ubuntu4)
libgnomeprint2.2-dev (2.18.2-0ubuntu1)
libice-dev (2:1.0.3-3)
libpango1.0-dev (1.18.2-0ubuntu1)
libpng12-dev (1.2.15~beta5-2build1)
libsm-dev (2:1.0.3-1)
libx11-dev (2:1.1.1-1ubuntu4)
libxau-dev (1:1.0.3-2)
libxcomposite-dev (1:0.4.0-0ubuntu1)
libxcursor-dev (1:1.1.8-2)
libxdamage-dev (1:1.1.1-3)
libxdmcp-dev (1:1.0.2-2)
libxext-dev (2:1.0.3-2build1)
libxfixes-dev (1:4.0.3-2)
libxft-dev (2.1.12-2ubuntu4)
libxi-dev (2:1.1.2-1)
libxinerama-dev (2:1.0.2-1build1)
libxml2-dev (2.6.30.dfsg-2ubuntu1)
libxrandr-dev (2:1.2.1-1)
libxrender-dev (1:0.9.2-1)
x11proto-composite-dev (1:0.4-0ubuntu1)
x11proto-core-dev (7.0.10-2)
x11proto-damage-dev (1:1.1.0-2build1)
x11proto-fixes-dev (1:4.0-2ubuntu1)
x11proto-input-dev (1.4.2-1)
x11proto-kb-dev (1.0.3-2ubuntu1)
x11proto-randr-dev (1.2.1-2)
x11proto-render-dev (2:0.9.2-4ubuntu1)
x11proto-xext-dev (7.0.2-5ubuntu1)
x11proto-xinerama-dev (1.1.2-4ubuntu1)
xtrans-dev (1.0.3-2)
zlib1g-dev (1:1.2.3.3.dfsg-5ubuntu2)

gnome-sharp2-examples (2.16.0-7ubuntu1)
gtk-sharp-examples (1:1.0.10-5build3)
gtk-sharp-gapi (1:1.0.10-5build3)
gtk-sharp2-examples (2.10.2-1ubuntu2)
gtk-sharp2-gapi (2.10.2-1ubuntu2)
libgconf-cil (1:1.0.10-5build3)
libgda2-3 (1.2.4-0ubuntu1)
libgda2-common (1.2.4-0ubuntu1)
libglade-cil (1:1.0.10-5build3)
libglib-cil (1:1.0.10-5build3)
libgnome-cil (1:1.0.10-5build3)
libgtk-cil (1:1.0.10-5build3)
libvte-cil (1:1.0.10-5build3)
libvte2.0-cil (2.16.0-7ubuntu1)
libxml-libxml-common-perl (0.13-5build1)
libxml-libxml-perl (1.63-1)
libxml-namespacesupport-perl (1.09-3)
libxml-sax-perl (0.14-0.1)
monodoc-gtk2.0-manual (2.10.2-1ubuntu2)

Now that we have our packages installed, we need to install Gecko # and gtksourceview#

So go to the Gecko# folder and type in:
sudo ./configure
sudo make
sudo make install

Now go to the gtksourceview# folder and type in:
sudo ./configure
sudo make
sudo make install

Now go to the monodevelop folder and type in:
sudo ./autogen.sh

This will generate the default config file and run the default configuration. However to enable Asp.Net Web Application projects and editing Asp.Net files using the GUI, we need to reconfigure using the option:

sudo ./configure --enable-aspnet --enable-aspnetedit

Once its done do the normal:

sudo make
sudo make install

You should now have a menu item under Applicaions->Programming->MonoDevelop

That should do it.

Leave a Reply