145

¿Qué es WSL y por qué deberías usarlo?

223621Puntos

hace 3 años

¡Hola, pequeña gran developer! ¿Así que estás lista para empezar tu camino en el desarrollo web? ¡Felicidades! Sin embargo, debes saber que hay algunas herramientas que necesitarás para poder combatir esos futuros bugs y problemas que te esperan ☝.

Si ya hiciste el Curso de Prework: Configuración de Entorno de Desarrollo en Windows sabrás de qué herramientas hablo, y si no, ¿qué estás esperando? 👀. Este curso es la base para todos los que desean convertirse en desarrolladores web profesionales 💪.

Una de las herramientas que instalamos en este curso, si eres usuario de Windows, fue Windows Subsystem for Linux (WSL), pero… ¿Qué es WSL exactamente y por qué tuve que instalarlo? 🤔 ¡Eso es lo que vamos a mirar en este blogpost!

¿Por qué necesito WSL?

Hoy en día el desarrollo web ha dejado de enfocarse solo en la creación de archivos HTML, CSS y JavaScript; tenemos muchas herramientas que nos permiten crear sitios web de diferentes complejidades: parsers, bundlers, transpiladores, live servers, etc. Lo que tienen en común todas ellas es que hacen uso de una sola herramienta: la terminal.

La terminal es algo de lo que no podrás escapar si planeas dedicarte al desarrollo web y es por ello que tenemos el Curso de Introducción a la Terminal y Línea de Comandos. Esto es porque ser desarrollador web implica más que solo saber programar con JavaScript, ser desarrollador web es saber entenderte con la terminal, saber instalar paquetes, librerías, automatizar tareas ¡y mucho más! 😄.

¡Pero no te preocupes!, no es algo a lo que debas tenerle miedo, todas las herramientas que tenemos como desarrolladores web fueron creadas con el objetivo de facilitarnos mucho más nuestra forma de programar. Y sí, la terminal está ahí para facilitarnos la vida, aunque parezca lo contrario 💚.

Y justamente eso es WSL, una terminal que nos facilitará la vida al momento de programar todos esos increíbles sitios web que tenemos en mente. Aunque seguramente te preguntarás, ¿por qué WSL y no CMD? Y esta es una excelente pregunta, pero para poder responderla necesitas saber algo: no todas las terminales son iguales.

La carrera de desarrollador web ofrece formación en muchas de las herramientas que trabajan con WSL.

Entendiendo los tipos de terminales

Todos nosotros conocemos a los 3 sistemas operativos principales: Windows, Linux y macOS. Pero antes de ellos había dos sistemas operativos principales: UNIX y MS-DOS. Ambos eran sistemas operativos manejados desde la terminal y eran totalmente diferentes, sus comandos, sus reglas, su sistema de archivos y demás eran distintos, siendo UNIX un sistema operativo más “dev friendly”, es decir, más cómodo para trabajar con programación de archivos.

Mientras que macOS y Linux comparten similitudes con UNIX, Windows por su parte es un descendiente de MS-DOS. ¿Alguna vez has visto que muchos desarrolladores web usan Linux? Bueno, ahora ya sabes por qué 😉.

Qué es Windows Dev Home

Al día de hoy, nuestros 3 sistemas operativos principales conservan las terminales, las terminales de macOS y Linux están basadas en UNIX, mientras que la de Windows está basada en MS-DOS, ¿recuerdas cuál era la “dev-friendly”? 👀

Windows es un sistema operativo más pensado para el usuario final, mientras que Linux está más asociado con programadores. Eso no significa que no puedas programar con Windows, pero es más incómodo porque tienes que virtualizar y tener cada tecnología por separado, mirémoslo en este sentido:

  • ¿Necesitas instalar Git? Entonces necesitas instalarlo desde su página oficial, y como Windows no es dev-friendly, Git tuvo que crear Git Bash para poder funcionar (que básicamente es una emulación de terminales UNIX, y esta es la misma razón por la que en Linux y macOS no existe Git Bash, porque sus terminales ya son bash 👀)
  • ¿Necesitas instalar Node.js y NPM? Pues necesitas descargarlo desde su página oficial y estos traen sus propias terminales.
  • ¿Quieres programar con PHP? Pues necesitas descargarte todo el paquete ya virtualizado con XAMPP o WAMPP para poder usarlo (y claro, trae sus propias terminales).
  • ¿Te interesa Python? ¿Qué crees? Así es, hay que instalarlo por separado 👀.

