Install Mono 2.10.2 and MonoDevelop 2.6 Beta 3 on Ubuntu With a Bash Script
After @migueldeicaza announced MonoDevelop Beta 3 a few days ago, I updated my scripts to install the new version. I’ve also included an upgrade script for those of you who used my Beta 2 script. The upgrade will uninstall the three Beta 2 projects and then download, compile and install the three new ones. I’ve only tested this so far on Ubuntu Natty (11.04), so let me know here if you have any problems with other versions.
Steps to Install
- Install Mono 2.10
- Install MonoDevelop
- Use the launcher script to run MonoDevelop.
Installing Mono
If you already have mono installed or are upgrading, skip this step. This will install the latest Mono 2.10.2 to the prefix directory /opt/mono-2.10.
NOTE: You can optionally change the PREFIX value in the beginning of the script to install to a different location.
Ubuntu
mkdir mono-2.10 cd mono-2.10 wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_mono-2.10.sh chmod 755 install_mono-2.10.sh ./install_mono-2.10.sh
Fedora (< F15)
NOTE: Fedora 15 is packaged with Mono 2.10.2 and can be easily installed with YUM.
yum install mono xsp mono-devel
mkdir mono-2.10 cd mono-2.10 wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/fedora/install_mono-2.10.sh chmod 755 install_mono-2.10.sh su ./install_mono-2.10.sh
If all is well, enter:
/opt/mono-2.10/bin/mono -V
And you should get a display of Mono 2.10.2
Mono JIT compiler version 2.10.2 (tarball Mon May 23 14:23:52 CDT 2011)
Copyright (C) 2002-2011 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
Installing MonoDevelop Beta 3
If you did not use my script for Beta 2, then you can easily install a new fresh copy of Beta 3.
NOTE: I’m still working on a script for Fedora 15 (or any system installed w/ Gnome 3) due to the newer dependencies.
Ubuntu
wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_monodevelop-2.5.92.sh chmod 755 install_monodevelop-2.5.92.sh ./install_monodevelop-2.5.92.sh
Fedora (<15)
wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/fedora/install_monodevelop-2.5.92.sh chmod 755 install_monodevelop-2.5.92.sh su ./install_monodevelop-2.5.92.sh
Upgrade Beta 2 to Beta 3
Upgrade the existing version. Download this script to the same directory you installed Beta 2. It will uninstall the older version using the original install source that should still be there.
Ubuntu
wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/upgrade-monodevelop-2.5.91-to-2.5.92.sh chmod 755 upgrade-monodevelop-2.5.91-to-2.5.92.sh ./upgrade-monodevelop-2.5.91-to-2.5.92.sh
Fedora (<15)
wget --no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/fedora/upgrade-monodevelop-2.5.91-to-2.5.92.sh chmod 755 upgrade-monodevelop-2.5.91-to-2.5.92.sh su ./upgrade-monodevelop-2.5.91-to-2.5.92.sh
Enjoy!
This work is licensed under the Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.


