Desarrollo de aplicaciones .NET en Linux

27 Jun 2021 25 min (0) Comentarios

En este post vamos a ver cómo desarrollar aplicaciones en .NET dentro del entorno de Linux. 

Decir que hasta el otro día ni se me había pasado por la cabeza migrar de Windows a Linux, ya que hasta hace un tiempo era completamente imposible ejecutar aplicaciones escritas en .NET dentro de linux.

 

Con este post quiero explicar los motivos por los que yo, me estoy planteando la migración a Linux, así como mostrar diferentes alternativas para aquellos que no tengáis experiencia con Linux. 

 

 

Antes de comenzar, decir que a día de hoy (Junio de 2021) sigo teniendo mi equipo principal con Windows, y que los ejemplos de código y las capturas son sobre una máquina virtual. 

 

 

1 - Por qué linux?

linux distros

Utilizar Linux trae una serie de ventajas con respecto a otros sistemas operativos:

1.1 - Privacidad en Linux como OS de escritorio

Todo el mundo sabe que tanto Windows, como MacOS están bastante dados a compartir información tanto del dispositivo, como del uso que le damos al mismo. Es entendible que muchas personas valoran su privacidad y no quieran ser constantemente espiadas

Así que dar el paso y moverse a Linux por este aspecto es completamente respetable. 

 

Por cierto, la información que se comparte va desde tus búsquedas en el navegador, tu geolocalización, lo que dices cuando tienes un micro cerca, lo que ves, o escuchas, incluso windows tiene un keylogger instalado por defecto en el sistema. No compartimos información únicamente cuando tenemos una pantalla azul o similar, que es lo que parece, si no, todo el tiempo. 

Por supuesto toda esa información la recolecta por defecto y hay que desactivarla manualmente.

  • En este enlace puedes encontrar mas información 

 

Nota: Algunas distribuciones de Linux también recogen la información, pero se puede desactivar y estar 100% seguro de que está desactivado, ya que el código es open source. 

 

1.2 - Fiabilidad de linux como OS de escritorio

Si hay un motivo por el que los servidores corren en linux, no es porque la licencia sea gratuita, es porque son más fiables y robustos. Apenas veremos crashes, por no decir ninguno. La gran mayoríá de servidores del mundo corren linux, facebook apple, amazon, o netmentor utilizamos linux en nuestros servidores.

Personalmente utilicé Linux como software de escritorio muchos años y nunca tuve problemas de este aspecto.

En windows… bueno a quien no le ha salido la pantalla azul.

 

1.3 - Seguridad en Linux como OS de escritorio

Por norma general Linux es mucho más seguro que windows, y esto es debido a dos motivos principales. 

El primero, que hay muchos menos usuarios de Linux que de Windows por lo que los hackers pasan de gastar sus esfuerzos en intentar hackear equipos Linux, porque además el usuario medio de Linux, sabe lo que está haciendo. 

Pese a que últimamente podemos ver mas y mas equipos linux en universidades o edificios públicos debido a que no necesitan licencias, los hackers no tienen a usuarios de Linux como objetivo, almenos por ahora. 

 

Como punto final, debido a que linux es open source, mucha más gente va a estar dispuesta a mirar al código para arreglar cualquier fallo de seguridad. 

En windows o mac, debemos esperar a que el equipo en cuestión lo arregle, y pese a que son menos personas, les va a llevar bastante tiempo. 

 

El 8 de junio de 2021 Microsoft arregló 6 bugs entre los que se incluyen 6 zero day bugs, osea bugs que están ahí desde el primer día, obviamente algunos hackers los habían descubierto con anterioridad y los estaban explotando. Tardaron 6 años en encontrar dichos bugs y arreglarlos. 

 

1.4 - Requerimientos del hardware

Por norma general las distribuciones de Linux requieren menos recursos que las versiones de windows, así que si tienes un pc viejo, instala linux e irá mucho mejor.

 

