Cycle 8: Mono 4.6.0.245 for Linux, and MonoDevelop 6 Test Release September 24th, 2016
This post is about the latest Mono release, and its availability for older Linux distributions.
Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin.
I am building Mono packages for older Linux distributions, and some constellations not supported by Xamarin.
Here are the Mono 4.6.0.245 packages for CentOS and Fedora:
- For CentOS 7 and CentOS6 see https://copr.fedoraproject.org/coprs/tpokorra/mono/
- For CentOS 7 32 bit see https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt#master_centos/7/i686
- Fedora Rawhide already has Mono 4.6.0.245
- For Fedora 23, 24 and 25: https://copr.fedoraproject.org/coprs/tpokorra/mono/
Here is the list of Mono 4.6.0.245 installed to /opt, for various Linux distributions:
- for Debian7, Debian8, Ubuntu 14.04, Ubuntu 16.04, OpenSUSE 13.1 and OpenSUSE 13.2: https://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt
- for CentOS5, CentOS6, and CentOS7: https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/
For a summary of packages that I maintain for Mono, see also https://github.com/tpokorra/lbs-mono/wiki
A short status update on MonoDevelop 6:
- It seems that Jo Shields has given up on building rpm packages of MonoDevelop, and Xamarin will now provide a flatpak installation for MonoDevelop 6: https://github.com/mono/md-website/pull/54/files
- I am building my own tarball at https://lbs.solidcharity.com/package/tpokorra/mono/monodevelop-tarball. It is currently probably too big, but I download all referenced packages from nuget and include them in the tarball.
- I have made some progress building MonoDevelop 6 for Fedora. At the moment, I have disabled FSharp (cannot build it with xbuild IIRC), and code analysis as well, due to missing .NET portable reference assemblies (they are trying to open source them). https://copr.fedorainfracloud.org/coprs/tpokorra/monodevelop-alpha/ If you have a chance to test it, please let me know if that would work for you, and if I should replace MonoDevelop 5.10 with that build of MonoDevelop 6.
Cycle 7: Mono 4.4.0.182 for Linux, no MonoDevelop 6 yet June 15th, 2016
This post is about the latest Mono release, and its availability for older Linux distributions.
Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin. The Xamarin packages have not been updated yet, due to migration to a new Jenkins server.
I was not able yet to package MonoDevelop 6:
- One reason is that there is no tarball yet. I have attempted to build one, at https://lbs.solidcharity.com/package/tpokorra/mono/monodevelop-tarball, but it seems it is missing the contents of the “external” directory.
- The other reason are more dependancies, eg fsharp and NUnit3. See also https://bugzilla.redhat.com/show_bug.cgi?id=1313236 for the packaging of MonoDevelop6 for Fedora.
But here are the Mono 4.4.0.182 packages for CentOS and Fedora:
- For CentOS 7 and CentOS6 see https://copr.fedoraproject.org/coprs/tpokorra/mono/
- For CentOS 7 32 bit see https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt#master_centos/7/i686
- Fedora Rawhide already has Mono 4.4.0.182
- For Fedora 22, 23 and 24: https://copr.fedoraproject.org/coprs/tpokorra/mono/
Here is the list of Mono 4.4.0.182 installed to /opt, for various Linux distributions:
- for Debian7, Debian8, Ubuntu 14.04, Ubuntu 16.04, OpenSUSE 13.1 and OpenSUSE 13.2: https://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt
- for CentOS5, CentOS6, and CentOS7: https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/
For a summary of packages that I maintain for Mono, see also https://github.com/tpokorra/lbs-mono/wiki
Cycle 6: Mono 4.2.1 and MonoDevelop 5.10.0 for Linux November 30th, 2015
This post is about the latest Mono release, and its availability for older Linux distributions.
Thankfully, Xamarin provides Mono packages for the most current Linux distributions at http://www.mono-project.com/download/#download-lin
I used to build mono-opt for Debian, Ubuntu, CentOS, Fedora and OpenSUSE, since July 2013 (see http://lists.ximian.com/pipermail/mono-list/2013-July/050114.html).
The long-term goal has always been to get Mono integrated directly into the Linux distributions. Therefore I decided to get involved with Fedora and CentOS, which I use for most of my servers.
As a result, we now have Mono 4.0.5 and MonoDevelop 5.9 in Fedora 23, and we (Claudio and myself) are working on getting Mono 4.2 and MonoDevelop 5.10 into Fedora 24. The next step would be to get Mono updated in Epel as well, so that you can use uptodate packages of Mono on CentOS too.
I am glad to see that things are happening on the Debian side as well, with Mono 4.2.1 in the experimental branch: https://packages.debian.org/search?keywords=mono-complete
OpenSUSE has Mono 4.0.4 in Leap 42.1: https://software.opensuse.org/package/mono-complete
So things are looking good!
I decided to use the infrastructure of the Fedora project for the CentOS mono-opt packages. You can find uptodate Mono and MonoDevelop packages for CentOS6 and CentOS7 at https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/. There are also Mono packages for CentOS5, but no MonoDevelop for CentOS5.
This replaces the mono-opt packages for CentOS5 at https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt which I will not be maintaining anymore over there.
For Fedora users, Claudio and myself do maintain a repository with the latest Mono and MonoDevelop here: https://copr.fedoraproject.org/coprs/tpokorra/mono/
For Ubuntu 12.04, Mono llvm does not build anymore, because it requires GCC with at least version 4.7. At the moment I don’t have a reason to build Mono and MonoDevelop for Ubuntu 12.04 anymore. I will also not build packages for Ubuntu non-LTS releases. If you need it, email me, and we can discuss.
So here are the updated packages:
- Mono 4.2.1 for CentOS5, CentOS6, and CentOS7: https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/
- MonoDevelop 5.10 for CentOS6, and CentOS7: https://copr.fedoraproject.org/coprs/tpokorra/mono-opt/
- Mono 4.2.1 and MonoDevelop 5.10 for Fedora 22, Fedora 23 and Rawhide: https://copr.fedoraproject.org/coprs/tpokorra/mono/
- Mono 4.2.1 and MonoDevelop 5.10 for Debian7, Debian8, Ubuntu 14.04, OpenSUSE 13.1 and OpenSUSE 13.2: https://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt
MonoDevelop and xterm console output October 8th, 2015
There was a question on the mono IRC about how to Copy&Paste from a Console window when running a console application from within MonoDevelop.
I tried to reproduce that, and first got the error:
cannot execute … File name has not been set
The answer is that you have to install the xterm package. See http://stackoverflow.com/questions/21834612/how-does-one-set-the-filename-in-monodevelop
Actually, here is the source that determines which terminal to use: https://github.com/mono/monodevelop/blob/master/main/src/addins/GnomePlatform/GnomePlatform.cs#L305
So it tries gnome-terminal, mate-terminal and konsole, depending on the environment variables for the desktop (GNOME_DESKTOP_SESSION_ID, MATE_DESKTOP_SESSION_ID, or KDE_SESSION_VERSION). If that fails, it falls back to xterm.
I am using XFCE4, and MonoDevelop falls back to xterm.
Copy&Paste in xterm works like this: just select the text, and then focus the application where you want to paste the text, and hit the middle mouse button. see also http://askubuntu.com/a/237947/194547
Mono 3.12.1 for various Linux distributions and recommendation of Xamarin MonoDevelop packages March 11th, 2015
First I want to say Thanks to Xamarin for providing packages now for Linux again. I am personally using the Mono packages from Xamarin for CentOS7, and the MonoDevelop package for Ubuntu from Xamarin.
I have decided I will not build my own MonoDevelop packages anymore, since the Xamarin packages are sufficient.
There are also some issues that I could not figure out, so at the moment my MonoDevelop packages on OBS do not build at all. I have no intention to fix them, because there is no need for them.
For example, to install the latest MonoDevelop on Ubuntu, you can follow these instructions (see also http://www.monodevelop.com/download/linux/#debian-ubuntu-and-derivatives):
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list apt-get update apt-get install monodevelop monodoc-browser |
I also wanted to stop building the Mono packages for various Linux distributions, but there are issues for CentOS6 with libgdiplus and libpng15 with the Xamarin packages (http://lists.ximian.com/pipermail/mono-list/2014-October/051241.html), so I will keep providing Mono packages at the moment.
The latest Mono packages for 3.12.1 are available according to the instructions at http://software.opensuse.org/download.html?project=home%3Atpokorra%3Amono&package=mono-opt
I have added packages for Fedora 21 there recently.
I have also worked on getting Mono 3.12.1 built for CentOS5. This required to use a newer GCC than is available on CentOS5. This meant I cannot build it on OBS since it is not allowed to link in different repositories. Obviously I could try to build a newer GCC on OBS as well, but then it becomes more and more complicated, and others have done this work already (http://people.centos.org/tru/devtools-2/readme)
The solution now works with my own LightBuildServer, and the result can be seen here: https://lbs.solidcharity.com/package/tpokorra/mono/mono-opt
If you want to build Mono on your own LBS, let me know, and I will improve the installation instructions for the LBS. All the code is public already, at https://github.com/SolidCharity/LightBuildServer/
The sources for the RPM packages are maintained here: https://github.com/tpokorra/lbs-mono/tree/master/mono-opt
If you need some paid assistance with Mono packages for your distribution, please contact me via ODesk: https://www.odesk.com/o/profiles/users/_~01e826605fea50faae/
Mono 3.10 and MonoDevelop 5.4/5.5 for Linux October 4th, 2014
With the recent release of Mono 3.10 (http://www.mono-project.com/docs/about-mono/releases/3.10.0/), I also announce that my packages for CentOS, Fedora, OpenSUSE, Debian and Ubuntu have finished building.
You can install Mono 3.10 following the instructions at: http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt
To run mono, you have to load some environment variables first:
. /opt/mono/env.sh mono --version
There are also other packages available:
- XSP: http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-xsp-opt
- mod_mono: http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mod_mono-opt (RPM) and http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=modmono-opt (for Debian and Ubuntu)
- Mono Basic: http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-basic-opt
- Mono Tools: http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-tools-opt
And there are new packages for MonoDevelop as well:
I have just finished the work on the latest MonoDevelop packages.
Quite a bit has changed in the build process, so it needed some work to make the build from tarball finish successfully again.
See this thread on the mailinglist: http://lists.ximian.com/pipermail/monodevelop-list/2014-May/016077.html
I have updated the packages at
https://build.opensuse.org/
MonoDevelop 4.2.5:
http://software.opensuse.org/
MonoDevelop 4.3.4:
http://software.opensuse.org/
MonoDevelop 5.1 (nightly build from this morning):
http://software.opensuse.org/
By the way, I am working on a new project called LightBuildServer, which is a very light-weight alternative to OBS.
see http://lightbuildserver.org
Install MonoDevelop on OpenSUSE remote workstation December 19th, 2013
My testing environment is a workstation running on a JiffyBox, using X2Go
Here are the steps that I use to setup my machine with OpenSUSE 12.3:
zypper install -t pattern kde4 kde4_basis findutils-locate |
Install X2Go as described here:
zypper addrepo http://download.opensuse.org/repositories/X11:RemoteDesktop:x2go/openSUSE_12.3/X11:RemoteDesktop:x2go.repo zypper refresh zypper install x2goserver |
Then I run these commands so that the login works with a password:
/etc/init.d/x2gocleansessions start sed -i "s/PasswordAuthentication .*/PasswordAuthentication yes/g" /etc/ssh/sshd_config /etc/init.d/sshd start useradd myusername -m passwd myusername |
To install the latest MonoDevelop, follow these instructions:
zypper addrepo http://download.opensuse.org/repositories/home:tpokorra:mono/openSUSE_12.3/home:tpokorra:mono.repo zypper refresh zypper install monodevelop-opt |
Now I had the problem that MonoDevelop did not start.
I tried everything:
. /opt/mono/env.sh cd /opt/monodevelop/lib/monodevelop/bin strace MONO_LOG_LEVEL=debug mono -O=-aot MonoDevelop.exe |
but no error message that I would understand.
Then I tried running monodoc, and this finally gave an error that I could understand:
The program 'browser' received an X Window System error. This probably reflects a bug in the program. The error was 'BadValue (integer parameter out of range for operation)'. (Details: serial 131 error_code 2 request_code 25 minor_code 0) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.) |
This lead me to this bug report: https://bugs.eclipse.org/bugs/show_bug.cgi?id=386955 which mentions X2Go. At the end of that bug, it says that a specific version of Cairo does not support old XRenderers anymore. It has been fixed in version http://www.cairographics.org/news/cairo-1.12.10/
To build and install that version of Cairo, I followed these steps:
wget http://www.cairographics.org/releases/cairo-1.12.16.tar.xz tar xf cairo-1.12.16.tar.xz cd cairo-1.12.16 zypper install gcc libpng-devel libpixman-1-0-devel make libX11-devel libXrender-devel libXext-devel libXt-devel fontconfig-devel ./configure --prefix=/usr --enable-xlib make make install |
Now MonoDevelop and monodoc start fine on OpenSUSE over a remote connection via X2Go.
Building the latest Mono and MonoDevelop on OBS December 4th, 2013
In this blog post, I want to describe some of the workarounds I need to do to release the latest mono and monodevelop packages on OBS.
For more details on this project from a using perspective, see:
Easy installation of current Mono and MonoDevelop for all major Linux Distributions
The download of the source files is specified in the _service file, eg. https://build.opensuse.org/package/view_file/home:tpokorra:mono/mono/_service?expand=1
The problem is that sometimes the tarballs are not available on http://download.mono-project.com/sources/mono or http://download.mono-project.com/sources/monodevelop, especially for the Alpha releases.
As long as you can find a tagged release at Github, you can build your own tarball (eg. on CentOS):
Preparations:
wget -O /etc/yum.repos.d/home:tpokorra:mono.repo http://download.opensuse.org/repositories/home:tpokorra:mono/CentOS_CentOS-6/home:tpokorra:mono.repo yum install git-core automake autoconf libtool tar which gcc-c++ gettext mono-opt bzip2 |
For Mono:
git clone https://github.com/mono/mono.git cd mono git checkout -b tarball mono-3.2.5 ./autogen.sh . /opt/mono/env.sh make dist |
And for MonoDevelop:
git clone https://github.com/mono/monodevelop.git cd monodevelop git branch tarball monodevelop-4.3.0 git checkout tarball . /opt/mono/env.sh ./configure make dist |
I have uploaded the resulting tarballs to http://download.pokorra.de/mono/tarballs/, and my _service files are now referencing that location if the official source directory is missing the tarball or the tarball is broken.
Easy installation of current Mono and MonoDevelop for all major Linux Distributions December 4th, 2013
This blog post is a repeat of an email that I sent to the Mono mailing list back in July 2013:
http://lists.ximian.com/pipermail/mono-list/2013-July/050114.html
The problem is that there are no recent packages for the major Linux distributions offered at http://www.go-mono.com/mono-downloads/download.html and http://monodevelop.com/Download
I personally use Mono and MonoDevelop for developing and deploying OpenPetra, an open source accounting and contact management system for charities and missions organisations.
I am using the OBS (Open Build Service) from build.opensuse.org to build recent packages of Mono and MonoDevelop for the Linux distributions CentOS, Fedora, Debian, Ubuntu, and openSUSE.
The installation for MonoDevelop is documented here:
http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=monodevelop-opt
This will install Mono as well.
I also have builds of the Beta and the Alpha versions of MonoDevelop.
If you only want to install Mono, see here:
http://software.opensuse.org/download/package?project=home:tpokorra:mono&package=mono-opt
There are also packages for mono-xsp, mod_mono and mono-tools (including monodoc).
Package mono-libgdiplus makes sure that the libgdiplus is linked properly, which is important for GUI applications.
Since you have the right repo from installing Mono already, you can just run this:
#for RPM based distros: yum install mono-libgdiplus-opt mod_mono-opt mono-xsp-opt mono-tools-opt |
or (please note slightly different name for mod_mono-opt, somehow Debian does not like the underscore in the package name…)
#for Debian based distros: apt-get install mono-libgdiplus-opt modmono-opt mono-xsp-opt mono-tools-opt |
MonoDevelop and Mono (and the other mono specific packages) will be installed to /opt to avoid conflict with the Mono version that comes with your Linux distribution.
To run this Mono on the command line, you can add this line to your .bash_profile file:
. /opt/mono/env.sh
If you are interested in the way how the packages are built, have a look here: https://build.opensuse.org/project/show/home:tpokorra:mono