Introduction

Shortcut
If you are only interested in running EVEMon on linux (or any other *nix that mono supports), there is a much easier way to do this described in EVEMonoNightlySnapshots .

Description
This HowTo describes the complete process that is required to get EVEMon running on Ubuntu 7.10 using a patched mono version. (This HowTo works well for building EVEMon on Ubuntu 8.04 Alpha 6 as well).
I have chosen to use a parallel mono environment, which will make sure that you don't break your Ubuntu's mono and software.

About EVEMon on Linux
Basic functionality exists: you can add characters and create plans, but there are several other bugs that occur. If you are expecting a flawless EVEMon experience, I suggest you use a windows version for now. On the other hand, running EVEMon on Linux is just cool, so why not try it? :)

Instructions

Mono 1.2.6

Preparing Ubuntu
First we will need to make sure that Ubuntu´s mono is completely installed. Also we install Ubuntu's monodevelop so we have all the required dependencies for it when we compile the newer version. And we ofcourse need some dependencies for the compile process. It's possible some of it is a bit overdone, but this way it compiled without problems.

sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get install build-essential mono monodevelop libmono* mono-mcs mono-gmcs libgdiplus gawk gtk-sharp2 bison subversion

Setting up the parallel environment
The patched mono version will be installed in /opt/mono. To use a parallel enviroment we need to create a file that sets up this environment
Create a bash script named something like /opt/mono-1.2.6-patched-env. Its contents should be similar to the following:

#!/bin/bash
MONO_PREFIX=/opt/mono
GNOME_PREFIX=/usr
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
export MONO_GAC_PREFIX=/opt/mono:/usr
PATH=$MONO_PREFIX/bin:$PATH
PS1="[mono] \w @ "

Entering the parallel environment
Whenever we later on want to use the parallel mono environment we should execute:

source /opt/mono-1.2.6-patched-env

Until we close that shell, it will be in the parallel environment. When the patched mono will be installed, the shell will use that mono instead of the Ubuntu version.
You can always see in what environment you are because of the prefix.

Now enter the parallel environment before continuing

Downloading and patching Mono 1.2.6
I will use ~/Downloads as my Downloads directory. Replace references to it with your own download dir.

First create the file ~/Downloads/mono-1.2.6-ScrollBar.cs.evemonpatch and let the content be:

--- mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollBar.cs	2008-02-09 12:15:27.000000000 +0100
+++ mcs/class/Managed.Windows.Forms/System.Windows.Forms/ScrollBar.cs.patched	2008-02-09 12:18:24.000000000 +0100
@@ -394,6 +394,9 @@
 					return large_change;
 			}
 			set {
+				if (value < 0) {
+					value = 0;
+					}
 				if (value < 0)
 #if NET_2_0
 					throw new ArgumentOutOfRangeException ("LargeChange", string.Format ("Value '{0}' must be greater than or equal to 0.", value));

Enter your download dir and download and extract mono-1.2.6

wget -c http://go-mono.com/sources/mono/mono-1.2.6.tar.bz2 
tar -jxvf mono-1.2.6.tar.bz2

Enter the mono directory and patch mono with the patch file you just created :

cd mono-1.2.6
patch -p0 < ~/Downloads/mono-1.2.6-ScrollBar.cs.evemonpatch

If no errors were shown, we can now compile and install the patched mono.

Configuring and compiling mono

./configure --prefix=/opt/mono

If no errors with configuring, start compiling. (This will take some time. On a Core2Duo E6400 it took 20 minutes)

make

If no errors with compiling, install the compiled mono.

sudo make install

Testing the parallel mono
We have now installed a parallel patched mono. To test if it indeed is working, open up a new terminal and enter:

mono --version (this should be 1.2.4, since this is the Ubuntu standard mono)

Now enter the parallel environment and check again:

source /opt/mono-1.2.6-patched-env
mono --version (this should be 1.2.6)

Compiling EVEMon

The Ubuntu MonoDevelop will work with the parallel environment, but it can't be started directly with /usr/bin/monodevelop. Enter the following command to run monodevelop with the patched mono. (Ofcoure, also here: make sure you are in the parallel env --> this applies to the whole guide, so I won't mention it anymore)

mono /usr/lib/monodevelop/bin/MonoDevelop.exe

Downloading and patching EVEMon SVN
We will download a specific revision of EVEMon SVN, and apply a patch to it, so it will compile with mono. It is of course possible to download the latest revision of EVEMon and patch it yourself manually, but this way we can make sure that the patch always works.
The revision used here is the most recent one at this date (9 feb 2008).

Checkout EVEMon from svn:

svn co -r 1156 svn://evemon.battleclinic.com/EVEMon/EVEMon/trunk evemon

Download the patch (also see end of page) and extract it to your Downloads folder:

tar -zxvf evemon-r1156.mono-patch.tar.gz

Apply the patch:

cd evemon

patch -p1 < ../evemon-r1156.mono-patch

Compiling EVEMon
Start monodevelop:

mono /usr/lib/monodevelop/bin/MonoDevelop.exe

Open the solution named: MONO_EVEMonCSharp.sln in the evemon folder.

Select instead of "Debug|x86", "Release|X86" in the MonoDevelop taskbar.

Right-click "Solution MONO_EVEMonCSharp" in the Solution Window, and select "Build MONOEVEMonCSharp"
It should now compile without giving errors, only with some warnings.

If you get errors about missing "designer" files, run the following in the evemon folder:

mv EVEMon.Common/BusyDialog.Designer.cs EVEMon.Common/BusyDialog.designer.cs
mv EVEMon.Common/EVEMonForm.Designer.cs EVEMon.Common/EVEMonForm.designer.cs
mv EVEMon.Common/SplitButton.Designer.cs EVEMon.Common/SplitButton.designer.cs
mv SkillPlanner/RequiredSkillsControl.Designer.cs SkillPlanner/RequiredSkillsControl.designer.cs

Preparing EVEMon
The only thing left to do is to copy the skill xml files, since they are not copied when compiling. Probably because the windowsonly installer normally copies those.

From your evemon folder execute:

mkdir bin/x86/Release/Resources

cp EVEMon.Common/Resources/*.gz bin/x86/Release/Resources/

You can now copy the bin/x86/Release folder to some other location, rename it to EVEMon_Mono, or whatever you like.

There is a bug in the code using this path, which drops the '/' between the path and the "Resources" folder. If you have copied the release folder into ~/evemon, you will need to:

cd
ln -s evemon/Resources evemonResources

I'm sure the devs will fix this soon.

Running EVEMon

You will need to be in your parallel mono environment to succesfully execute EVEMon. Therefore a simple bash script or command is required. Execute it within your folder with the compiled EVEMon.

source /opt/mono-1.2.6-patched-env && mono ./EVEMon.exe

This requires an open terminal. I haven't figured out how to start withouth a terminal, but maybe somebody else can enlighten us.

Running EVEMon from a launcher

Copy the mono-1.2.6-patched-env file to your home directory, rename it to evemon.sh or similar. Then add on the last line something like the following, replacing the path with your path to EVEMon.exe:

mono /home/user/evemon/EVEMon.exe

Change mod on the file to make it executable:

chmod 0755 evemon.sh

Now, simply rightclick on your panel or desktop, and choose to "Add to Panel -> Custom Launcher" or "Create Launcher". Then insert some info, and browse to select your evemon.sh file. Should be pretty straight forward. If you get a access denied message, make shure you've changed mod on the file as mentioned above.

Conclusion

Well, that's it, you're running EVEMon on Ubuntu. Hope you will be able to enjoy it without much crashing. Feel free to add to this howto.

Attachments