El problema con esto es que cada tecnología trae sus propias terminales emuladas, tienes una terminal para git, otra para Node, otra para PHP, etc. En el mundo de Linux y macOS esto no pasa, debido a que sus terminales son dev-friendly, basta con instalar cada paquete y usar la misma terminal para todo. Por ejemplo:

  • ¿Necesitas instalar Git? ¡Por su puesto! ¿Git Bash? ¿Qué es eso? Tu terminal es suficiente.
  • ¿Quieres Node.js? ¡Claro que sí! Y de paso te instalo NPM, ah y puedes usarlo en la terminal que ya tienes, no hay problema 😉.
  • ¿PHP? Ya mismo lo tienes en tu terminal.
  • Oh, ¿vas a usar Python? Instalado y disponible en tu terminal 😉.

¿Qué es lo mejor de todo esto? Mientras que en Windows tienes que descargar el instalador, abrirlo y darle a “siguiente, siguiente, instalar”, en Linux y macOS basta con correr un único comando:

  • sudo apt install <package-name> (Linux/Ubuntu)
  • sudo brew install <package-name> (macOS)

Con solo escribir eso y presionar enter ya vas a tener instalada tu herramienta y lista para usar, supercómodo ¿no lo crees? 😉.

¡WSL al rescate!

Microsoft se dio cuenta del problema que implicaba programar con Windows y si querías estar más cómodo programando debías usar Linux… ¿Pero y los videojuegos? ¡Yo no puedo jugar en Linux!

Gracias a esto surgió WSL, tienes todo el poder de la terminal de Linux, pero con las ventajas de Windows 🤠.

¡Oye! Pero yo ya estaba usando Git Bash/Cmder, ¿eso no arreglaba el problema?

¡Sí!.. parcialmente… El problema con Git Bash y Cmder es que son emulaciones de las terminales basadas en UNIX, por lo que no tendrás el 100% de las ventajas que te ofrece un sistema UNIX tal cual, ¿recuerdas que te mencioné que MS-DOS y UNIX eran sistemas operativos manejados desde la terminal y eran totalmente diferentes? Bueno, estas emulaciones, aunque tengan comandos similares, seguirán estando basadas en MS-DOS por lo que el sistema de archivos seguirá siendo el de MS-DOS.

Esta es la razón por la que algunos comandos de Linux no funcionan con Git Bash o Cmder, por ejemplo, el comando chmod que se encarga de cambiar los permisos de un archivo o carpeta, ¡y tiene total sentido! Este comando trabaja con el sistema de archivos de Linux, pero en Windows es diferente.

Además… ¡¿por qué trabajar con una emulación si puedes tener una terminal 100% tipo UNIX?! 👀

🛑 El error que debes evitar cometer al trabajar con WSL

Es importante que sepas que WSL es un sistema operativo tal cual instalado en tu computadora Windows, sí, literalmente tienes un Linux por debajo de tu Windows 👀.

Sabiendo esto, es importante mencionarte que hay un error muy común que muchas personas comenten cuando trabajan con WSL… Este error es querer seguir trabajando con Windows. WSL te pone a disposición una carpeta llamada /mnt desde la cual puedes acceder a Windows… ¡Pero recuerda que Linux y Windows están basados en dos sistemas operativos completamente distintos! Por eso nunca deberías trabajar dentro de esa carpeta.

¡Pero es que me gusta Windows y me gusta ver las carpetitas en el explorador de archivos!

