in tech

Linux na Windows

Neptejte se mě proč, sám z toho občas nejsem nadšený, ale jako jeden z posledních lidí na světě jsem stále na Windows. V praxi se s nimi dá žít, ale nebudu zastírat, že souhlasím s filosofií “čím linuxovatější, tím pro vývoj lepší“. Dobře to uchopil Mac, kterému se historicky podařilo skloubit dobrý hardware, použitelné uživatelské prostředí a unixový základ systému. Pro mě osobně je pak ještě lákavější Linux, zvlášť v době zařízení typu Dell XPS 13 Developer Edition, ale případné úvahy na toto téma nechme na jindy. Teď bych se chtěl podívat na to, jak jsou na tom Windows s linuxovými nástroji dnes.

“Linux” jde do systému dostat třemi základními způsoby:

  1. Cygwin nebo MSYS2, v podstatě emulace UNIX-like / POSIX prostředí. Mimochodem, v MSYS2 je plný pacman, package manager z Arch linuxu, takže je to docela ‘real deal’.
  2. Git for Windows, se kterým přijde “Git Bash”. Do začátku dobrá a jednoduchá možnost, založená na MSYS2 (zde jsou detaily).
  3. Windows Subsystem for Linux (WSL), známý především skrze “Bash on Ubuntu on Windows” (Microsoft pojmenování vždycky uměl!).

První dvě možnosti jsou dobré v tom, že z cmd.exe lze snadno dělat věci jako rm -rf nebo grep, aktivně to využívám a už to Windows povyšuje na jinou úroveň.

Hodně zajímavá je ale třetí možnost, WSL. To je totiž (zjednodušeně řečeno) plné Ubuntu běžící “nativně” ve Windows. WSL emuluje Linux kernel a umožňuje spouštět normální Linux binárky, takže třeba když donedávna pro Windows chyběl kubectl klient, šlo ho doinstalovat pomocí apt-get install a frčet. Další důležitý use case je výkon, např. přefiltrovat Git historii je daleko rychlejší ve WSL než v Git for Windows. Nevýhodou pak je, že je to v podstatě systém v systému: binárky se instalují dvakrát, sync mezi počítači si jinak řeší Windows a Ubuntu, apod.

Windows (včetně WSL) mají ještě jeden zásadní problém, a to je výkon. Např. Git operace jsou na čistém Linuxu rychlejší minimálně o řád. Nevím, jestli to je pomalostí NTFS nebo je něco špatně v jádře Windows, ale zatímco lehký opruz se zpětnými lomítky, tupým základním shellem apod. se dá řešit, výkon bohužel ne.

Naštěstí se poslední dobou dějí v Microsoftu věci. Pro samostatný blog post si nechám to, co dělají kolem Gitu, a zatím postnu toto:

NTFS změny v příštích Windows

Nebo se podívejte na tento komentář na GitHubu. V Microsoftu vědí, že mají problém, a snaží se. Celkem nemám pochybnosti, že technicky se stanou velké věci: např. nativní běh Dockeru na WSL je IMO jen otázkou času (a byla by to pecka!). Pak je ještě otázka, nakolik se podaří propojit historicky dva oddělené světy, například bych si ve svém oblíbeném klikacím Git klientovi rád nastavil git binárku tu z Linuxu, půjde to? A kde se bude ukládat klíč k GitHub účtu, ve Windows Credential Storu nebo v Linuxovém ekvivalentu? Frikci bohužel očekávám a “Mac je stále Mac”, ale za posledních mnoho let je zrovna teď čas, kdy je naděje na vývojářsky silné Windows asi největší.

Write a Comment

Comment

  1. k Dockeru ve WSL: jeden z členů týmu nědávno na twitteru napsal, že se jim v nějakém buildu podařilo Docker rozběhat. Nevím sice na kolik je to stabilní / funkční, ale řekl bych že se nějaké částečné podpory dá očekávat v následujícím velkém updatu windows a plné snad v druhém updatu tohoto roku.

    • Některé aplikace pro Linux nejsou, plus jsem obecně celkem šokovaný, jak tam jsou věci pořád rozbordelené (i základní typu instalace balíčků, ukládání Git credentials apod.). Plus lehký strach z hardwarové situace.

      Žádná platforma dnes IMO není jednoznačná výhra.

      • S tímhle naprostý souhlas. Nedávno jsem si hrál s Ubuntu 16.04 a hned při instalaci k x chyb. Linux = neustálé Googlení, problémy s drivery. O víkendu jsem testoval Chromium OS + Linux skrz Crouton a to byla oproti tomu úplná brnkačka.

        Jinak můj “stack” je dost podobný – zejména kvůli designovým programům typu Affinty Designer, PS, Axure…

        WIN10 (funkční SSH, RSYNC….)
        GIT
        Cmder
        VS Code…
        Ubuntu lxc, ale nepoužívám, když už jsem rozchodil všechno na Cmderu…funguje tam dokonce i SSH agent při načtení…takže jsem konečně zahodil Putty.

        • Nepodařilo se ti v cmderu nějak rozjet zsh tak, aby to pořád bylo v kontextu Windows (ne WSL)? Např. v Git bashi? Zbožňuju jejich doplňování cest a lovení commandů z historie.

  2. Já byl dlouholetý uživatel Windows a neustále si hledal výmluvy, proč na něm zůstat. Když jsem však zatnul zuby a přešel na Mint, později Ubuntu, značně se mi ulevilo a vývoj se stal zábavou 🙂 Nějakou dobu jsem přepínal mezi systémy, třeba kvůli Photoshopu, ale i to jsem vyřešil.