jueves, 10 de diciembre de 2020

MonoDevelop en Ubuntu 20.04

Primero que nada decir que el soporte para 20.04 está muy verde todavía, y esa es la razón de que tengamos que hacer "ciertas cositas" extras a las que no estamos acostumbrados.

En realidad, puede que sea más simple instalar net-core desde Microsoft y usar Visual Studio Code, que ahora funciona sin problemas en Linux, pero en mi caso, yo necesitaba compilar un proyecto para Net 4.7, sin cambiarle nada, incluyendo la versión de Net objetivo, y da la casualidad de que MonoDevelop abre archivos sln creados con Visual Studio desde Windows.

Con mi instalación de Visual Studio Code ya tendría que cambiar el proyecto a Net 5. Por ejemplo.

En el pasado, MonoDevelop me ayudó con este tipo de situaciones.

Primero instalamos mono-complete que sí está en los repositorios.

sudo apt install mono-complete

Hasta ahí podemos compilar desde la línea de comandos, pero no es lo que buscamos. Así que sigamos.

Agregamos el repositorio del proyecto MonoDevelop siguiendo sus instrucciones pero con ligeras variaciones.

sudo apt install apt-transport-https dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu vs-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-vs.list
sudo apt update

Si al crear soluciones o intentar abrir archivos sln que ya teníamos, nos llega a salir un diálogo de error como el siguiente:

Error irrecuperable

Para evitar esto deberemos instalar ciertas librerías.

sudo apt install libcanberra-gtk-module libcanberra-gtk3-module libglade2.0-cil-dev

libglade2.0-cil-dev puede reemplazarse por libglade2.0-cil

El paquete libglade2.0 debería instalarse como dependencia cuando instalamos monodevelop. Pero por alguna razón esto no ocurre siempre. Quizá, a partir de cierto momento, al recibir los reportes de error, ellos hicieron algún cambio al archivo deb para asegurar que libglade se instale también. Como sea, si les ocurre el error irrecuperable, ya saben por qué es.

Por último, notaremos que al intentar lanzar una aplicación de consola, nos sale un diálogo que dice:

Debugger operation failed

ApplicationName='/usr/lib/gnome-terminal/gnome-terminal-server',CommandLine='--app-id...

Esto ocurre porque estamos usando la compilación pensada para Ubuntu 18.04. La ruta a gnome-terminal-server debía ser esa en Ubuntu 18.04. La solución es crear un enlace simbólico donde MonoDevelop espera que esté gnome-terminal-server.

Les pido que los siguientes comandos los ejecuten de a uno, línea por línea. No copien todo.

sudo -i
cd /usr/lib
mkdir gnome-terminal
cd gnome-terminal
ln -s /usr/libexec/gnome-terminal-server gnome-terminal-server
exit

Con esto deberíamos tener una instalación funcional de MonoDevelop.

Cosas que intenté y no funcionaron, y que a otros se les podría ocurrir intentar.

Si ustedes visitan la url https://download.mono-project.com/repo/ubuntu verán que existen directorios con el nombre focal. Focal es para Ubuntu 20.04. Al ver que están los directorios, a uno se le puede ocurrir reemplazar vs-bionic, con vs-focal en el archivo etc/apt/sources.list.d/mono-official-vs.list.

Bueno, les voy a ahorrar tiempo. Si hacen eso, y luego hacen apt update, y tratan de instalar el paquete monodevelop, les saldrá que no hay candidato para la instalación. Puede que se llame diferente, o que sólo exista en forma de código fuente.

También traté con focal-beta y focal-preview.

En resumen, deberemos esperar algún tiempo antes de poder instalar una versión para focal.

Lo bueno es que la versión para bionic funciona bien, si instalamos las librerías y creamos el enlace simbólico.

1 comentarios:

gastraeMstilyo dijo...
Este comentario ha sido eliminado por un administrador del blog.

Publicar un comentario