Sí, pero recuerda que debes acostumbrarte a la terminal, no siempre vas a tener una ventana gráfica que te muestre todo, y este es uno de esos casos ☝👀. Todos tus proyectos deben vivir dentro de Linux, porque de esa forma estarás usando su sistema de archivos, sus reglas y sus comandos, en el momento en el que pones un proyecto dentro de la carpeta /mnt estarás usando el sistema de archivos de Windows.

Esto implica un problema, porque si tratas de ejecutar comandos que trabajan con el sistema de archivos (por ejemplo chmod) no va a funcionar, ¿por qué? Por lo que ya te expliqué en este blogpost, son mundos diferentes y son sistemas de archivos diferentes, por lo que si Linux le dice a Windows: chmod, Windows te va a decir: “¿Qué me estás diciendo tú?” y simplemente te va a ignorar 👀. Esta es la razón por la que cuando escribes ls -al a cualquier carpeta que esté dentro de /mnt los archivos te salen con todos los permisos puestos, porque Linux no sabe qué permisos mostrarte, ya que son sistemas de archivos diferentes.

Ahora que sabes esto deberías empezar a mover todos tus proyectos de Windows a Linux para evitar estos problemas 😄.

¿Estás lista para WSL?

En este blogpost aprendiste las bases de los sistemas operativos, por qué son mundos diferentes y lo cómodo que es trabajar con la terminal. Ahora sabes por qué tenemos WSL y por qué muchos programadores prefieren usar Linux para programar 😉.

Usar Linux o macOS para programar es muy cómodo porque tienes todo a la mano, gracias a sus terminales puedes ejecutar programas como si fueran comandos, y esto es gracias a cómo funciona bash por debajo, que es un tema digno de otro blogpost 😄.

Recuerda, cada tecnología que usamos como desarrolladores es simplemente para hacernos la vida más fácil, y las terminales basadas en UNIX es una de esas herramientas que nos ahorrará tiempo de programación y dolores de cabeza.

¿Y tú estás lista para empezar a usar la terminal y dejar de tenerle miedo a Linux? Empieza instalando WSL en tu computadora con el Curso de Prework: Configuración de Entorno de Desarrollo en Windows, y si eres usuario de macOS aprende a instalar más herramientas que te facilitarán el trabajo con el Curso de Prework: Configuración de Entorno de Desarrollo en macOS. Recuerda que este es el inicio de tu camino como desarrolladora web profesional, así que #NuncaParesDeAprender 💪.

Carlos
Carlos
RetaxMaster

223621Puntos

hace 3 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
18

el curso de prework esta geniaaaaaaal!!!

no le tengan miedo a la terminal, se los dice alguien que le tuvo miedo a la terminal…

:v

8
14801Puntos

Gran aporte, Toda via cometo el error de tener los archivos en Windows, gracias a esta explicación entendí el por que no tenerlo a si

3
4292Puntos

Me instale el WSL en mi HP y después de hacerlo me empezó a dar problema el explorador de Windows, cuando pasaba el puntero del raton por los iconos de la barra de tareas, y se abrían las miniaturas con transparencias se me ralentizaba el cursor, se ponía como en cámara lenta, y tuve que deshabilitar las transparencias en el escritorio, a la final no me gusto el resultado y lo que me ofrecía la terminal integrada en Windows así que termine por desinstalarla y como ni con eso soluciones el problema de la transparencia termine por restaurar mi portátil.

1
28834Puntos
2 años

Quizá eso pasó por las especificaciones de tu laptop, y el problema pudo haber sido causado por diversas situaciones, como lo pueden ser:

  • NO tener windows 10 de 64 bits
  • Tener una versión anterior a la 16215.0 de windows 10
  • Limitación de hardware (procesador de pocos nucleos, poca memoria ram)
3
25181Puntos

No tenia idea que estaba usando mal WSL 😱
Muchísimas gracias.

3
36563Puntos

Una duda.
Si yo usaba Git bash y ahora instalé Git en WSL ¿Hay problema al usar el cifrado SSH si yo lo establecí con Git bash?

12
223621Puntos
3 años

No, porque Git Bash está en Windows y aparte tienes otro Git en WSL, son mundos distintos, son dos Git distintos, si ya usas WSL no necesitas Git Bash, eso significa que en WSL puedes crear tus propias llaves de cifrado SSH y van a ser completamente distintas a las de Git Bash

1
36563Puntos
3 años

Muchas gracias.

2

índice.png
Muy buen curso super interesante. Recomiendo revisar los comentarios de cada clase, porque te ayudaran siempre que te quedes trabado en algún paso.

2
14682Puntos

Bien pues tengo a ver O_O si entendi, ya tengo termine de instalar WSL2, pero yo usualmente tengo mis proyecto en una carpeta que se encunetra en el escritorio, al abrir WSL2 me posiciona por defecto en el home el cual es “/home/<user>/” entonces, lo recomendable es que mueva mi carpeta de proyecto a mi home, ¿pero por que?, por que de esta manera me acostumbro a la estuctura de archivos de linux, y asi es como se encuentran los despligues en los servidores!
Confirmen Pleaseeeee!!

2
15798Puntos

Gran blog @RetaxMaster 👏👏

1

Excelente blog, me sacó de todas mis dudas y justamente del error de querer trabajar desde /mnt.

1
4410Puntos

Alguien sabe si hay algo que se pueda hacer para que automáticamente WSL te cargue en tu HOME de Linux y no en la carpeta /mnt? eso evitaría el error de los novatos y nos ahorraría un minúsculo engorro de siempre tener que ir al HOME cada vez que inicias la terminal

4
5594Puntos
2 años

Saludos @alfredojvp
Yo tambien pase por ese problema y tengo la solucion:

  • En el Home de Linux hay un archivo oculto llamado “.bashrc” que se ejecuta cada vez que inicias sesion en la terminal. Para listar archivos ocultos (archivos que anteponen un punto en el nombre) ocupa este comando:
$ ls -a
  • Abre el archivo con un editor. En este caso usaremos nano que viene por defecto con linux:
$ nano .bashrc
  • Ve al final del archivo y añade el comando que quieres que se ejecute cada vez que inicias sesion en la terminal de linux. En nuestro caso es cambiar al directorio “Home” (~) cuando iniciemos sesion. Ejecutar el comando “cd” sin darle ningun directorio por defecto nos lleva al “Home”, asi que añadimos al final del archivo:
cd
  • Guarda el archivo en el editor de nano usando “ctrl+o”. Te preguntara si deseas guardar los cambios hechos y cambiar el nombre del archivo si lo deseas. Dale “Enter”.

  • Cierra el editor con “ctrl+x”

  • Cierra sesion o aplica los cambios en la sesion actual usando:

$ source ~/.bashrc

Y listo! Espero estos pasos te ayuden como me ayudaron a mi.
Saludos!

1
19580Puntos
un año

por defecto no deberia abrirse en mnt, sino en tu carpeta home, prueba con:

cd /

cd

los alias que te comentaron se crean mas o menos asi:

alias status='git status'aliasadd='git add --all'alias jj1='cd ../../mnt/c/Users/Alfonso\ Zapata/Jupyter'alias code='code-insiders .'alias actualizar='sudo apt-get update && sudo apt upgrade'alias avenv='source env/bin/activate'alias cvenv='python3 -m venv env'alias requirements='pip3 freeze > requirements.txt && cat requirements.txt'
1
9216Puntos

Yo realicé los tres cursos de entornos de prework, y la verdad que están genial!!

1
23194Puntos

Hola.

Existe otra alternativa para trabajar en Linux sin instalar WSL. Ya que me ocasiono un problema (pantalla azul) cuando lo instale la primera vez.

1

Muchas gracias por este aporte, próximamente estaré tomando el curso de Prework. Mientras tanto, tengo un problema, por alguna razón no puedo ejecutar WSL. Cuando intenté ejecutarlo a través de VSC me aparece esta imagen. ¿Como puedo resolverlo? Gracias por su ayuda 💚
WSL.png

