Eida.cz - Výlety do Oken

Výlety do Oken

Eida

Co si nezapíšu, na to celkem okamžitě zapomenu. Když se něco nepoužívá nějakou dobu, nechá se to prostě zarůst a už se k tomu nedostaneme. Až do nějaké chvíle. Tou chvílí je mohutnější rozmach spotřební třídy Airů do sfér, kde nebývaly úplně běžné – typicky střední státní správa, školství, výroba papučí. Nebo tak něco. Zkrátka a dobře oblasti, kde se běžně ze smutného historického důvodu používají Windows a pro ně uzpůsobené specifické aplikace.

WINE je tu s námi už hodně dlouho a dlouho pořád bude. Netřeba ho představovat. A zvlášť teď, tedy po přechodu Cataliny na plně 64bitový režim, se kterým si hezky v CodeWeavers plynule pohráli, nebo přípravy Apple na portování her přímo na Metal. Má to smysl a uvidíme, jak ta budoucnost bude vypadat. Aktuálně je současnost taková, že s Dockery a Flatpaky a vším takovým začíná být zvykem, že se aplikace rády balíčkují se vší svou podporu, aby mohly pohodově běžet všude. Z hlediska provozu Windowsových aplikací na Macu to není taková novinka, poměrně krátce po rozmachu Intelu vzniklo spoustu docela příjemných řešení, které tím ti jiným způsobem zabalily aplikaci do nativního bundlu a uživatel se nemusel o nic starat.

Všechno má samozřejmě dvě strany. Aby to bylo prostorově efektivní, na systému běží nějaká globální instalace WINE a jednotlivé aplikace mají pouze své uzpůsobené prefixy. Pokud to ale takhle nejde, vždycky existuje možnost udělat balíček, ve kterém bude kromě prefixu i celé WINE, podobně jako se do mnoha programů přibaluje celé JRE. Jsou na to koneckonců nástroje od všech těch Ciderů a Bottlerů a Wineskinů, všechny by měly fungovat podobně.

Když do systému přišel GateKeeper, byla to poměrně kouzelná novinka. Do jisté míry zabránil dorazivším obyčejníkům kazit si jak vlastní, tak především cizí Macy. SIP a zapečetěné snapshoty to pak už jen pozvedly na vyšší úroveň. Co ale zbylo, jsou rozšířené atributy různých příznaků, podle kterých je možné zakázat spouštění cizího, neznámého a nepodepsaného kódu. Legrace je, že vytvoření aplikačního balíku, který defacto spouští i podepsané WINE, je vlastně tvorbou nové aplikace, kterou by bylo (a je možné!) vhodné podepsat nějakým důvěryhodným klíčem. Je otázka, jak to přesně funguje pod kapotou – MacOS stub spustí wrapper, který natáhne preloader a ve spuštěném prostředí teprve začne běžet cílové .exe. To je hodně vrstev, na kterých se to může nepovést.

Když si sestavíme aplikaci na vlastním počítači, vše bude fungovat výborně. Kámen úrazu nastane, pokud ji budeme chtít poslat někomu jinému na další počítač – obvykle to skončí nicneříkajícím hlášením o to m, že je aplikace poškozená a měla by se zahodit do koše. Je to samozřejmě vlastnost GateKeeperu, kdy je tato aplikace automaticky vložena jako nedůvěryhodná do karantény, bohužel z výše uvedené posloupnosti důvodů není tak snadné toto opravit pouhým kliknutím pravým tlačítkem a potvrzením otevření na vlastní pěst.

Takže když to shrnu, na novém stroji je potřeba nepodepsanou aplikaci vyndat z karantény začarováním xattr -dr com.apple.quarantine [cesta/bundle.app], čímž se tedy příznak karantény odstraní ze všech souborů (-r) v balíčku. Pak už to poběží. Kdyby to šlo automatizovat bez podpisu, pak by asi GateKeeper neměl moc smysl. Nenaděláme asi nic.

Takže toliko k výletům do Oken. Těch se stejně asi nezbavíme, ale bylo by moc hezké, kdyby se tedy nové aplikace navrhovaly nějakým novým, alespoň do-budoucna-zamýšleným způsobem, i kdyby to měly být populární web-assembly a podobné blbiny, když už to teda nejde opensource. Protože sledovat, jak poměrně jednoduchá dialogová aplikace s několika tabulkami, která používá prakticky jen spojení na PostgreSQL, obaluje kvůli .NET na nechutných 10 MB, které pak zabalíčkováním s WINE a prefixem rozšíříme na neuvěřitelných 1.3 GB, to opravdu není úplně cool. Ale višjak, nenaděláme nic.

Na druhou stranu tohle řešení díky Rosettě 2 běží naprosto výborně i na moderních armových čipech, a to možná dokonce lépe, než kdyby to byly arm64 Windows, na pod kterými by musel být spuštěný tento x86_64 kód. To z macOS dělá opravdu super platformu a nedává mi moc smysl, proč z podobného důvodu nemůžeme mít Rosettu 1 pro spouštění PowerPC aplikací, a to zvlášť, když historicky dříve byly také velmi dlouho udržované enterprise aplikace pro m68k. Období tygříků a leopardů s ppc32 na x86 bylo velmi krátké a pořád si stojím za tím, že deset let strávených na Intelu byla pro Apple velká strategická chyba, ze které se bude vzpamatovávat ještě velmi dlouho, přičemž Rosetty 2 se už asi jen tak nezbavíme. Bude historickým vykřičníkem, který nám jednoho dne připomene, že jen velkou pílí a technologickými inovacemi můžeme zasypat díry vykopané honbou za novými tržními segmenty.

Tento článek přečetlo již 106 čtenářů (0 dnes).

Komentáře

Nový komentář