Windows 10 now supports Windows Subsystem for Linux and it let you run GNU/Linux environment on top of the Windows system.
I am going to walk through the minimum setup for Golang development with Windows 10 + WSL.
The setups are:
Before you start, check your windows version with Windows Key + R
and then type winver
.
In case you have Windows version older than version 2004 you can’t install WSL 2, but you still able to install WSL 1. You need to update your Windows 10 to version 2004 Build 19041 in order to install WSL 2. To update it, you can update from your Windows setting or use the Windows update assistant.
In case you saw this following screen from update assistant, that is fine and you can keep installing WSL and using Linux environment on your Windows.
In my case, it is not an issue with WSL 1 for my development enviroment. For full comparison between WSL and WSL 2 you can check it here.
To install WSL, you need to enabling “Windows Subsystem for Linux” optional feature. There are two ways to doing it.
First way, open PowerShell as Administrator and run:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
Second way, goes to Turn Windows features on or off
setting and check Virtual Machine Platform
and Windows subsystem for Linux
Installing Ubuntu is pretty simple in Windows 10. You can go to Windows Store and search ubuntu
then click “Get”, it will install it on your WSL directly.
Once the installation is done, try to press Windows Key and type “Ubuntu”, then open the Ubuntu application listed there, you should be redirected to a linux terminal and your linux system already up and running.
In this example, we are going to install Go 1.14.4 version, in case you want to install the newer version, the steps should be identical you just need to replace the download link from Go official site. Open your WSL terminal and run these commands:
# Download the Golang source into ~/Download folder
wget -P ~/Download https://golang.org/dl/go1.14.4.linux-amd64.tar.gz
# Extract the source code
sudo tar -C /usr/local/ -xzf ~/Download/go1.14.4.linux-amd64.tar.gz
To verify your installation you can type go version
and it should show the go version installed on WSL.
For working with VS Code, you should install it on your Windows side, not in the WSL. Go to VS Code site and download the Windows installer. Then open the downloaded .exe
file and finish the installation.
When prompted to Select Additional Tasks during installation, be sure to check the Add to PATH option so you can easily open a folder in WSL by typing code
command on the working directory.
After the installation is finish, install the “Remote Development Extension Pack” to your VS Code. You can install it from here, or you can search it on the VS Code extension market place.
After restarting you VS Code, you should see WSL on the bottom left corner of your VS Code. And now you are able to use your VS Code normally.
This step might not required if you are not using docker for your development. In case you need it you can run these following command from your WSL. (in my case, I am installing Ubuntu 20.04 in my WSL)
# download .deb package for docker
wget -P ~/Download https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce_19.03.12~3-0~ubuntu-focal_amd64.deb
wget -P ~/Download https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/docker-ce-cli_19.03.12~3-0~ubuntu-focal_amd64.deb
wget -P ~/Download https://download.docker.com/linux/ubuntu/dists/focal/pool/stable/amd64/containerd.io_1.2.13-2_amd64.deb
# installing docker-cli and docker-ce
sudo dpkg -i ~/Downloads/docker-ce-cli_19.03.12\~3-0\~ubuntu-focal_amd64.deb
sudo dpkg -i ~/Downloads/containerd.io_1.2.13-2_amd64.deb
sudo dpkg -i ~/Downloads/docker-ce_19.03.12\~3-0\~ubuntu-focal_amd64.deb
Try verify your installation with docker info
, in case you found the output something like this one, try to use sudo
.
Client:
Debug Mode: false
Server:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info: dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info
If you want to access docker without sudo
you can run this following command:
sudo usermod -aG docker $USER
Afterwards, close the terminal or logout your profile to take effect. That command is going to add your linux user into docker user group.
AutoHotkey will help you to remap your keyboard buttons for better experience with your development. Let say you are using vim
and you want to swap your CapsLock
into extra Esc
button.
Config for Swap CapsLock
into extra Esc
button:
;Remap hotkeys
CapsLock::Esc
Esc::CapsLock
PowerToys is an app launcher that might help you productivity. This app launcher works like “Spotlight Search” in the MacOS.
This article was originally published at Medium
#golang #powertoys #docker #wsl #linux