Linux WSL for Development Environment
WSL, stands for Windows Subsystem for Linux, is a sub system within Windows OS allowing users to install one or many Linux distributions.
Environment Used in this Article
In this article the following environment / applications are used :
Windows 11, WSL2, Ubuntu 20.04 LTS, Windows Terminal, NVM, and Node.js.
This article and all of the videos are made with NVDA screen reader.
Flexibility
Since I became a screen reader user, due to eye problems, I moved to Windows from Linux Ubuntu.
I am now depend on Windows based NVDA screen reader to use the computer.
Developing on Windows machines means that there will be different environment between development and deployment machines (mostly Linux).
WSL allows me to have a more 'screen reader friendly' environment (Windows desktop)
while having the same environment with the deployment machines (Linux server).
Clean Installation
The next benefit of using WSL is that we will have clean installation since all development tools / modules will be on LinuxWSL.
We will have a much more 'clean' Windows installation.
We can install more than one Linux distributions on one Windows machine.
We can also reset each installed Linux, meaning we can easily have fresh Linux installation on our Windows machine.
To demonstrate 'clean installation' we will install Node.js on Ubuntu and will reset the Ubuntu as below.
Install Ubuntu WSL
To show available Linux distros online, open Windows Terminal / Powershell and run :
wsl --list --online
To install Ubuntu 20.04 use -d <NAME>
as below :
wsl --install -d Ubuntu-20.04
After executing the command above, wait and follow instructions on screen.
Upon completion we need to search for Ubuntu
in the Windows Start menu and execute the installed Ubuntu.
This will start Ubuntu initialization, and then we will be asked to supply username and password.
Up until this point the Ubuntu installation process has been completed.
To display available wsl commands and options, run command below:
wsl --help
If you are interested on watching realtime demonstration videos on how to install Ubuntu WSL on Windows 11,
you can listen / watch it on 2 videos below.
Ubuntu Terminal in Windows Terminal
Follow steps below to run Ubuntu Terminal:
- Run
Windows Terminal
. By default,Windows Terminal
will runPowershell
. - Press
Ctrl
+Shift
+Space
to show list of available CLI applications. - Use up and down arrow to focus on 'Ubuntu'. Then press
Enter
. - Ubuntu terminal should be opened right now. To test, run
lsb_release -a
to display the Ubuntu version.
Install NVM
NVM, stands for Node Version Manager, is a tool to manage Node.js versions in a machine.
NVM can be used to install, remove, and set which version of the currently installed Node.js in a computer.
To install NVM, open Ubuntu Terminal and execute command below.
Command below will pipe the stdout
from curl
to bash
:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
Visit NVM Github page for more detail info.
Demonstration video, about how to install NVM, is available below.
Install Node.js
To test if nvm
is already installed, run nvm --version
on your Ubuntu Terminal.
If nvm
is not recognized by Ubuntu, close the Terminal and try again in a new Terminal.
To install the latest node version, run below command on Ubuntu Terminal.
node
is an alias for 'node latest version'.
nvm install node
To install node with a specific version, put he version like below:
nvm install 14.7.0
To display list of available downable version of node.js, run:
nvm ls-remote
I mostly install LTS versions for have a more stable Node.js. To display only LTS versions run :
nvm ls-remote --lts
To install the latest LTS:
nvm install 'lts/*'
To install the latest version of a specific codename LTS:
nvm install lts/hydrogen
The following command can be used to install LTS version:
nvm install --lts
nvm install --lts=argon
nvm install 'lts/*'
nvm install lts/hydrogen
To select version of node.js to be used, use the command use
:
nvm use 20.04
Up until this point we already have Node.js installed on our Ubuntu WSL. That means we can develop apps in Linux environment on our Windows machine. If you are using VSCode as IDE, you can install extension to access WSL system file.
This is only a demo of using Linux WSL as our development environment.
We can also install other tools for other programming languages.
Reset Ubuntu
Once we feel to have a clean dev environment, we can reset the Ubuntu from start. After reset the Ubuntu we will be prompted to input username and password again before start using Ubuntu.
Follow steps below to reset Ubuntu:
- On Windows, search and open
Settings
. - On the navigation (left side) use up/down arrow to select
Apps
and then pressEnter
. - Press
Tab
to move focus to selectedApps
section. - Press
Tab
to move focus toApps and Features
then pressEnter
. - Press
Tab
several times until findApps list
, which contains list of applications. Prior to the Apps list there is a search box to filter the apps. - Use up / down arrow to look for 'Ubuntu' app.
- Press
Tab
once to focus on the overflow button. - Press
Enter
on theAdvanced Options
. - Press
Tab
multiple times to move focus toReset grouping
. Afterward pressTab
2 more times to focus on theReset
button, then pressEnter
. - After Ubuntu app has been reset, go to
Windows Start Menu
to search and run the Ubuntu app. - Run the Ubuntu app then provide the prompted username and password. Ubuntu is now ready to be used again from the fresh start.
Conclusion and Docker
WSL, Windows Subsystem for Linux, is a breakthrough technology for developers to have multiple and different ecosystem in one machine.
This option is much practical for software developers compare to use technology such as virtual machine,
since developers mostly only want separation down to OS layer and no separation required onn physical layers (memory allocation).
Next, we are going to install Docker wich offers more portability and modularity.
Docker natively runs on Linux. That is why we need to install WSL prior to installing Docker in Windows.
Hope this post useful. Cheers!
Top comments (0)