Dlaczego programista powinien używać WSL (v2) czyli Linux na Windowsie 10

Link do artykułu: Linux na Windowsie 10

Programista potrzebuje dobrego środowiska pracy. Dzięki WSL, Windows nadrabia zaległości w tym temacie. 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 UNIXowych 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 UNIXowych 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 warstwę „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.

Ubuntu 18.04 LTS w 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 tez 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
Lista dystrybucji WSL – komenda wsl –list

Git Line Endings w WSL i Windows

W systemach UNIXowych 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).

Windows Terminal

Roadmapa – Windows Terminal

Stabilna wersja planowana jest na wiosnę 2020 roku.

Oficjalna roadmapa – https://github.com/microsoft/terminal/blob/master/doc/terminal-v1-roadmap.md

Dostępny w Windows Store

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

Windows Terminal w Windows Store

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?

14 thoughts on “Dlaczego programista powinien używać WSL (v2) czyli Linux na Windowsie 10

  1. Dzięki za wpis, nie wiedziałem że można uruchamiać natywne apki, jak notepad, spod WSL. Trzeba jeszcze dodać, że na Windows chyba tylko szaleni używają CMD, jak ktoś miał styczność z LInuxem to wybiera raczej Cygwin albo jak ja GitBash instalowany z gitem dla Windowsa. GitBash to mini unix wszystkie podstawowe komendy i chyba, nie pamiętam, można też instalować do niego aplikacje, MinGW, czyli aplikacje GNU dla windowsa (narzędzia GNU to podstawa dystrybucji Linuxa) i chyba można odpalać wszystkie apki na windowsa (jak w WSL o czym nie wiedziałem).

    1. GitBash i inne to jednak ograniczone rozwiązania. WSL to prawdziwa integracja Linuxa z Windowsem. Cieszę się, że mogłem dostarczyć nowe informacje na temat WSL 🙂

  2. Linux na Windowsie jest na tyle wolny aby nie dało się go używać. Jeśli ktoś nie wierzy proponuję sprawdzić:
    – czasy kompilacji kodu java na windows, linux, linux na windowsie
    – chociażby prostą nakładkę fish z dodatkiem bobthefish pokazującą w jakim branchu git się znajdujemy (tu widać konkretnie jak bardzo tak trywialna operacja jest wolniejsza).

  3. Mam wsl zainstalowany od dawna. Windows mam 1909 od miesiąca.
    Nie ma czegoś takiego jak „–set-version”: Invalid command line option: –set-version

    1. Wersję Windowsa można sprawdzić w CMD za pomocą komendy 'ver’. 1909 to numer wydania, a nie wersji. Aby mieć dostęp do WSL2 należy dołączyć do Windows Insider Program (i wybrać opcję fast). Nie poleca się tego robić, ponieważ nie będzie można tego cofnąć.
      Link do źródła: https://docs.microsoft.com/en-us/windows/wsl/wsl2-install
      Fragment: „To make sure you are using build 18917 or higher please join the Windows Insider Program and select the 'Fast’ ring or the 'Slow’ ring.”

  4. we wpisie pojawiła się drobna nieścisłość: WSL2 działa właśnie w oparciu o maszynę wirtualną, po prostu w sposób mniej irytujący dla użytkownika

    dodatkowo o ile faktycznie po odpaleniu WSL rozszerzenie do ConEmu zwane cmder nie jest aktywne to ConEmu sam w sobie nadal jest doskonałym narzędziem, w chwili obecnej (i na pewno do momentu wydania v1.0, a prawdopodobnie sporo dłużej) nadal znacznie lepszym od WT

    1. Zgadza się. To był skrót myślowy – chodziło o programy typu VirtualBox.
      Windows Terminal to póki co ciekawostka. Ja nie zdawałem sobie wcześniej sprawy, że Microsoft pracuje nad takim narzędziem.

  5. Zapomniałeś dodać dlaczego programista NIE powinien używać WSL 2.
    Np. dlatego, że póki co nie współpracuje z nim na jednej maszynie VirtualBox ani żadne inne narzędzie potrzebujące dostępu do sprzętowej wirtualizacji. Albo dlatego, że póki co trzeba mieć build Windowsa z Windows Insider Fast Ring czyli wersję testową…

  6. WSL będzie idealny jak bedzie z niego dostęp do dysków „linuxowych” takich jak ext4. Tylko na to jeszcze czekam i wtedy usuwam wszytskie maszyny wirtualne.
    Dodam jeszcze że chodzi mi o dostęp natywny a nie przez jakieś kombinacje.

  7. może czegoś nie rozumiem ale wsl może jest pomocny tylko części programistów fe i to takich co pracują w vs code albo vimie. Przy typowym projekcie chciałbym pracować w intelij idea na windows, może użyć sourcetree, a build czy inne narzędzia które potrzebują linuksa czy basha uruchamiać w wsl. Ale to tak nie działa bo nie nie polecane modyfikacja plików z poziomu windows

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *