Forrás: http://jox.hu/cikkek/179/12
Wine használata Ubuntu alatt
Előzmény
Sajnos egy hirtelen mozdulattal rossz helyre (Levélszemét) húztam annak a kedves felhasználónak a levelét, aki az Ubuntu alatt futtatható exe-kről érdeklődött. Kárpótlásul kerestem egy olyan forrást, ami a kezdőknek is érdekes olvasmány, de viszonylag terjedelmes. A cikk az eredeti szöveg másolata. További kérdéseket a forrás linkjén működő hozzászólásoknál várják a szerkesztők. (Utólag is elnézést - stewet)Az emulátorokról
A Microsoft rendszerekre készített programok az eltérő fejlesztői környezet, a más alappillérek, a más szerkezet, és úgy egészében a más software platformok miatt "csupán" a Microsoft megfelelő rendszerének jelenlétében hajlandóak elindulni - így sajnos csak ott tudjuk használni őket. Vagy mégsem? Egyáltalán, miért van szükség Linuxon használni egy gyökeresen eltérő megoldás programjait? A kérdés technikai megközelítése szerencsére nem zárja ki egy utánzott környezet használatának lehetőségét, mivel a Bill Gates rendszereire készült programkódok futásának feltétele javarészt a szükséges dll állományok, a regisztrációs adatbázis, az említett rendszerekre jellemző DirectX környezet, valamint egy megfelelő mappaszerkezet jelenlétében keresendő. Mindezek utánzására készült (és készül jelenleg is, rendületlenül) a közösségi munkával fejlesztett, szabad forrású fejlesztések egyik nagyágyúja, az ingyesesen és szabadon elérhető Wine wrapper.
Használatának általában két oka van. Az egyik a valójában eszméletlenül nagy számosságban jelen lévő "szabad fejlesztések" esetlegesen nem fedik le a felhasználói, fejlesztői, illetve szórakozásra szánt (jellemzően) kereskedelmi fejlesztések teljes terét. Ez a jelenség többek között a szigorú jogvédelemmel bíró fejlesztések okára vezethető vissza, így jelen pillanatban nem létezik pl. Macromedia fejlesztőkészlettel kompatibilis, szabad, ingyenes megoldás. Ezt a helyzetet bonyolítja az, hogy a kereskedelmi programokat fejlesztő, komoly szaktudással rendelkező személyek javarészt nem is igazán törik magukat a Linux rendszerek támogatását illetően.
A másik problematika szerint egyes esetekben a programozónak teljességgel lehetetlen Linux rendszer alá ültetni a programját - mivel az nagyon komolyan, gyökereitől támaszkodik a DirectX API (API: programozási felület) gyűjteményekre. Ezek a programok jellemzően a színvonalas játékokat jelentik. Hiába létezik a kereskedelmi játékok elit rétegének cirka 60 szereplője natív linuxos portolással, hibába rendelkezik a számítógépes társadalom sok esetben a commercial ( kereskedelmi) modellt meghazudtoló "szabad játékokkal", ettől még a világon fellelhető szórakozást szolgáló kereskedelmi programok bő 90%-a sajnos nem fut natívan Linux alatt. A dologban talán az a legfájóbb, hogy a programozó csapatok sok esetben Unix/Linux alatt fejlesztik a játékaikat/programjaikat, mely "szülőrendszerről" aztán "kegyesen megfeledkeznek", tisztelet a kivételnek.
Térjünk egy kicsit vissza az elejéhez. Miért is nem emulátort írtam az előbbiekben? Az ok nagyon egyszerű: azért, mert valójában nem emulátorról van szó. Kissé furcsán hathat ez a mondat az eddig leírtak után, de egy aprócska magyarázat után remélhetőleg tisztább képet kap az olvasó. Ez a megoldás nem törekszik a Windowsok teljes körű utánzására, csupán a cikk elején már említett feltételek kielégítésére - így természetszerűleg nem használható teljes értékű Microsoft rendszerként. Itt nem fogjuk, és nem is tudjuk a berögződött Start menüt elővarázsolni, nem fogunk Windows felhasználói rendszerkomponenseket, beépített segédprogramokat használni - csupán a nekünk tetsző programmal "elhitetni" azt, hogy ő bizony nem Linux alatt fut, majd a szükséges állományok meglétével megpróbáljuk működésre bírni a kiszemelt "áldozatot".
A Wine projekt
A Wine projekt életre hívásának éve valamikor 1993-ra tehető, amikor egy maroknyi fejlesztő a Microsoft Windows 3.1 rendszerére (a rendszer itt egy kicsit erős jelző) készített programok Linux alatt történő futtatását tűzte ki célul maga elé. A fejlesztések lassú ütemben haladtak, így a projekt valamikor 1996 végén jutott el arra szintre, hogy az időközben megjelent Windows 95 utánzásához szükséges munkálatokat el tudják kezdeni. A kód írása valamikor még ebben az évben eljutott egy komolyabb szintre, minek által a már a 32 bites Windows környezetét utánozva a wrapper képes volt megbirkózni egy Microsoft Word- és Excel párossal is. Az indulás óta eltelt 12 év bizonyította, hogy a nagyjából "bő hónapos" fejlesztési ciklusokkal dolgozó csapat egy mérhetően nagy hatékonyságú programot alkotott, mely általánosan és mérhető hatékonysággal bevethető a legváltozatosabb programok esetén is. Hab a tortán, hogy a kezdetek óta ingyen és szabadon érhetjük el a wrappert a hivatalos honlapon keresztül, mind forráskód állapotban (amit mi magunk fordítunk le a számunkra jelentősséggel bíró paraméterekkel), mind "kész" formában (különböző Linux disztribúciókra előre fordítva, természetesen a megfelelő csomagformátumban). A mai fejlettségi szintre jellemzően az első Windows verzióktól kezdve egészen az újabb keletű XP wrappeléséig mérhető sikerrel teszi a dolgát - külsős munkákat is a kosárba téve a DirectX 9 jelentősebb API-jait is sikeresen utánozza. Nem kissé szerencsés módon, az alap projekt munkáját használva időközben két csapat jelentős projektje is nagy sikerre tett szert.
Egyikük, a Transgaming munkája a Cedega (régebben WineX) névre hallgat, mely elsősorban a Win95 - WinXP rendszerre készült komoly, 3D játékok futtatásához szükséges DirectX környezet tökéletesebb támogatásában tér el az alapkódtól. Eme wrapper némileg csökkentett képességekkel érhető el ingyenesen, forrásállapotban, illetve platformfüggetlenül, készre fordítva - extra feature-k társaságában kereskedelmi termékként.
Másik "csapatunk", a CodeWeavers teljes mértékben kereskedelmi szemlélettel a másik oldal felhasználói-fejlesztői programjainak Linux alatti futtatására szakosodott.
Használatba vétel, első lépés
1. Az alap projekt (Wine) hivatalos honlapjáról letöltött archívok környékén fogunk nézelődni. Itt fellelhető ugyebár a forrás és a kész bináris anyag egyaránt. Kissé meglepő módon létezik Windowsra fordított verzió is: ennek értelme abban merül ki, hogy egy Win95 alatt ez képes akár XP rendszerként "működni", illetve XP alatt akár Win 3.1 -ként is. (Utóbbit természetesen az XP kompatibilitási módját megkerülve teszi). Esetünkben a forrással fogunk foglalkozni, mivel a binárisok telepítése viszonylagosan egyszerű, kimerül az adott disztribúció csomagkezelőjének használatában. A letöltött forrást kicsomagolva egy írható területre, a benne lévő configure szkriptet elindítva, a forrásban létrejönnek (természetesen mappánként) a fordításhoz szükséges Makefile állományok, valamint az igen komoly függési lista alapján az ebben lévő prefixek is rögzítésre kerülnek. Amennyiben minden szükséges csomagot, komponenst rendben talált a konfigurátor, a make depend && make parancsokkal (tehát a függések figyelembe vételével) az alapértelmezett gcc kompiler lefordítja a forrást, így előáll a projektünk futtatható állapotban - saját gépünkhöz és rendszerünkhöz optimalizáltan.
A fordítás első pontjain jelentősen eltérhetnek a felhasználók szokásai, hiszen a readme állományokat végignyálazva átlátható: a Linux rendszerünkben alkalmazott OpenGL leírónyelv képességeit tökéletesen ki lehet kihasználni, debughoz szükséges funkciókat teljesen le lehet tiltani a megfelelő paraméterezéssel. Természetesen a prefixek (a telepített Wine elérési útjai) is módosíthatóak még a munkánk elején, ha leendő user szükségesnek véli az alapértelmezéstől eltérni. Ha hiba nélkül létrejött a futtatható Wine (állományival és mapparendszerével együtt), a make install parancs segítségével "benyomhatjuk" a rendszerünkbe, ahonnan majd bármely felhasználó indíthatja egy terminálra vert wine paranccsal (ha a kompiler hibát jelez, más paraméterekkel kell újra próbálni a fordítást, természetesen tiszta lappal - tehát make clean parancs után).
Második lépés
Miután a felhasználó (nem a szuperfelhasználó!) kiadta a wine parancsot, a home mappájában létrejön egy .wine (rejtett) és egy wine (nem rejtett) mappa. Előző lesz a konfigurációs állományok és a regisztációs adatbázis mappája, utóbbi a fake mappa. Mindezt tökéletesen be kell állítani a .wine mappában létrehozandó config állományban. Példa konfigokat, üres konfigokat a hivatalos honlap tartalmaz (erre nem térünk ki, mivel extrém módon meghosszabítaná a cikket, ráadásul feleslegesen: a Wine oldalán elérhető wineTools csomag segítségével minden ilyesmi gépészkedéstől mentesülhetünk). Ebben a fázisban a szemfülesebbeknek feltűnhet egy extra attrakció: a wrapper a saját, utánzásra született fő állományai helyett képes a merevlemezünkön esetleg fellelhető Windows rendszer dll- és egyéb állományainak használatára. Tapasztalataink szerint nem szerencsés erre a megoldásra voksolni, ellenben mindenképp megér egy próbát. Helyes konfigurációs beállítás esetén egy csatolt CD-ről wine programnév.exe parancsra a kívánt program a "cseles" rendszert használva lefut. Ha az előbb pl. egy telepítést kíséreltünk meg, akkor a telepített útvonalra (jellemzően /home/$prefix/wine/elérési út) állva ismét kiadva a(z előbb leírt szerkezetű) parancsot, a telepített program elindul.
A wrappelt környezet természetesen nem 100% -os hatékonyságú. A kiszemelt program futásánál nem szabad elfelejtenünk, hogy egy Linux rendszer is fut az "ál-Windows" alatt, így a jelen lévő hardver teljesítményének bizonyos része nem lesz érezhető. Ha számokat kellene írni, akkor talán CPU 80%, RAM 30-80%-ban használható ki, nem beszélve a kényes OpenGL/3D beállításoktól, hálózati kapcsolattól. (A memória használat azért ennyire szélsőséges, mert nagyban függ az alkalmazott fizikai RAM mennyiségétől, és a kiszemelt alkalmazástól is. 512+ MB RAM alkalmazásának esetén már a 80% felé tart a mutató.)
Az alap projekt kompatibilitási listája nem naprakész, így az interneten fellelhető támogatott Windows programok listája a leírtaknak sokszorosa - érdemes tehát próbálkozni. A Transgamig, illetve CodeWeavers munkáinál már egész testes listát találhatunk, a megcélzott programok rétegeiből válogatva. Ettől függetlenül olyan Windows alkalmazásokat, melyekkel pénzt keresünk, tanácsos fokozott figyelemmel használni. Nem szabad megfeledkeznünk arról sem, hogy az utánzott környezet a Linuxtól eltérően sérülékeny, vírusok és egyéb ártó kódoktól alapvetően védtelen.
Végezetül
A Wine egy sokat bizonyított, kiemelt és fontos projektje a "szabad informatikai világnak". De azért ne menjünk el szó nélkül amellett sem, hogy Linux alatt a Windows világának megszokott, sok esetben kereskedelmi termékei jelentős részben rendelkeznek "szabad alternatívával", valamint az igényes játékok egy szűk rétege natívan - mindenféle trükk és utánzás nélkül indítható a saját Linuxos állományait felhasználva, így a wrapper használata az esetek jelentős részében valójában elkerülhető.