1. INTRODUKSJON

Wine er et program som gjør det mulig å kjøre Windows-programmer
(inkludert DOS, Windows 3.x, Win32 og Win64) i Unix. Det består av en
programstarter som starter og kjører en Windows-programfil, og et
bibliotek kalt «Winelib»; en uavhengig utgave av Windows' API som
bruker Unix- eller X11-funksjoner. Biblioteket kan også brukes til å putte
Windows-kode i vanlige Unix-programmer.

Wine er fri programvare, utgitt under vilkårene i GNU LGPL; se
filen «LICENSE» for detaljer.

2. KOM I GANG

Det anbefales å bruke Wines installasjonsprogram for å bygge og
installere Wine når det bygges fra kildekode. Kjør følgende i
rotkatalogen til Wine-kildekoden

./tools/wineinstall

Kjør programmer som «wine program». Se resten av denne filen,
Wines man-side og http://www.winehq.org/ for mer informasjon og
problemløsing.

3. SYSTEMKRAV

Følgende kreves for å bygge og kjøre Wine

  Linux versjon 2.0.36 eller nyere
  FreeBSD 6.3 eller nyere
  Solaris x86 9 eller nyere
  NetBSD-current
  Mac OS X 10.4 eller nyere

Wine krever støtte for tråder på kjernenivå, og derfor er det bare
operativsystemene ovenfor som støttes. Andre operativsystemer som
støtter kjernetråder støttes kanskje i framtiden.

Informasjon for Linux
  Selv om Linux 2.2.x antakelig virker, og Linux 2.0x kanskje virker
  (tidligere 2.0.x-versjoner hadde problemer med tråder), er det
  best å ha en ny kjerne som 2.4.x eller 2.6.x.

Informasjon for FreeBSD
  Wine vil som regel ikke virke på FreeBSD-versjoner eldre enn 6.3 eller 7.0.
  FreeBSD 6.3 kan oppdateres for å forbedre støtten for Wine; se
  <http://wiki.freebsd.org/Wine> for mer informasjon.

Informsjon for Solaris
  Wine må antakelig bygges med GNU-verktøyene (gcc, gas etc.).
  Advarsel: selv om gas installeres er det ikke sikkert det brukes av
  gcc. Det sies at gcc må bygges på nytt, eller at symbolske
  koblinger for «cc», «as» og «ld» må legges til GNU-verktøyene.

Informasjon for NetBSD
  USER_LDT, SYSVSHM, SYSVSEM og SYSVMSG må være aktivert i kjernen.

Informasjon for Mac OS X:
  Du må ha Xcode 2.4 eller nyere for å bygge Wine ordentlig på x86.


Støttede filsystemer
  Wine kan kjøre på de fleste filsystemer. Det har imidlertid vært
  rapportert om problemer med filtilgang gjennom Samba. Vi anbefaler
  ikke bruk av NTFS, siden dette ikke støtter funksjoner som noen
  programmer trenger. Det anbefales å bruke et Linux-filsystem som ext3.

Basiskrav
  Inkluderingsfilene for X11 må være installert (kalt «xlib6g-dev» i
  Debian og «XFree86-devel» i RedHat).

  Du må selvfølgelig også ha «make», sannsynligvis «GNU make».

  flex 2.5.33 eller nyere og bison er også nødvendig.

Valgfrie støttebiblioteker:
  configure-skriptet viser meldinger når valgfrie biblioteker ikke blir
  funnet. Se http://wiki.winehq.org/Recommended_Packages for info om
  hvilke pakker du bør installere.

  På 64 bit-systemer trenger du 32 bit-versjoner av disse bibliotekene
  hvis du skal bygge Wine som et 32 bit-program (standard);
  se http://wiki.winehq.org/WineOn64bit for flere detaljer.
  Hvis du ønsker å bygge Wine som et 64 bit-program (eller et oppsett
  med blandet 32 bit og 64 bit) kan du lese mer på
  http://wiki.winehq.org/Wine64

4. BYGGING

Kjør følgende kommandoer for å bygge Wine hvis du ikke bruker wineinstall

./configure
make

Dette bygger programmet «wine» og diverse støttebiblioteker/programfiler.
Programfilen «wine» laster og kjører Windows-programmer.
Biblioteket «libwine» («Winelib») kan brukes til å bygge og koble
Windows-kildekode i Unix.

Kjør «./configue --help» for å se valg for bygging.

5. INSTALLASJON

Når Wine er bygget kan du kjøre «make install» for å installere det;
dette installerer også man-siden og noen andre nødvendigheter.

Ikke glem å avinstallere tidligere Wine-versjoner først. Prøv enten
«dpkg -r wine», «rpm -e wine» eller «make uninstall» før installsjonen.

Når Wine er installert kan du bruke oppsettsverktøyet «winecfg».
Se støtteområdet på http://www.winehq.org/ for hint om oppsett.


6. KJØRING AV PROGRAMMER

Når du bruker Wine kan du oppgi hele stien til programfilen, eller bare
et filnavn.

For å kjøre Notisblokk

        wine notepad                   (ved å bruke søkestien oppgitt i
        wine notepad.exe                Wine-registeret for å finne filen)

        wine c:\\windows\\notepad.exe  (bruk av DOS-filbaner)

        wine ~/.wine/drive_c/windows/notepad.exe  (bruk av Unix-filbaner)

        wine notepad.exe readme.txt  (kjøre programmer med parametere)



Wine er ikke helt ferdig ennå, så det er mulig at noen programmer klikker.
Hvis dette skjer vil Wine lage en logg som beskriver problemet; bruk
denne når du lager en feilrapport på http://bugs.winehq.org/


7. MER INFORMASJON

Internett: En god del informasjon om Wine finnes hos WineHQ på
           http://www.winehq.org/: diverse veiledere, en programdatabase
           og feilsporing. Dette er antakelig det beste stedet å begynnne.

Svar:      Wines spørsmål og svar finnes på http://www.winehq.org/FAQ

Wiki:      Wines Wiki er tilgjengelig på http://wiki.winehq.org

E-postlister:
           Det finnes flere e-postlister for Wine-utviklere og -brukere;
           besøk http://www.winehq.org/forums for mer informasjon.

Feil:      Rapporter feil til Wines Bugzilla på http://bugs.winehq.org
           Søk i Bugzilla-databasen og se om probelmet allerede er funnet
           før du sender en feilrapport.

IRC:       Nødhjelp er tilgjengelig på kanalen #WineHQ på
           irc.freenode.net.

Git:       Wines oppdaterte utvikler-versjon er tilgjengelig gjennom GIT.
           Gå til http://www.winehq.org/git for mer informasjon.

Hvis du legger til noe eller fikser en feil er det fint som du sender
en oppdateringsfil (helst laget med git format-patch) til listen wine-patches@winehq.org, slik at endringen kan tas med i neste Wine-utgivelse.

--
Den originale versjonen ble skrevet av
Alexandre Julliard
julliard@winehq.org

Oversettelse til norsk (bokmål) av
Alexander N. Sørnes
alex@thehandofagony.com