1
5594Puntos

Muy buen post RetaxMaster!
Tengo WSL2 en mi maquina y es genial, pero… tengo un problema. Mi maquina tiene 2 drives: C (ssd) y el D (hdd), y wsl guarda todo en el disco C dejandome sin espacio. Probe las varias “soluciones” a este problema cambiando la ubicacion donde esta instalado wsl, para que por defecto todo archivo creado en wsl sea almacenado en disco D, pero sigue guardando todo en C. Lo comprobe creando un archivo .txt con lorem ipsum en el home de mi wsl y viendo como cambiaba la capacidad de almacenamiento de mi disco C de todas maneras.
Quiero traspasar mis archivos dev, proyectos and stuff de windows al ubuntu que vive en wsl2, pero este problema del almacenamiento no me dejara hacerlo…

2
223621Puntos
2 años

Recuerda que WSL es una capa que está envolviendo a tu Windows, es decir, WSL es como una armadura para Windows, por tanto ambos deben estar en el mismo disco 😄

1

Tengo una duda, hay alguna manera de acceder a los archivos con un explorador con el de Windows? ¿que pasa si estoy trabajando con archivos multimedia como imagenes, o cualquier archivo binario? Apenas estoy empezando con esta tecnología jeje

1
23652Puntos

Instale WSL en dos ocasiones, en la primera mi computadora se puso lenta, me apareció la pantalla azul de la muerte y no me dejaba trabajar y en la segunda vez que lo instale aparecieron los mismos errores pude verificar que era WSL quien hacía que mi computadora se volviera lenta, al final tuve que des instarlo.

1
9718Puntos

Que gran contenido, recuerdo estár haciendo el curso de Git y Github de Platzi cuando Freddy comentó algo de Wsl y me llamó la atención, así que me fui a hacer el curso de Prework para Windows donde explican eso a detalle, pero aún tenía esta duda de… “¿No se supone que GitBash ya solucionaba el problema?” pero este Post me respondió todas mis dudas, eso fue hace tiempo, pero aún de vez en cuando vengo a leer este Post para refrescar ese conocimiento. Saludos y gracias.

1
15504Puntos

Y desde Windows dónde puedo ver los archivos creados en el sistemas de archivos de Linux?

1
757Puntos

Gran aporte Crack!!

1
13117Puntos

Muchas gracias por el aporte, inicié hace poco con la programación y toda mi vida he utilizado windows. En un principio realicé la configuración e instalación de WSL, luego al realizar el curso básico de python tuve problemas para encontrar los archivos supongo que era porque estaban ubicados en la terminal y no en windows (error de principiante supongo), al final terminé desinstalando WSL, sin embargo quiero implementarlo por todos los beneficios que tiene.
pregunta ¿al realizar la configuración del entorno en cada uno de los cursos, si tengo instalado el WSL debo hacerlo como tipo Linux ?
¿si tuve instalada WSL y lo desinstalé volviendo a seguir el curso de configuración de entorno de windows no tendré problemas con los archivos y configuraciones que realicé previamente y desinstalé?
Muchas gracias de antemano.

1
4665Puntos

ánimo, instalen todo sin miedo

1
31451Puntos

Gracias👌. Este post me resolvió la duda del porqué ciertos comandos no me funcionaban dentro de las carpetas de mnt.

“Windows y Linux están basados en dos sistmeas operativos completamente diferentes” ✍️

1
9427Puntos

Muchísimas gracias mi hermano, eres grande!

1
28834Puntos

La terminal es emocionante, una vez que te das cuenta de lo sencillo que es usarla y de la inmensidad de cosas que puedes hacer, se torna sumamente emocionante. 10/10

1

¿Cómo empiezo a mover todos los proyectos de Windows a Linux para evitar estos problemas?

1
223621Puntos
2 años

