Most probably haven't noticed yet but I finished the Mono 2.10.1 debian packaging effort of the past 3 months and uploaded it to Debian/Experimental.
With Mono 2.10 I had to make the biggest changes in Mono packaging since the big Mono 2.0 upload. The runtime no longer supports the 1.0 and 2.0 runtime profile, instead it now supports the 2.0 and 4.0 runtime profile. This meant I had to drop all libmono1.0-cil packages and add libmono4.0-cil packages. This sounds like a lot of s/1.0/4.0/ work but it actually wasn't. Mono 2.10 ships a lot of new libraries over 2.6 and I had again to decide where they should go. "Where should this $library go?" I have been playing this game for the past 7 years maintaining Mono and I finally gave up on it... What, where, when, why? I could give now a 2 hours talk of the issues behind the current packaging approach (keeping the number of library packages low) but instead I will do something else. Please, just take a look at this picture for a second:
If your browser crashed, your eyes hurt or your brain simply melted, I think you have got the idea.
The Big Split
The cure? cli-common-dev! This is a package that contains 2 extremely important debhelper packaging tools for packaging Mono/CLI related packages called dh_makeclilibs and dh_clideps. If you don't know these, they do exact the same thing as dh_makeshlibs and dh_shlibdeps do. dh_makeclilibs generates library dependency tracking information and dh_clideps consumes that information to automatically generate the package dependencies for you. So each library of the 4.0 runtime profile has now it's own package, simple as that, the rest does cli-common-dev for me and you.
"Hey, that Mono packaging bastard is polluting the Debian archive because of his laziness!" No, I am not. This packaging change not only has the advantage of simplifying the packaging and with that bringing new Mono versions faster to you but also reduces the typical install size for applications as they will only pull in the really used libraries of Mono instead of groups of them. I don't have any numbers handy right now as none of the applications are built against Mono 2.10 (yet), but when the transition starts we will get numbers.
New Features
There is also a new SGen flavor of Mono available called mono-runtime-sgen which is no longer using the conservative non-generational Boehm's garbage collector but SGen which is a simple generational garbage collector with promising advantages.
And here some more Mono 2.8/2.10 news from /usr/share/doc/mono-runtime/NEWS.Debian.gz:
- SGen Precise Stack Scanning
- Enhanced SIMD with new methods for Vector data type conversions and swapping elements in vectors
- ASP.NET MVC 3.0 (not included, only supported)
- The C# Interactive Shell can now be used as shebang: #!/usr/bin/csharp
- .NET 4.0 runtime
- C# 4.0 compiler
- ASP.NET 4.0
- Managed Extensibility Framework (MEF)
- System.Data.Services.Client (OData)
- glib was replaced with eglib
- Removed .NET 1.1 runtime
Architecture Regressions
With the initial upload of Mono 2.10.1 to Debian/Experimental the architecture
world broke apart and it regressed on all Mono architectures except for
i386 and amd64
There is a reason it's called experimental isn't there?
In mono 2.10.1-3 I could solve all regressions except for kfreebsd-* and armel. Jo Shields fixed the remaining regressions and the world started to look good again in mono 2.10.1-4! He also took care of mono-basic, mod-mono and xsp, but mod-mono and xsp are still waiting for the translation call deadline to pass by so they can also be uploaded to Debian/Experimental.
Planned Transition
As mentioned above, there will be a Mono 2.10 transition needed when the packages hit Debian/Unstable. There is no ETA yet on this when it will happen as I have to coordinate this with debian-release first. But as things are not showtime ready in experimental anyhow, this will not happen too soonish. The Mono 2.10 transition plan will be covered in a following post.
GIVMENOWPLX
OMG, all this rumbling about Mono 2.10 and I still haven't said a word on how to obtain it, sorry about this, just do this and I will shut up now:
echo "deb http://ftp.debian.org/debian experimental main" >> /etc/apt/sources.list
apt-get update
apt-get install -t experimental mono-complete
apt-get install libmono-addins0.2-cil libmono-addins-gui0.2-cil
(this is the easiest way of getting only mono 2.10.1 from experimental)
Update: mono-addins 0.4 breaks with mono 2.10.1 so you need to make sure you have the 0.6 version from Debian/Unstable installed!