1.5 - Customizable

Linux, sobre todo algunas distribuciones son customizables al 100%, eso qué quiere decir? que si quieres que tus ventanas no tengan botón de maximizar a los programas se lo puedes quitar, si quieres cambiar el tema, lo puedes hacer, lo que te apetezca, incluso cambiar el tema del sistema operativo de una forma muy natural. hay bastantes como pueden ser Gnome 3, KDE plasma, cinnamon  y muchas otras.

 

 

1.6 - Gestor de paquetes & terminal

Si queremos instalar cualquier software lo podemos hacer a través de la terminal y su gestor de paquetes, la terminal es muy potente, por eso windows ha terminado introduciendo wsl2 en el propio sistema operativo.

 

Lo mismo sucede con la terminal, en el último año Microsoft ha introducido la nueva terminal, la cual está prácticamente al nivel de la de Linux.

terminal windows

Un ejemplo donde la terminal de Linux  (linux en general) es mucho más útil, es a la hora de eliminar software del sistema, cuando borramos algo en windows siempre nos queda rastro por todas partes, ficheros guardados dios sabe dónde de forma automática y sin avisar.

En Linux se hace desde un comando en la línea de comandos y fuera. 

 

1.7 - Juegos

Si quieres jugar, pues olvídate de Linux. Pese a que las distribuciones de linux soportan juegos, no soportan casi ninguno, y de los grandes títulos te puedes ir olvidando. Así que si quieres jugar, windows es tu amigo.

 

 

2 - Qué distribución de linux elegir para programar?

Técnicamente puedes utilizar cualquiera, pero yo elegiría una basándome en las siguientes características. 

A - Nivel de experiencia en linux

Es muy importante tener en cuenta que la gran mayoría de acciones que vayamos a utilizar, sobre todo al principio de instalar el software van a ser por línea de comandos.

 

Hay distros como Ubuntu que no necesitarás o apenas necesitarás utilizar línea de comandos, ya que viene como una alternativa open source a los sistemas operativos de escritorio como pueden ser Windows o Mac OS, y así se anuncian en su página web. Y si es tu primera vez en Linux, probablemente deberías elegir Ubuntu.

 

Por el contrario hay otras, como Arch Linux que te viene el kernel pelado y tienes que instalar todo manualmente.

 

Hay cientos de distribuciones y a cada uno nos gusta una diferente, aquí te dejo un link que contiene una imagen con todas las distribuciones y sus ramificaciones

 

Personalmente he elegido Manjaro, un fork de Arch Linux con interfaz gráfica plasma.

Cabe decir que todos los comandos que funcionan en Arch funcionan en Manjaro, debido a que tiene acceso a lo que se llama “Arch user repository”. Eso sí hay que tener en cuenta que todos los paquetes son Open source creados por la comunidad y no son oficiales, así que cuidado con lo que instalamos. 

Pero por norma general, algo que tiene muchas estrellas y el popular, pues no vas a tener problemas de seguridad.

 

B - Comunidad

Es importante que la distribución que elijas contenga una comunidad detrás que la mantenga al día, no te sirve de nada instalarte una distribución que no recibe actualizaciones desde hace 2 o 3 años, pues no nos renta utilizarla.

 

En el caso de Manjaro  introducen diariamente todas las actualizaciones que recibe ArchLinux de forma diaria, las testean y luego las pasan a la imagen oficial, y con lo que se denomina “rolling release” se aplican en tu ordenador, no hay releases como tal que hay en otras distribuciones. 

manjaro rolling release

 

2.1 - Distribuciones populares de linux

