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 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.

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 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
Lista dystrybucji WSL – komenda 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).

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.

https://antyweb.pl/windows-linux-zmiany-powody/

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 in WSL

Developing Docker-Powered Apps on Windows with WSL 2

What’s new in 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

Komentarze

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

  1. Awatar nic
    nic

    Micro-soft zrobił tego gniota bo na linuxie już od 10lat działają aplikacje windowsowe bez problemu łącznie z oficem i rejestracją.
    Od dawna są narzędzia do wirtualizacji a micro-soft się obudził.
    Dlaczego gniota bo działa tylko linia komend czasami aplikacje. Jak korzystam z VirtualBoxa to wszystko chodzi w zamkniętej przestrzeni chcę zrobić kopię to robię owszem duża ale się da.
    Jak IBM zrobił system operacyjny(20lat temu)(szkoda że się nie rozpowszechnił) to od razu jak otworzyłem dwa edytory to można było edytować i widzieć zmiany czego do tej pory nie tego ma w win. (Czasami działa to z oficem)

    1. Myślę, że to nie było powodem powstania WSL. Obstawiam, że zapotrzebowanie na porządną linię komend było duże (profesjonalizacja niektórych branż, w tym także programistycznej), więc musieli podjąć działania.
      No niestety nie wszystko wychodzi im najlepiej, ale mam nadzieję, że będą podejmowali lepsze decyzje w przyszłości.

  2. Awatar Arek
    Arek

    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

  3. 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.

  4. Awatar Gerald z Warszawy
    Gerald z Warszawy

    Programista nie powinien pracować na Windows ten system to porażka.

    1. Windows nie jest idealny. To na czym pracujemy jest najczęściej podyktowane przez koszt lub przez pracodawcę, który udostępnia sprzęt do pracy.

  5. Awatar klakier
    klakier

    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ą…

    1. Nie pisałem o tym, ponieważ tytuł mówi o czymś innym :). Oczywiście trzeba uwzględnić te elementy, o których piszesz.

  6. Awatar zakius
    zakius

    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.

  7. Awatar AE
    AE

    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.”

  8. Awatar Heh
    Heh

    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).

    1. Sprawdzałeś WSL w wersji drugiej? Podobno zacznie przyspieszyła.

  9. 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 🙂

Dodaj komentarz

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

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.