First off, for those that don’t know what Manos is: Manos is an easy to use, easy to test, high performance web application framework that runs on Mono. You can read more about it here.
Lately it seems like everyone is trying to install Manos on OS X, so I spent some time last night trying to install it on my macbook.
I think I’ve fixed most of the issues so its a relatively smooth process now. There are a few more steps than I’d like, but remember this is just alpha software.
So here we go.
Install Mono 2.8
Grab the Mono 2.8 OSX package from the Mono Downloads Page.
You need to have Mono 2.8 installed on your system. An older Mono install wont cut it. Also, if you’ve install Mono from source on your Mac, things might work, things might not work. This guide assumes you have it installed from packages.
libev is Manos’s one native dependency. I installed this guy using macports:
sudo port install libev +universal
The key part of this is that we are installing the universal build of libev. If you leave that part out you could get a 64bit version and Mono won’t be able to load it.
You should now have a libev.dylib in /opt/local/lib/ to make sure Mono knows where to find that library, update your DYLD_FALLBACK_LIBRARY_PATH.
libev-sharp is a managed wrapper around libev. The best way to install it is to grab it from my github:
git clone https://email@example.com/jacksonh/libev-sharp.git cd libev-sharp ./configue make sudo make install
This will install libev-sharp.dll into your /usr/local/lib/libev-sharp directory and will also install a pkg-config file.
Now that all the dependencies are installed you should be able to build and install Manos.
git clone https://firstname.lastname@example.org/jacksonh/manos.git cd manos ./configue make sudo make install
This will install Manos.dll, manos.exe and libev-sharp.dll into /usr/local/lib/manos. As well as a .pc file and a manos script for invoking manos.exe
Confirm your installation
You should now be able to run the manos documentation server:
and navigate to http://localhost:8181/ in your browser.
If your build fails because libev-sharp isn’t found, you can manually copy it into your manos/build/ directory.
erp:manos jackson$ cp /usr/local/lib/libev-sharp.dll* build/.
Note that you want to cp libev-sharp.dll* not just libev-sharp.dll. That way you’ll get the .mdb debugging file copied over also.
If you are getting a type load exception, make sure you have the universal libev installed:
erp:~ jackson$ cd /opt/local/lib
erp:lib jackson$ file libev.dylib
libev.dylib: symbolic link to libev.3.0.0.dylib
erp:lib jackson$ file libev.3.0.0.dylib
libev.3.0.0.dylib: Mach-O universal binary with 2 architectures libev.3.0.0.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64 libev.3.0.0.dylib (for architecture i386): Mach-O dynamically linked shared library i386
Another trick is to use Mono’s logging to see where Mono is looking for libev.dylib
MONO_LOG_MASK=dll MONO_LOG_LEVEL=debug manos -docs
Hopefully all this works for you, if you notice any problems please let me know. Its my first pass at getting Manos running on OS X so its very possible I’ve missed something.
And remember there is a Manos de Mono Google Group
And you can follow the github project here: http://github.com/jacksonh/manos
Special thanks to Geoff Norton for answering all my ‘i dont get the mac’ questions.