Con esto en mente nombrar varias distribuciones de linux.

  • Arch linux para usuarios avanzados, que quieran montarse el sistema completamente, ya que viene sin interfaz gráfica, sin gestor de archivos, etc. 
  • Manjaro, un fork de Arch linux montado con interfaz gráfica y listo para usar.
  • Ubuntu, posiblemente la distribución más famosa, tiene funcionalidades completas, soporta aplicaciones como editores de texto (office) y es la que tiene una mayor comunidad detrás.
  • Fedora también está cogiendo muy buena fama como estación de trabajo del dia a día.
  • Linux mint, nos viene pre-instalado con una interfaz similar a windows (cinnamon) y es un fork de Debian. Utilizado por Eliot en Mr Robot para el día a día. 
  • Kali linux, si eres un hacker (o quieres aprender sobre seguridad), posiblemente deberías utilizar kali linux, ya que viene con mucho software para hacer penetración instalado, por cierto, es la distro que utilizan en mr robot cuando tienen que hacer hacking. 

eliot kali linux

Hay una web llamada DistroTest donde puedes probar diferentes versiones de linux, así como ver los estilos de los escritorios, para ayudarte a elegir entre las cientos que hay. 

 

 

3 - Instalar entorno de desarrollo de .NET en Linux

Para este post voy a explicar los comandos y los pasos tanto para Manjaro (Arch Linux) como para Ubuntu, ya que Manjaro es la distro que he elegido para mi y Ubuntu es la más común.

También voy a asumir que has instalado el sistema, drivers, etc necesarios en tu equipo.

 

En manjaro, utilizaremos pacman como gestor de paquetes, mientras que en ubuntu apt-get

 

3.1 - Instalar .NET en Linux

Primero de todo, para poder desarrollar en .NET debemos instalar el SDK y el runtime en nuestra máquina.

Los pasos son los mismos que vimos en el post de desplegar una aplicacion .NET en CentOS.

 

3.1.1 - Instalar .NET en Manjaro (Arch Linux)

Desde la terminal instalamos el runtime de .NET:

sudo pacman -S dotnet-runtime

Posteriormente instalamos el SDK de .NET: 

sudo pacman -S dotnet-sdk

 

3.1.2 - Instalar .NET en ubuntu

Para instalr el SDK de .NET en Ubuntu  ejetuamos

sudo apt-get install -y dotnet-sdk-5.0

Y el runtime:

sudo apt-get install -y aspnetcore-runtime-5.0

 

Alternativamente podemos instalar Git y clonar un repo de GitHub para comprobar que todo funciona correctamente. En mi caso he clonado mi repo sobre RailWay Oriented Programming y ejecutado los test:

dotnet test en linux

 

3.2 - Instalar un IDE para desarrollar .NET en Linux

Podemos instalar Visual Studio Code or OOS - Code que es la versión open Source sin código propietario en la que se basa Visual Studio Code.

 

Pero personalmente no siento que VSCode ni OOS Code sean un IDE completo para trabajar con .NET, funcionan bien, pero  si tienes la posibilidad mejor utilizar un IDE.

 

Visual Studio no está disponible para linux, ninguna de sus ediciones, por ello vamos a ir con un software que pese a ser de pago es muy potente,  JetBrains Rider.

  • Nota: Jetbrains no sponsoriza este post, lo que muestro a continuacion es una recomendación personal.

 

3.3 - Jetbrains Rider

Personalmente fue una grata sorpresa ver que Rider era funcional en Linux igual que lo es en Windows y Mac, ya que yo actualmente utilizo Rider en mi trabajo diario y he utilizado Rider en su versión de Mac mientras estudiaba, hace algunos años.

 

Parte de los beneficios que tiene utilizar Rider es que en todas las plataformas es la misma interfaz y podemos exportar  o importar la configuración de unos a otros.

Con características potentes como análisis de código, debuguear, correr test, code coverage (con el paquete dot net), soporte para unity, web, xamarin, aws, etc. 

Además la interfaz es muy similar en cada uno de sus productos, ya que tienen uno para java, python, scala, rust, go, etcétera. 

 