My X crashed when loading the picture (yeas, for real).
@meebey, I tried the instruction on my Ubuntu 11.04 box but I hit by this warning W: GPG error: http://ftp.debian.org experimental InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY AED4B06F473041FA how can I pass this warning?
Are you planning to add fsharp packages to the repository? Today I've found that fsharp .deb package downloadable from here conficts in vesion with mscorlib.dll. So I've recompiled F# and it works!
The big problem is to compile F# PowerPack for mono, but it is an another story...
I tried this on clean squeeze x64 but got broken packages error below.
How to install ?
apt-get install –reinstall mono-complete monodevelop mono-devel -t experimental Reading package lists… Done Building dependency tree Reading state information… Done 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: mono-complete : Depends: mono-1.0-devel (= 2.6.7-5) but it is not going to be i nstalled Depends: mono-2.0-devel (= 2.6.7-5) but it is not going to be i nstalled Depends: monodoc-base (= 2.6.7-5) but it is not going to be ins talled Depends: libmono-cil-dev (= 2.6.7-5) but it is not going to be installed mono-devel : Depends: libmono-system-data-linq2.0-cil (>= 1.0) but it is not go ing to be installed Depends: libmono-system-runtime1.0-cil (>= 1.0) but it is not goin g to be installed Depends: libmono-system-web1.0-cil (>= 1.0) but it is not going to be installed Depends: libmono-system-web2.0-cil (>= 1.9.1) but it is not going to be installed Depends: libmono-wcf3.0-cil (>= 2.6.3) but it is not going to be i nstalled Depends: libmono2.0-cil (>= 2.6.3) but it is not going to be insta lled Depends: mono-2.0-devel (= 2.6.7-5) but it is not going to be inst alled Depends: libmono-cil-dev (= 2.6.7-5) but it is not going to be ins talled monodevelop : Depends: libcairo2 (>= 1.8.0-2) but it is not going to be install ed Depends: libglade2.0-cil (>= 2.12.10) but it is not going to be i nstalled Depends: libgnome-vfs2.0-cil (>= 2.24.0) but it is not going to b e installed Depends: libgnome2.24-cil (>= 2.24.0) but it is not going to be i nstalled Depends: libgtk2.0-0 (>= 2.20.0) but it is not going to be instal led Depends: libgtk2.0-cil (>= 2.12.10) but it is not going to be ins talled Depends: libgtkspell0 but it is not going to be installed Depends: libmetacity-private0 (>= 1:2.26.0) but it is not going t o be installed Depends: libmono-addins-gui0.2-cil (>= 0.4) but it is not going t o be installed Depends: libmono-cairo2.0-cil (>= 2.4) but it is not going to be installed Depends: libmono-system-runtime2.0-cil (>= 2.4) but it is not goi ng to be installed Depends: libmono-system-web2.0-cil (>= 1.9.1) but it is not going to be installed Depends: libmono-wcf3.0-cil (>= 2.6.3) but it is not going to be installed Depends: libmono-winforms2.0-cil (>= 2.4) but it is not going to be installed Depends: libpango1.0-0 (>= 1.25.5) but it is not going to be inst alled Depends: monodoc-base (>= 1.0) but it is not going to be installe d Depends: gnome-icon-theme (>= 1.1.3) but it is not going to be in stalled Depends: xterm but it is not going to be installed or x-terminal-emulator Recommends: libgtk2.0-cil-dev but it is not going to be installed Recommends: libglade2.0-cil-dev but it is not going to be install ed E: Broken packages
/etc/apt/sources.list :
deb http://ftp.de.debian.org/debian squeeze main contrib non-free deb http://ftp.de.debian.org/debian-security squeeze/updates main contrib non-free
deb http://backports.debian.org/debian-backports squeeze-backports main deb http://ftp.debian.org/debian experimental main
output from apt-get update:
Hit http://ftp.de.debian.org squeeze Release.gpg Ign http://ftp.de.debian.org/debian/ squeeze/contrib Translation-en Ign http://ftp.de.debian.org/debian/ squeeze/contrib Translation-et Ign http://ftp.de.debian.org/debian/ squeeze/main Translation-en Ign http://ftp.de.debian.org/debian/ squeeze/main Translation-et Ign http://ftp.de.debian.org/debian/ squeeze/non-free Translation-en Ign http://ftp.de.debian.org/debian/ squeeze/non-free Translation-et Hit http://ftp.de.debian.org squeeze/updates Release.gpg Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/contrib Translation-en Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/contrib Translation-et Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/main Translation-en Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/main Translation-et Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/non-free Translation-en Ign http://ftp.de.debian.org/debian-security/ squeeze/updates/non-free Translation-et Hit http://ftp.de.debian.org squeeze Release Hit http://ftp.de.debian.org squeeze/updates Release Hit http://ftp.debian.org experimental Release.gpg Hit http://ftp.debian.org/debian/ experimental/main Translation-en Ign http://ftp.debian.org/debian/ experimental/main Translation-et Hit http://ftp.de.debian.org squeeze/main amd64 Packages Hit http://ftp.de.debian.org squeeze/contrib amd64 Packages Hit http://ftp.de.debian.org squeeze/non-free amd64 Packages Hit http://ftp.debian.org experimental Release Hit http://ftp.debian.org experimental/main amd64 Packages/DiffIndex Hit http://ftp.de.debian.org squeeze/updates/main amd64 Packages Hit http://ftp.de.debian.org squeeze/updates/contrib amd64 Packages Hit http://ftp.de.debian.org squeeze/updates/non-free amd64 Packages Reading package lists… Done
Can I use MonoDevelop after I install this? I get the error 'Error: Dependency is not satisfiable: mono-runtime (>= 2.10.1)' when I run it, after I installed your package. I would assume your package installs .NET 2.x and above runtimes. I am a NEWBIE to linux an mono fyi. How can I get what version of .NET I have in installed?
thx Ralph