Puedes usar el comando cd, simplemente accede a la carpeta /mnt/c y desde ahí busca en donde tienes tus proyectos y muévelos a tu directorio home de Linux 😄

1
2305Puntos

Carlos, yo ya hice el curso de Prework y WSL esta genial, pero tengo dos dudas:

  1. Dijiste donde NO se debe trabajar, pero entonces donde debo empezar a crear todos mis archivos de programación ? en el home y de ahí en adelante ?

  2. He podido ver de forma grafica en mi PC lo que hago en linux con el comando explorer.exe ., y veo que la carpeta de Ubunto y home estan Red… pero cuando quiero acceder a Red desde el PC, no me deja y me dice "La detenccion de redes esta desactivada…"
    Hay forma de ver lo que voy haciendo de forma grafica desde el PC ?

Muchas gracias.

1
223621Puntos
2 años

¡Hola!

  1. Sí, trabaja desde el home, es decir, usa el comando cd ~ y eso te llevará a tu home de Linux, ahí puedes trabajar todo lo de programación 😄
  2. Probablemente si puedes, pero no te lo recomiendo, recuerda que son sistemas operativos diferentes 😄
1
2790Puntos

¿Es aconsejable cambiar mi Windows por Linux para que sea el “sistema operativo” por defecto?

1
14Puntos

Gracias por compartir una noticia tan increíble sobre esto. Todos los conceptos sobre wsl ahora están resueltos. Siento que esto es bastante interesante for game.

1
38769Puntos

excelente que gran aporte.

¿Entonces, si deseo iniciar sesión en mi usuario de Ubuntu desde otra pc para acceder a mis archivos puedo.?

1
223621Puntos
2 años

Sí, de hecho así es como se hace cuando administras un servidor, inicias sesión en tu servidor desde otra PC

Eso lo puedes conseguir por medio de una cosa llamada “SSH” 😄

1
15275Puntos

Un aporte magnifico! Que triste no haberlo leido antes de casi terminar a las malas un curso desde /mnt jajaja

1
12102Puntos

Estuvo interesante, aunque hace tiempo que uso GNU/Linux

1
24578Puntos

Había escuchado de esto en el curso de GIT de fredy, pero veo que esto cada vez se impregna más en microsotf ,no me imagino las cosas locas que veremos en un futuro.
😃

1
4410Puntos

Esta super genial, no sabia que estaba cometiendo un error al trabajar en la carpeta /mnt, ya empiezo a mover mis archivos al verdadero HOME de Linux. Leer este articulo fue muy enriquecedor!!!

1
2811Puntos

es lo mismo usar la terminal wsl a usar la terminal de ubuntu?

1
16894Puntos
3 años

wsl (no estoy del todo seguro para afirmarlo) no es un una terminal, sino un conjunto de archivos que permite la compatibilidad de Linux en Windows. Por ello, es necesario tener WSL y la terminal Ubuntu. Te recomiendo el curso de prework, actualmente llevo llevo el curso de terminal y viendo en los comentarios que primero llevaramos el prework, sin duda alli se despeja muchas dudas. Saludos.

1
2209Puntos

estaba cometiendo el error de trabajar todo desde /mnt y no entendía por qué estaba fallando al agregar y quitar permisos si se suponía que desde WSL no había problema

muchas gracias, me resolviste la duda además tentarme aun mas a instalar Linux! 😄

1
16141Puntos

Gracias buen hombre. Samaritano de internet 👍

1
1293Puntos

Muy buen Post, pienso que aclara lo que muchas personas pensamos o conocemos de WSL y de los Sistemas Operativos, te da ese empujoncito que necesitabas para cambiarte a un SO de Linux 😄 ❤️

1
20752Puntos

Yo actualmente me encuentro usando ubuntu, porque por alguna extraña razón cada vez que corría react o vue dentro de wsl con ubuntu no refrescaba, no se si tendrá que ver con el nvm o algo así.
Pd tenía abierta la carpeta dentro del wsl en vsc