En este post voy a indicar los pasos que realicé para hacer funcionar Asp.Net MVC 4 en mi Ubuntu 12.04 LTS.
Antes de empezar es necesario instalar git y las herramientas básicas para compilar
~$ sudo apt-get install build-essential git autoconf ~$ libtool automakeDespués creamos un directorio en el home para guardar los fuentes.
~$ mkdir ~/monosources ~$ cd monosourcesConsulto en el sitio de mono de github los pasos para compilar. En las instrucciones se indica que para tener soporte del namespace System.Drawing es necesario la librería libgdiplus. Con la versión de esta librería que está en el repositorio de ubuntu no he sido capaz de hacer funcionar System.Drawing. Así que decido ir a su sitio en github y compilarlo. Así que descargo los fuentes y coloco los fuentes en el último tag
~/monosources$ git clone https://github.com/mono/libgdiplus.git ~/monosources$ cd libgdiplus ~/monosources/libgdiplus$ git checkout 2.10.8Ahora instalaremos las librería necesarias para compilar libgdipplus.
~/monosources/libgdiplus$ sudo apt-get install libglib2.0-dev libjpeg-dev libpng12-dev libgif-dev libexif-dev libx11-dev libxrender-dev libfreetype6-dev libfontconfig1-devDescubro que en los respositorios de Ubuntu 12.04 no está disponible la librería libtiff5-dev, que es necesaria para el proyecto. En versiones posteriores (como la 12.10) sí que lo está y se puede instalar con apt-get, de la misma forma con la que se instalaron el resto de librerías en el paso anterior. Estas cosas no pasan con Windows, busco ayuda y lo comento con Pedro, que es el que sabe de estas cosas. Me dice que compile e instale la librería de forma manual y me manda un correo donde me indica de dónde bajarme los fuentes, así que me pongo manos a la obra
~/monosources/libgdiplus$ cd .. ~/monosources$ wget http://download.osgeo.org/libtiff/tiff-4.0.3.tar.gz ~/monosources$ tar zxvf tiff-4.0.3.tar.gz ~/monosources$ cd tiff-4.0.3 ~/monosources/tiff-4.0.3$ ./configureAntes de compilar la librería con el script autogen indico la ruta donde se instalará la librería. Después compilo e instalo
~/monosources/tiff-4.0.3$ ./autogen.sh --prefix=/usr/local ~/monosources/tiff-4.0.3$ make ~/monosources/tiff-4.0.3$ sudo make installCon las dependencias instaladas vuelvo al directorio de los fuentes de libgdiplus, y repito la operación anterior: configuro la ruta de instalación, compilo e instalo
~/monosources/tiff-4.0.3$ cd .. ~/monosources$ cd libgdiplus ~/monosources/libgdiplus$ ./autogen.sh --prefix=/usr/local ~/monosources/libgdiplus$ make ~/monosources/libgdiplus$ sudo make installVuelvo al directorio anterior, es hora de bajar mono y compilar la versión 3.0.10
~/monosources/libgdiplus$ cd .. ~/monosources$ git clone https://github.com/mono/mono.git ~/monosources$ cd mono ~/monosources/mono$ git checkout mono-3.0.10Por tercera vez indico la ruta de instalación
~/monosources/mono$ ./autogen.sh --prefix=/usr/localUna cosa que me resultó chocante es que para compilar mono es necesario un compilador de mono. En los fuentes de mono ya incluyen un pequeño compilador (monolite) para montar para poder compilar todo el proyecto.
~/monosources/mono$ make get-monolite-latestPara hacer el make de mono debemos indicarle dónde encontrar el compilado monolite, eso se hace con el parámetro EXTERNAL_MCS. Una vez compilado se instala mono
~/monosources/mono$ make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe ~/monosources/mono$ sudo make installYa tengo mono en ubuntu, pero necesito un servidor para ejecutar mi sitio ASP.NET. Para eso voy a utilizar el servidor XSP, un pequeño servidor de desarrollo. Vuelvo a monosources y clonamo el repositorio de github y me coloco en el tag 3.0.11 que en el momento de escribir estas líneas es el último, configuramos la ruta de instalación y compilamos
~/monosources/mono$ cd.. ~/monosources$ git clone https://github.com/mono/xsp.git ~/monosources$ cd xsp ~/monosources/xsp$ git checkout 3.0.11 ~/monosources/xsp$ ./autogen.sh --prefix=/usr/local ~/monosources/xsp$ make ~/monosources/xsp$ sudo make install
Listo, con esto ya puedo servir paginas Asp.Net, lo único que tengo que hacer es situarme en el directorio donde tenga un sitio web de .net y ejecutar el comando xsp4. Esto montará un servidor web que responderá desde el puerto 8080.
Cosas a tener en cuenta, aunque la versión de mono compilada soporta el framework 4.5, el servicor xsp solo soporta framework 4 así que recuerda indicar esta versión del framework en los proyectos del Visual Studio que compiles para ejecutar desde mono. Por otro lado ten en cuenta que mono solo interpreta dlls manejadas, no nativas, por lo que hay que tener cuidado con las referencias que se añaden al proyecto o puede que no funcionen en mono.
Para probar yo monté una aplicación Asp.Net vacía, de esta forma minimizo las referencias a dlls y añadí un HomeController con una action Index que devuelve una vista. Y funciona perfectamente.
Espero que os resulte útil. De vez en cuando, aunque seas un programador de .net, no está mal salir de windows y ver lo que se hace por el mundo de linux y demás sistemas operativos. Y si con mono podemos ejecutar nuestro código .net mejor que mejor.
No hay comentarios:
Publicar un comentario