Muchas de las personas que empiezan a formarse en el mundo de los datos vienen de trasfondos profesionales muy diversos. Algunos son profesionales formados en estadística y matemática, otros son programadores que buscan especializarse en la última tendencia de desarrollo con IA, y además están aquellos que son especialistas de otras áreas ajenas al mundo de las ciencias de la computación que vienen a aportar su visión a este campo multidisciplinario.
Para estos últimos, que en muchos casos han crecido usando PC hogareñas y consideran que Windows es la única opción posible, puede resultar sorprendente empezar a trabajar codo a codo con desarrolladores/ingenieros en sistemas que se cansan de hablar de las bondades de Linux. Pero, ¿qué es Linux? ¿Para qué nos puede servir? ¿Y cómo podemos aprovechar las ventajas que nos ofrece? Para todo esto y mucho más está la siguiente nota.
¿Por qué Linux?
Linux es, al igual que Windows o MacOS, un sistema operativo. En el contexto de la informática, un sistema operativo (OS por su sigla en inglés) es un software esencial que actúa como intermediario vital entre el hardware de una computadora y el usuario. Se encarga de gestionar recursos, facilitar la ejecución de programas y proporcionar un entorno estable para el funcionamiento de las aplicaciones. Un OS consta de varios componentes fundamentales:
- Kernel: Es la parte central del sistema operativo que gestiona el hardware y permite la interacción entre el software y el hardware de la computadora.
- Gestor de Procesos: Controla la ejecución de programas, mediante la asignación de recursos y la gestión de tareas para garantizar un uso eficiente del procesador.
- Gestor de Memoria: Administra el espacio de memoria para programas y datos, facilitando la asignación y liberación de memoria conforme sea necesario.
- Sistema de Archivos: Organiza y gestiona la información almacenada en dispositivos de almacenamiento, permitiendo el acceso y la manipulación de archivos.
- Controladores de Dispositivos: Son módulos que facilitan la comunicación entre el sistema operativo y los diferentes dispositivos de hardware, como impresoras, tarjetas de red, y unidades de almacenamiento.
- Interfaz de Usuario: Proporciona la manera mediante la cual los usuarios interactúan con el sistema operativo, que puede ser a través de una interfaz gráfica (GUI) o una interfaz de línea de comandos (CLI).
Independientemente del sistema operativo que utilicemos, todos estos componentes son comunes para ellos.
Pero Linux cuenta con algunas particularidades que otros sistemas operativos no tienen. Por un lado, es open-source, por lo que todo su código está disponible y permite su modificación. Como consecuencia, tiene una gran cantidad de distribuciones, como Ubuntu, Fedora Linux, Debian, entre muchas otras, todas pensadas con diversos fines prácticos. Esto aporta un nivel de flexibilidad con el que Windows sólo puede soñar. De esto se desprende que tiene una enorme comunidad activa de desarrolladores dispuestos a ayudarnos ante cualquier dificultad.
Por otro lado, es sumamente liviano y consume pocos recursos computacionales o de almacenamiento. Linux es “command-line based”, así que si bien se puede interactuar mediante una GUI, gran parte de su potencial se encuentra en la ejecución de comandos vía Bash (el Command Prompt versión Linux), que facilita el testeo y ejecución de código.
Es muy elegido por ser posiblemente el sistema operativo más seguro que hay, ya que requiere autorización para ejecutar cualquier tipo de software (incluyendo virus). Además, cada directorio contiene sus propias configuraciones de permisos de modificación, lectura y escritura de archivos. Por estos motivos se suele priorizar cuando la protección contra amenazas externas es crucial.
Por último, Linux es gratuito y no requiere el licenciamiento de software. Por eso, permite abaratar costos para empresas y negocios ya que no suma cargos adicionales para aprovechar todo su potencial.
¿Qué es WSL?
Hasta acá todo muy lindo, pero usted, usuario de Windows, se preguntará: ¿cómo puedo disfrutar de las ventajas que ofrece Linux sin salir de la comodidad del sistema operativo que usé durante toda mi vida? Por suerte, ¡de eso se trata el resto de la nota!
El Windows Subsystem for Linux (WSL para los amigos) permite a los desarrolladores usar un entorno GNU/Linux que incluye sin modificaciones todas las herramientas de línea de comando, utilidades y aplicaciones directamente sobre un sistema operativo de Windows. Es una alternativa simple y eficiente al famoso dual boot (es decir, tener dos sistemas operativos completos instalados en la máquina).
Admite la utilización de básicamente todas las distribuciones de Linux sin necesidad de hacer una instalación adicional. Simplemente instalamos WSL, seleccionamos la distro que queremos utilizar, configuramos usuario y contraseña… ¡y listo!
Como último punto destacable, uno de los principales desafíos en cualquier proyecto de desarrollo de software -y particularmente de ciencia de datos- es poder correr nuestra aplicación independientemente de su entorno, y esto es algo con lo que nuestra ballena azul favorita, Docker, nos puede ayudar. Con WSL podemos correr Docker nativamente dentro del entorno de Linux y disfrutar de una mejor performance y compatibilidad entre sistemas, con la ventaja adicional de que disponemos de Docker Desktop, un software que a todas las bondades de los containers le agrega una interfaz gráfica sumamente amigable.
Proceso de instalación
Veamos, entonces, cómo instalar WSL en nuestra computadora en unos pocos sencillos pasos.
- En primer lugar, debemos abrir una instancia de PowerShell o del Command Prompt como administrador. Para eso, buscamos en el menú de Windows “cmd”, hacemos click derecho sobre el ícono del Command Prompt y seleccionamos “Run as administrator”. Esto permitirá a la interfaz de línea de comando realizar modificaciones en nuestro sistema.
2. Windows mostrará un alerta indicando que un programa quiere realizar una modificación en el sistema y nos preguntará si queremos autorizarlo. Clickeamos en “Yes” para autorizarlo.
3. Una vez autorizada la modificación, vamos a correr el siguiente comando en nuestro Command Prompt: wsl –install. Esto instalará la distribución de Linux en nuestra máquina (por default, Ubuntu). Si queremos elegir alguna específica, debemos indicarla de la siguiente manera: wsl –install -d <Distribution Name>. Pueden encontrar más información de las distribuciones disponibles y nomenclaturas aquí o con el comando wsl –list –online.
4. Instalado WSL y la distribución de Linux elegida, debemos reiniciar la computadora para finalizar la instalación.
5. Una vez que hayamos reiniciado nuestra máquina, podemos proceder a crear nuestro usuario y contraseña. Para eso, abrimos la distribución de Linux que hayamos definido en la instalación. Debemos tener en cuenta que:
- Son específicos de cada distribución de Linux individual que instalemos y no tienen ninguna relación con el usuario de Windows.
- Mientras escribimos nuestra contraseña, no la vamos a ver en la consola de comandos. Esto es normal, se conoce como “escritura ciega”.
- La cuenta creada será el usuario predeterminado de la distribución y será la de inicio de sesión automática.
- Esta cuenta se considera administrador y tendrá la capacidad de ejecutar comandos sudo (o sea, de superusuario).
- Cada distribución de Linux que agregamos en WSL tiene sus propias cuentas de usuario y contraseñas de Linux.
6. Para corroborar que la instalación fue exitosa, podemos ingresar el siguiente comando en PowerShell o Command Prompt: wsl -l -v. Al hacer eso, veremos las distribuciones instaladas.
Y con esto, ya tenés instalado WSL en tu computadora, lo que te va a permitir disfrutar de lo mejor de ambos mundos. ¡A codear se ha dicho!