El único punto a tener en cuenta es que tiene una subscripción de pago. La suscripción de Rider cuesta 139€ anualmente, la del paquete entero de .NET que incluye Rider, ReSharper, DotTrace, DotCover y DotMemory (para ayudarnos a encontrar los problemas de memoria) son 149€ pero a partir del segundo año de subscripción nos cuesta únicamente 89€.

Un precio totalmente asequible para nuestros jefes cuando estamos en una empresa.

 

Lo bueno es que si eres estudiante te dan una licencia completa, a todos sus productos no solo al software de rider. Puedes pedir tu licencia de estudiante en este enlace.

  • Nota, hay que renovarla cada año.

educational license rider

 

3.4 - Instalar JetBrains Rider en Linux

Jetbrains nos provee la solución para descargar Instalar Rider de una forma muy sencilla en Linux.

 

3.4.1 - Pre-Requisitos

Pero primero debemos asegurarnos que tenemos instalado tanto el runtime como el Sdk de .NET que hemos instalado en el punto 3.1. 

Y posteriormente debemos instalar mono.

 

3.4.1.1 - Instalar Mono en Manjaro (Arch Linux)

Únicamente debemos ejecutar el siguiente comando: 

sudo pacman -S mono 

 

3.4.1.2 - Instalar Mono en Ubuntu

en ubuntu es un poco más largo, pero también son dos comandos, el primero para añadir el repositorio:

sudo apt install gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update

Ahora instalamos Mono

sudo apt install mono-devel

 

3.4.2 - Instalar Rider en Linux

Para instalar rider en Linux, podemos  instalar lo que llamamos jetbrains tools, que es una aplicación que contiene enlaces para descargar e instalar el diferente software de jetbrains.

Pero para nuestro caso de uso únicamente necesitamos Rider

 

3.4.2.1 - Instalar Rider en Manjaro (Arch Linux)

Para instalar Rider en Manjaro debemos descargar el paquete .tar.gz del siguiente enlace.

 

Una vez descargado, lo descomprimimos, ya sea con el comando comando sudo tar -xzf Rider.tar.gz o con doble click en el fichero y lo extraemos fuera completamente.

 

Después vamos a la carpeta bin y ejecutamos el fichero Rider.sh.

De esta manera tendremos instalado Rider en el sistema y podemos acceder a él desde el menú principal del sistema operativo.

rider isntalled in manjaro

 

3.4.2.1 - Instalar Rider en Ubuntu

En ubuntu este paso es más sencillo ya que desde jetbrains lo han incluido como un paquete snap, así que únicamente debemos ejecutar un solo comando.

sudo snap install rider --classic

 

3.5 - Ejecución de rider en Linux

Una vez instalado podemos ejecutarlo y vemos como funciona todo a la perfección.

rider debug linux

En mi caso he utilizado el proyecto que hemos clonado en el punto 3.1

 

 

Conclusión

  • En este post hemos visto diferentes razones de peso por las que utilizar linux en vez de windows o Mac.
  • Un pequeño resumen de diferentes distribuciones de Linux
  • Como configurar nuestro entrono de desarrollo en Linux para desarrollar en .NET

 

Uso del bloqueador de anuncios adblock

Hola!

Primero de todo bienvenido a la web de NetMentor donde podrás aprender programación en C# y .NET desde un nivel de principiante hasta más avanzado.


Yo entiendo que utilices un bloqueador de anuncios como AdBlock, Ublock o el propio navegador Brave. Pero te tengo que pedir por favor que desactives el bloqueador para esta web.


Intento personalmente no poner mucha publicidad, la justa para pagar el servidor y por supuesto que no sea intrusiva; Si pese a ello piensas que es intrusiva siempre me puedes escribir por privado o por Twitter a @NetMentorTW.


Si ya lo has desactivado, por favor recarga la página.


Un saludo y muchas gracias por tu colaboración

© copyright 2024 NetMentor | Todos los derechos reservados | RSS Feed

Buy me a coffee Invitame a un café