Programista potrzebuje dobrego środowiska pracy. Dzięki WSL Windows nadrabia zaległości na ten temat. Przedstawiam, dlaczego programista powinien używać WSL oraz instrukcję instalacji. W artykule pojawią się również: WSL 2, Git line endings, Windows Terminal.
Czym jest WSL (Windows Subsystem for Linux)?
Na początku warto zacząć od tego, czym jest WSL. Windows Subsystem for Linux pozwala użytkownikom (narzędzie skierowanie głównie do deweloperów) Windowsa na uruchomienie środowiska Linuxowego bez użycia wirtualnej maszyny — mniejsze zużycie zasobów i lepsza integracja pomiędzy Windowsem, a Linuxem. To doskonała wiadomość dla programistów pracujących na Windowsie, ponieważ ułatwia pracę z narzędziami konsolowymi.
Dlaczego warto używać WSL?
Istnieje wiele powodów, dla których warto używać WSL. Każdy deweloper ma swoje przyzwyczajenia i problemy, które wynikły podczas pracy w Windowsie i mógłby dopisać coś do listy. Poniżej wymienię powody, które uważam za najistotniejsze.
Dostępność konsolowych narzędzi
Wraz z dostępem do Linuxa w Windowsie otrzymujemy dostęp do konsolowych narzędzi, które były czymś normalnym podczas pracy na macOs czy Linuxie. Jako Front-end deweloper używam takich narzędzi jak Node, npm czy Git. Tego jest znacznie więcej. Jedynym ograniczeniem jest możliwość używania 64-bitowych oprogramowania.
Na Windowsie też można było używać Node.js czy Git
Owszem, można używać tych narzędzi bez WSL. Różnica polega na tym, że takie narzędzie można zainstalować tylko przez instalatora specjalnie przygotowanego na Windowsa przez autora. Oczywiście miało to za sobą ograniczenia, ponieważ takie rozwiązanie czasami powoduje błędy w działaniu. Ograniczeniem jest także współpraca natywnej konsoli w Windows. Czasami trzeba wykonać dodatkową konfigurację, w przypadku wersji UNIX-owych wszystko jest gotowe do pracy.
Ulubione komendy UNIXowe w zasięgu ręki
Jeśli pracowałeś (lub nadal to robisz) na macOS czy Linuxie to z pewnością ucieszy fakt, że masz możliwość korzystania z komend UNIX-owych w Windowsie, dzięki WSL.
Integracja z Windowsem – łatwy dostęp z Windowsa
W przypadku chęci instalacji serwera (np. nginx) na WSL otrzymujemy łatwy dostęp do niego z poziomu Windowsa. Wystarczy postawić serwer, a następnie w przeglądarce uruchomić go. Nie ma potrzeba wykonywania specjalnej konfiguracji czy ustawiania portów, tak jak to było w przypadku wirtualnej maszyny.
Integracja z Visual Studio Code
Visual Studio Code posiada rozszerzenie, które pozwala na integrację edytora z WSL. Wtyczka umożliwia korzystania z terminala WSL bezpośrednio w aplikacji. Plugin dostępny jest pod tym linkiem.
Uruchamianie programów z poziomu konsoli
W terminalu WSL można uruchomić programy zainstalowane na Windowsie np. Notepad (😉) lub Visual Studio Code.

Docker dostępny w WSL2
Wraz z wydaniem wersji drugiej WSL, zespół dockera umożliwił pracę na nim wraz z WSL2. W pierwszej wersji docker miał problemy z działaniem deamona. Więcej o dockerze dostępnym na WSL2 w oficjalnym artykule.
WSL vs WSL 2
W jesiennej aktualizacji wyszła nowa wersja WSL 2. Wprowadza wiele zmian. Szczegółowo opisane zostały na stronie Microsoft (o WSL 2) oraz na stronie opisującej różnice w doświadczeniu użytkownika (User Experience).
Istotne zmiany według mnie poniżej.
Wbudowany kernel Linuxa
W WSL 2 został wbudowany kernel Linuxa, a następnie przystosowany i zoptymalizowany dla Windowsa.
Szybsze działanie na plikach
Zwiększono wydajność działania operacji na plikach. W porównaniu do WSL 1 WSL 2 działa (według oficjalnej strony):
- 20 razy szybciej przy wypakowaniu zipa
- 2 – 5 razy szybciej przy użyciu git clone, npm install, cmake
Więcej możliwości / funkcji
Własny wbudowany kernel Linuxa umożliwia pełną kompatybilność, co oznacza, że można korzystać z wielu narzędzi dostępnych na Linuxa. W pierwszej wersji WSL użyto warstwy „translacji”, która tłumaczyła wszystkie operacje — była budowana przez zespół WSL.
Instalacja WSL (Windows Subsystem for Linux) na Windows 10
Przed instalacją Linuxa warto zaktualizować system Windows (w niektórych przypadkach będzie to wymagane).
Pod tym linkiem znajduje się oficjalna instrukcja instalacji (wraz z listą dostępnych dystrybucji Linuxa).
Poniżej najważniejsze punkty.
Instalacja Windows Subsystem for Linux
Do instalacji Linuxa trzeba upewnić się, że funkcja WSL jest włączona.
Można to zrobić komendą w Powershellu (uruchomionym jako administrator):
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Instalacja dystrybucji Linuxa (Ubuntu)
Aby zainstalować Linuxa (Ubuntu w tym przypadku) należy to zrobić z poziomu Windows Store.