Hi, the mono setup went well, but running the install for monodevelop I’ve got this:
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
gnome-devel : Depends: glade-gnome (>= 3.6.7) but it is not going to be installed
Recommends: gnome-core-devel but it is not going to be installed
Hi there, thanks for putting this together. One quick question: If I wanted to revert to the stable version, how would I do that?
Thanks!
@Jacob
Super easy. Just don’t initialize your environment with the path /opt/mono-2.10 (should be this way by default). Mono 2.6.7 should run just the same.
This install uses the parallel environments suggestion and installs everything to /opt/mono-2.10. If you want to completely remove it, simply delete it.
@marcello
Are you running Fedora 15?
I fixed some of the dependencies missing in the Fedora Mono install script over the weekend. On Fedora 15/Gnome3, MonoDevelop will not install/work yet because of the gluezilla library’s xulrunner 1.8.1 dependency (F15 is loaded with Xulrunner 2.0+, which removed some dependent header files). If you pull gluezilla master from github; it builds, but MD still doesn’t run. I’m going to be toying with that this week. I installed F15 x64 on my laptop to try this out.
Hello Nathan.
The instructions under “Installing MonoDevelop Beta 3″ reads wget –no-check-certificate https://github.com…install_monodevelop-2.5.90.sh but I think it shoud be …install_monodevelop-2.5.92.sh, otherwise the two instructions that follow it won’t work (plus, …2.5.92.sh is your last script, isn’t it?
)
Thank your for your great work.
@Nathan
Hey, I’m having the same problem than marcello, I’m running Natty with the gnome3 PPA.
Thanks.
@Vlad
Do you still see that anywhere? I noticed that a few days ago and fixed one. If you find anymore, let me know.
@PabloS
I was going to try that out soon on my install of natty. I bet you have to hunt down some dependencies. You can also always try building the master branch on github to see if they’ve adapted the more recent code to the newer dependencies.
@Nathan
Yes, I see install_monodevelop-2.5.90.sh referenced in both of the wget lines (Ubuntu and Fedora).
If I click on the “Copy to Clipboard button” on the Ubuntu block, this is what I get:
wget –no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_monodevelop-2.5.90.sh
chmod 755 install_monodevelop-2.5.92.sh
./install_monodevelop-2.5.92.sh
And for Fedora:
wget –no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/fedora/install_monodevelop-2.5.90.sh
chmod 755 install_monodevelop-2.5.92.sh
./install_monodevelop-2.5.92.sh
In both cases is the same I can read on the page.
Thanks @Vlad .
Refresh your page and see if that helps. I’m betting you have a cached version. You figured it out though. Just rename the script w/ 2.5.92 and it should be available. You can also browse github directly here.
@Nathan
Yes, it is at the end of the wget command.
wget –no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_monodevelop-2.5.90.sh
Should be:
wget –no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_monodevelop-2.5.92.sh
@Dotan Cohen
@Vlad
Got it. Thanks guys! sheesh.. It’s been a long week already.
@Nathan
You got it fixed. Now it reads (and copies) … install_monodevelop-2.5.92.sh in both sections (Ubuntu and Fedora).
Thanks for taking the time to fix it. I think it will be beneficial for less experienced users.
For all the Fedora 15 folks… I’ve been dogfooding fedora 15 for a couple days, and I found that either through the official repo or through rpmfusion.org, you can install Mono 2.10.2 by default using YUM. (A much better solution than building from scratch IMO). Also, MonoDevelop 2.4 is packaged with it. I still am having a hard time building beta 3 on my machine, so I apologize for the misunderstanding. Feel free to take the scripts and try it out though. It certainly shouldn’t hurt anything since they install to a prefixed path.
BTW Fedora 15 is very pretty. I’m really digg’n their roll of Gnome 3.
After fighting with this for several hours I find your script. Worked like a charm! Thanks so much!
Hi Nathan,
thanks for the script, it was quite helpful. I am developing using mono via the Ironpython route. I would like to ask how to get ironpython working with the compiled version of mono. The mono installation worked very well but could not find where the ironpython binaries were ( i expected to find them since mono-project said ironpython is packaged with mono 2.10). Any help will be deeply appreciated as I don’t even know how to go about asking the question in google without being taken on a vigorous merry go round. Thanks and God bless
Joe
@joe izang
I honestly don’t know. I’ve never actually tried to use IronPython w/ .net before on any platform. After some Google digging, I found their project on github. And here are some instructions for building against mono. You can probably also use the binary download. I don’t know per se that it’s pre-packaged w/ Mono. These compile scripts are vanilla Mono w/ nothing extra.
Hope this helps!
I’ve had a similar issue as Joe. The install script worked great, but I can’t seem to get mono or monodevelop to build any projects that use IronPython. I’m using the dlls they distribute which are supposed to work with mono. I couldn’t get it working so I’ve also been trying to get existing solutions for VS like http://www.voidspace.org.uk/ironpython/silverlight/embedding_ironpython.shtml
These still don’t want to compile even though the dlls are included. It seems like it’s almost impossible to get ironpython and mono working together. It just tells me Silverlight 3.5 isn’t installed.
And maybe related, for several references it will tell me that the assembly isn’t available for Moonlight / Silverlight 4.0 (and sometimes for 2.0), but there are no available packages in the references. Well, thanks for making the scripts regardless. It’s definitely helped out a lot.
Thanks Nathan,
I admire your effort of trying to get the most recent version of mono on our favourite linux distro. I blame debian and ubuntu. Mono 2.10 is stable enough for use anywhere so I don’t understand why they won’t do what most other distros do. Mono is here to stay and the sooner they realize this the better. I will try compiling against mono and see what I get. Well done for the effort.
@Tim
No problem! Wish I could help more.
Thanks @joe izang !
@joe izang It’s funny you say that because I really dug Unity until I realized MonoDevelop menus wouldn’t work with it. Then after seeing Gnome 3 on Fedora and OpenSuse, I was much more impressed with that than I was of Unity. I’m always checking the different distros though to see what offers me the best solution for the overall experience. Ubuntu tends to have an abrasive relationship with some popular projects. But I really like the core debian elements since that’s what I first learned with.
With regard to Unity and the MonoDevelop menus, try this http://ebsteblog.wordpress.com/2011/06/07/lost-menu-in-monodevelop-in-unity
@Nathan
Hi Nathan, no, I’m using Ubuntu 11.04 with Gnome 3 (PPA)
@marcello Ah! That’s probably why. I haven’t gotten this Beta3 script working on Gnome 3 yet; that’s why it fails in Fedora 15. Some of the dependencies changed under the covers and causes the build script to fail. I’ll look into it more.
I know it works, because I installed packaged Beta 3 on OpenSUSE 11.4 w/ gnome 3 (I installed MD before I installed Gnome 3). Regardless, it still works. Gnome 3 is very cool especially in Fedora and OpenSUSE (they look almost identical). Ubuntu’s Gnome 3 is a little different.
Just curious if you would know why the “Run on external console” option always gives an error in MonoDevelop of “File name has not been set”? From what I can tell online this can happen if some things aren’t set correctly. I can build projects fine and then run them from a terminal, but I can’t run them from the IDE.
@Tim
I’m testing that right now on ubuntu 32bit 11.04 w/ classic gnome, and it works. Tell me more about your environment. (I just created a new simple console app w/ MD and ran it with external console).
I’m actually running the same thing. It wasn’t working on the PPA version either, but I just uninstalled and reinstalled it and now that version is working, but 2.6b3 still isn’t. I’m guessing some environment variable or config option wasn’t set when the install script ran, but it’s okay. Like I said, I can still run it from a terminal so it’s not a big deal. Thanks though.
I have tried to use this on a ubuntu-11.04-server-i386 hosted in VirtualBox. The install script runs fine until the build part. At that point I get an error saying
“libtool: link: `libmonoruntime_la-nacl-stub.lo’ is not a valid libtool object
make[3]: *** [libmonoruntime.la] Error 1
I will try and run it on a ubuntu client machine instead and see if this helps.
@Rdunzl Interesting. Let me know what you find. I’m curious. Thanks
I installed successfully on a virtual box with ubuntu-10.04.2-desktop-i386. I don’t know why the build failed on the ubuntu 11.04 server, and since I am a mostly windows based .NET developer I won’t take the time to investigate (too much learning before I can pinpoint errors). Lol – but I am pretty sure some prerequisites are missing in the ubuntu 11.04 server which are not missing in the ubuntu 10.04.2 desktop
This page has been a great help, thank you
Thanks! You bet!
Sorry I am a Linux n00b. I have installed mono 2.10 .2 on an ubuntu desktop machine, and xsp can’t run. There’s an earlier version of mono preinstalled and it works fine with my sample sites. When I try to execute the xsp2 from /opt/mono-2.10/, I get errors.
I must be missing something. Do I have to change some config settings in order for mono 2.10 to use the right gac ?
I run the “built in” mono version by just issuing a command like “xsp2 –root [pathToSiteRoot]“. I run the 2.10 version by calling “/opt/mono-2.10/bin/xsp2 –root [path]“, and then I get this error:
Description: Error compiling a resource required to service this request. Review your source file and modify it to fix this error.
Compiler Error Message: : ** (/usr/lib/mono/2.0/gmcs.exe:3478): WARNING **: The class System.IO.Pipes.NamedPipeServerStream could not be loaded, used in System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
It uses the old version of mono in /usr/lib/mono/2.0/.
For now I’ve just added /opt/mono-2.10/bin to the environment path, which solved those XSP errors, but I wonder how I can do it without editing the environment path – it is sort of not .NET to rely on that path
@Rdunzl
Not a problem. The script installs to a new prefix /opt/mono-2.10. All you have to do is setup your environment [Mono Parallel Environments] before running xsp. And since you’re running it manually, create a script with this content:
#!/bin/bash
MONO_PREFIX=/opt/mono-2.10
GNOME_PREFIX=/usr
export DYLD_LIBRARY_FALLBACK_PATH=/lib:
export LD_LIBRARY_PATH=/lib:/opt/mono-2.10/lib:
export C_INCLUDE_PATH=/include:/include
export ACLOCAL_PATH=/share/aclocal
export PKG_CONFIG_PATH=/lib/pkgconfig:/lib/pkgconfig
export PATH=/bin:/opt/mono-2.10/bin:$PATH
Call it env.sh and save it to your home directory. Then before running xsp2, enter:
source env.sh
Then the $PATH and libraries should then default to your new install of mono-2.10. Take a peek at this post I did recently about configuring MVC3. It talks briefly about doing this to enable the custom install in Apache2 or in command line for xsp.
Great! Thank you for that script. One of your previous pages (Mono 2.10.1 Install Script for Ubuntu & Fedora) mentioned MonoSetEnv, so it lead me in the right direction, but I don’t have any Apache with mod_mono running (yet), and I could not find the necessary info. Again, thanks a lot for this
export MONO_IOMAP=all can also be a good thing to have in that env.sh script optionally.
@Rdunzl You bet!
@Nathan
I am on ubuntu 10
and installing mono right now its been installing for a WHILE now… is that normal?
does it support Visual Basic .NET written on windows Visual studio 2010?
How do you compile VBnet source using mono?
@ConfusedMan
Sometimes it does take awhile. Did you have any luck with the install?
Here’s some info about the VB.NET compiler on the Mono website. You may have to download the “mono-basic” package and build that as well if you want to compile on Mono. Otherwise, the mono runtime should handle Visual Studio built VB.NET just the same as C#.
Hi Nathan,
Thanks for your install scripts.
For those who received this error while building mono-debugger:
Metadata file `Mono.Debugger.Test.Framework.dll’ could not be found
Don’t build with multiple jobs.
I usually change the make line to make -j 4 to speed up building which caused the error.
Thanks @Marv!
Quick update – I plan on refactoring these scripts a little once the Xamarin folks figure out where they’re hosting their new builds. I’ll either decide to make the scripts build from GitHub directly or consume the builds they provide.
Miguel’s recent tweet on upcoming Mono 2.12
Hi, I might be losing my mind, but it seems like when I ran this script in the past, I was able to get the F# tools as well. Has something changed? Would appreciate any pointers on how to get F# working without having to download the ZIP from the F# or Codeplex site.
@George T. I’m not sure. I’ve never really specifically paid close attention to the F# components. This post is titled 2.10.2, so the script hasn’t changed. If you were using 2.10.1, or 2.10.0, then it’s possible something changed. I suppose it might also be possible they change the hosted build packages, but I’m unaware of those kind of changes. Thanks
This message came
239 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Need to get 318 MB of archives.
After this operation, 27.8 MB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
dpkg libpam0g libpam-modules-bin libpam-modules ntpdate libcups2 libcupscgi1
libcupsdriver1 libcupsimage2 libcupsmime1 libcupsppdc1 libxml2 libpoppler13
poppler-utils cups-common cups-bsd cups-client cups-ppdc cups
foomatic-filters libgp11-0 libgcr0 dbus dbus-x11 gnome-keyring libnss3-1d
libnss3 ca-certificates libcurl3 language-pack-en language-pack-en-base
language-pack-gnome-en language-pack-gnome-en-base libbamf0 bamfdaemon
gnome-user-guide ubuntu-docs ure uno-libs3 python-glade2 python-gobject
python-gtk2 ubuntu-sso-client apt libpam-runtime tzdata apt-utils
isc-dhcp-client isc-dhcp-common logrotate sudo initramfs-tools
initramfs-tools-bin plymouth-label plymouth libplymouth2 dnsutils bind9-host
libisc62 libdns69 libisccc60 libisccfg62 liblwres60 libbind9-60
python-apt-common python-apt aptdaemon-data python-aptdaemon-gtk
python-aptdaemon.gtk3widgets python-aptdaemon.gtkwidgets aptdaemon
python-aptdaemon language-selector-gnome language-selector-common
libcurl3-gnutls plymouth-theme-ubuntu-text python-gobject-cairo
update-manager-core update-manager app-install-data python-problem-report
python-apport apport apport-gtk apt-transport-https libgstreamer0.10-0
glib-networking libsoup2.4-1 libsoup-gnome2.4-1 libgpod4 banshee
banshee-extension-soundmenu banshee-extension-ubuntuonemusicstore binutils
libnux-0.9-0 libnux-0.9-common libdbusmenu-glib3 compiz-plugins-main
compiz-gnome compiz-plugins compiz-core unity unity-common nux-tools
libdecoration0 librsvg2-common librsvg2-2 compiz dpkg-dev libdpkg-perl
telepathy-logger libtelepathy-logger2 nautilus-sendto-empathy empathy
empathy-common libpoppler-glib6 libevdocument3 libevview3 evince-common
evince file-roller libdbusmenu-gtk3 firefox-globalmenu firefox
firefox-gnome-support foo2zjs gnome-session-bin libpanel-applet-3-0
gnome-panel-data gnome-panel libpanel-applet2-0 gnome-session
gnome-power-manager gnome-session-common gdm gir1.2-panelapplet-3.0
gir1.2-soup-2.4 gnome-nettool gnome-panel-bonobo gstreamer0.10-tools
libgvfscommon0 gvfs-fuse winbind libwbclient0 smbclient samba-common
libsmbclient gvfs-backends gvfs gwibber gwibber-service
gwibber-service-facebook gwibber-service-identica gwibber-service-twitter
libavformat52 libgpod-common libmodplug1 overlay-scrollbar
liboverlay-scrollbar-0.1-0 libpam-gnome-keyring libpostproc51
libqt4-sql-sqlite libqt4-sql libqt4-script libqt4-opengl libqt4-network
libqt4-dbus libqtcore4 libqt4-gui libqt4-svg libqtgui4 libqt4-designer
libqt4-xml libreoffice-calc libreoffice-impress libreoffice-draw
libreoffice-gtk libreoffice-gnome python-uno ttf-opensymbol libreoffice-math
libreoffice-style-human libreoffice-common libreoffice-writer
libreoffice-base-core libreoffice-core libreoffice-emailmerge
libreoffice-help-en-us libsndfile1 libswscale0 libvlccore4 vlc-data libvlc5
libxfont1 libxml2-utils linux-libc-dev nautilus-sendto
plymouth-theme-ubuntu-logo python-cupshelpers python-libxml2 python-papyon
python-ubuntuone-storageprotocol samba-common-bin software-center
system-config-printer-common system-config-printer-gnome
system-config-printer-udev udisks unity-place-applications unity-place-files
vlc-plugin-pulse vlc-plugin-notify liblircclient0 vlc vlc-nox x11-common
xserver-common xserver-xorg-core xserver-xorg-video-radeon
xserver-xorg-video-ati xserver-xorg-video-intel xserver-xorg-video-all
xserver-xorg-input-synaptics xserver-xorg-input-all xserver-xorg xorg
xul-ext-ubufox ubuntuone-control-panel-gtk ubuntuone-control-panel
python-ubuntuone-control-panel shotwell
E: There are problems and -y was used without –force-yes
———————————-
What would be the problem
Thanks @Vinod!
I’m looking at the man file for apt-get. Here’s what I see:
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts and
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
--force-yes
Force yes; This is a dangerous option that will cause apt to
continue without prompting if it is doing something potentially
harmful. It should not be used except in very special situations.
Using force-yes can potentially destroy your system! Configuration
Item: APT::Get::force-yes.
I think for now, I’ll maintain just the “-y” option. If this is a new install, it’s a good idea to try and do your update/upgrade first before running this script. I put the update call in there just to catch myself for my server installs.
It may be a good idea to first do a
apt-get dist-upgrade -yfirst to force a full upgrade. This will ensure downloading the latest packages across the board. Sometimes installed components hold back certain dependencies for new packages. dist-upgrade forces all new packages to be upgraded.Hope that helps!
Hey Nathan,
First, I want to say thanks for taking the time to make these scripts.
Unfortunately, I’m not having much luck with them… they run without errors, but the versioning on Mono post-script looks off, reads v2.6.7.
Running:
wget –no-check-certificate https://github.com/nathanb/iws-snippets/raw/master/mono-install-scripts/ubuntu/install_mono-2.10.sh
Yields:
root@david-ubuntu:/home/david/Downloads/mono-2.10# mono -V
Mono JIT compiler version 2.6.7 (Debian 2.6.7-5ubuntu3)
Copyright (C) 2002-2010 Novell, Inc and Contributors. http://www.mono-project.com
TLS: __thread
GC: Included Boehm (with typed GC and Parallel Mark)
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
I’ve also been unable to run ASP 4.0 apps on Apache after using the scripts (for first-time setup), as the version of ModMono appears to be running in Mono 2.6.7/ASP 2.0 [ASP errors thrown with "Version information: Mono Runtime Version: 2.6.7 (Debian 2.6.7-5ubuntu3); ASP.NET Version: 2.0.50727.1433"]
Any suggestions you might be able to toss my way would be much appreciated! Thanks again for the scripts!