Wine är en programvara som gör det möjligt för Unix-liknande operativsystem på x86- och x86-64-arkitekturerna att köra program som är skrivna för Microsoft Windows. Wine implementerar många av Windows API:erna och översätter anrop från Windows-program till motsvarande POSIX-anrop i värdsystemet, vilket gör att det inte är en emulator i traditionell bemärkelse utan ett kompatibilitetslager. Wine tillhandahåller också ett programvarubibliotek som kallas Winelib som utvecklare kan kompilera Windows-program mot för att hjälpa till att portera dem till Unix-liknande system. En del Wine-kod används i ReactOS, ett fritt operativsystem som är Windows-kompatibelt och inte är baserat på Unix.
Hur Wine fungerar
Wine består av flera komponenter: en uppsättning ersättningar för Windows DLL:er, ett användarrumsprogram som hanterar processer och fönsterhantering (bland annat wineserver) samt verktyg som winecfg och wineconsole. När du startar en .exe-fil kör Wine den direkt i användarutrymmet och översätter Windows-API-anrop till systemanrop på värdplattformen. Wine kan använda antingen sina egenimplementerade ("inbyggda") DLL:er eller ursprungliga Windows-DLL:er om användaren väljer det.
Funktioner och tillägg
- Winelib: Ett bibliotek som möjliggör att Windows-kod kan kompileras och länkas mot Wine för enklare portar.
- Stöd för 32/64-bit: Wine hanterar både x86 och x86-64. Vanligtvis används separata "wineprefix" (t.ex.
~/.wine) för olika arkitekturer eller applikationer. - Grafikstöd: Wine översätter Direct3D-anrop via WineD3D eller använder externa projekt som DXVK (som översätter Direct3D 9/10/11/12 till Vulkan) för bättre prestanda i spel.
- Konfigurationsverktyg: Program som winecfg, winetricks och grafiska frontar (t.ex. PlayOnLinux eller Proton för Steam) förenklar installation av Windows-komponenter och inställningar.
- AppDB: Wine-projektet och communityn underhåller en databas över kompatibilitetstester (AppDB) där användare rapporterar hur väl specifika program och spel fungerar.
Installation och användning
Wine finns i många linuxdistributioners paketarkiv och kan också byggas från källkod. Projektet erbjuder officiella paket och distribuerade repos för flera distributioner via WineHQ. En vanlig arbetsmetod är att skapa separat wineprefix per program för att undvika beroende- och konfigurationskonflikter. Vanliga kommandon är wine program.exe för att starta exekverbara filer och winecfg för att ställa in Windows-version, DLL-prioriteringar och grafikalternativ.
Historia och utveckling
Wine-utvecklarna släppte version 1.0 av Wine den 17 juni 2008, efter omkring 15 års utveckling. Sedan dess har projektet fortsatt i flera parallella spår: stabila utgåvor, snabbrullande utvecklingsgrenar och ett "staging"-spår med tester och experimentella patchar. Många kommersiella produkter, som CodeWeavers' CrossOver, bygger på Wine och bidrar med patchar och förbättringar.
Licens och samhälle
Wine är en fri programvara som släpps enligt villkoren i GNU Lesser General Public License (LGPL). Projektet är open source och har en stor gemenskap som driver utveckling, testning och underhåll av kompatibilitetsdatabasen. Många förbättringar kommer från bidrag från både frivilliga och företag.
Begränsningar och alternativ
Samtidigt som Wine kan köra många Windows-program väl finns det begränsningar:
- Kompatibiliteten varierar beroende på API:er, kopplingar till DRM/anticheat och komplexa Windows-specifika funktioner.
- Vissa program kräver proprietära Windows-komponenter eller drivrutiner som inte går att ersätta fullt ut.
- På andra processorarkitekturer än x86/x86-64 krävs ofta emulering (t.ex. QEMU) eller portning, vilket kan påverka prestanda.
Alternativ och kompletterande verktyg inkluderar kommersiella portar som CrossOver, Valve's Proton (en Wine-baserad lösning för Steam Play), samt virtualisering och fullständiga Windows-installationer i en virtuell maskin när maximal kompatibilitet behövs.
Sammanfattningsvis är Wine ett kraftfullt kompatibilitetslager för att köra Windows-program på Unix-liknande system på x86- och x86-64-arkitekturer. Det kombinerar tekniska lösningar för att översätta API-anrop, verktyg för konfiguration och en aktiv community som kontinuerligt förbättrar stödet för nya program och spel.