Konfiguracja
Po poprawnej instalacji będzie można uruchomić Ubuntu. Przy pierwszym uruchomieniu trzeba podać nazwę użytkownika i hasło.
Gotowe! 😎
Instalacja WSL w wersji 2
Włączenie VMP i WSL
W Powershellu (jako administrator) należy wykonać:
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Zmiana wersji dla dystrybucji
Zmiana wersji WSL należy wykonać w Powershellu poprzez wykonanie:
wsl --set-version <Distro> 2
Można też ustawić domyślną wersję dla nowo zainstalowanych dystrybucji.
wsl --set-default-version 2
Wyświetlanie wersji
Do wyświetlenia wszystkich dystrybucji wraz z używaną wersją WSL należy wykonać:
wsl --list

Git Line Endings w WSL i Windows
W systemach UNIX-owych oraz w Windowsie są inne zakończenia linii — CRLF i LF. Aby uniknąć niepotrzebnych zmian podczas pracy na Windowsie i WSL warto to skonfigurować.
Globalnie poprzez komendę.
git config --global core.autocrlf input
Dla konkretnego repozytorium poprzez plik .gitattributes.
Pod tym linkiem opisane jest jak to zrobić wraz z przykładem pliku .gitattributes.
Konfiguracja 'line endings’ opisana przez Github.
Przewaga WSL nad Cmder
W jednym z poprzednich artykułów opisałem emulator konsoli — Cmder.
Dlaczego WSL jest lepszy od Cmder?
Przede wszystkim Cmder to tylko emulator. WSL to znacznie bardziej rozbudowane narzędzie, które posiada duże wsparcie i umożliwia uruchamianie narzędzi dostępnych w Linuxie (również instalowanie).
Windows Terminal – nowy terminal dla Windowsa od Microsoft
Warto wspomnieć, że Microsoft pracuje nad nowym terminalem — Windows Terminal. Ma być nowoczesny, szybki i lepszy. Program jest udostępniony na Github (tak! To projekt z otwartym źródłem — open source).
Windows Terminal wymaga minimum Windows 10 1903 (build 18362).

Roadmapa – Windows Terminal
Stabilna wersja planowana jest na wiosnę 2020 roku.

Dostępny w Windows Store
Terminal dostępny jest w Windows Store. Warto przetestować.

Dlaczego Microsoft stworzył WSL?
Z nadejściem Windowsa 10 wiele się zmieniło. Osobiście odczuwam, że system i stosowane w nim rozwiązania są coraz bardziej przemyślane i intuicyjne — czego nie można było powiedzieć o poprzednich wersjach systemu. Może w końcu dostrzegli problem programistów na Windowsie? Mam nadzieje, że sytuacja będzie coraz lepsza.
Poniżej ciekawy felieton, w którym Antyweb opisuje, dlaczego Microsoft tak się zmienia.
Podsumowanie
WSL to krok w dobrą stronę. Trzymam kciuki za rozwój tego i mam nadzieje, że w przyszłości programista będzie miał do wyboru systemy, które naprawdę ze sobą konkurują. Osobiście używam macOS i Windowsa i wiem, że programista nie chce się zastanawiać czy jego środowisko jest dobre i stabilne tylko chce programować bez problemów. Warto spróbować z WSL.
Czy będzie lepiej? Czy WSL wystarczy, aby zachęcić programistów do korzystania z Windowsa? Co myślicie?
Być może zainteresuje cię również
Linki
Co nowego w Windows 11 23H2? Copilot, wsparcie AI, nowe narzędzia dla programistów i więcej
Developing Docker-Powered Apps on Windows with WSL 2
How to install Linux on Windows with WSL
Configuring Git to handle line endings
Miłość Microsoftu do Linuxa to najlepsza sprawa dla Windowsa
Dodaj komentarz