|  | <chapter id="getting-wine"> | 
|  | <title>Getting Wine</title> | 
|  | <para> | 
|  | If you decided that you can use and want to use Wine (e.g. after | 
|  | having read the <link linkend="introduction">introductory | 
|  | chapter</link>), then as a first step you need to find a good | 
|  | compatible Wine version that you like and that works on your | 
|  | system, and after you found one, the next step is to transfer its | 
|  | files to your system somehow. | 
|  | This chapter is here to tell you what you need to take care of | 
|  | in order to successfully accomplish these two steps. | 
|  | </para> | 
|  |  | 
|  | <sect1 id="getting-download"> | 
|  | <title>How to download Wine?</title> | 
|  | <para> | 
|  | There are three different methods of how the files | 
|  | belonging to Wine may be brought (downloaded) to your system: | 
|  | <itemizedlist> | 
|  | <listitem> | 
|  | <para> | 
|  | Getting a single Wine <glossterm>package</glossterm> file | 
|  | (specifically adapted to your particular system), which | 
|  | contains various <glossterm>binary</glossterm> files of Wine | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | Getting a single compressed archive file (usually .tar.gz), which contains | 
|  | all <glossterm>source code</glossterm> files of a standard Wine | 
|  | release version | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | Downloading from a <glossterm>CVS</glossterm> server, | 
|  | which contains the very latest development source code files | 
|  | of Wine | 
|  | </para> | 
|  | </listitem> | 
|  | </itemizedlist> | 
|  | </para> | 
|  |  | 
|  | <sect2 id="getting-which-wine"> | 
|  | <title>Which Wine form should I pick?</title> | 
|  |  | 
|  | <para> | 
|  | Now that we told you about the different Wine distribution | 
|  | methods available, let's discuss the advantages and | 
|  | disadvantages of the various methods. | 
|  | </para> | 
|  |  | 
|  | <variablelist> | 
|  | <title>Wine distribution methods</title> | 
|  | <varlistentry> | 
|  | <term><emphasis>Wine package file</emphasis></term> | 
|  |  | 
|  | <listitem> | 
|  | <para> | 
|  | Intended user level: Beginner to Advanced | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | Using Wine package files is easy for three | 
|  | reasons: | 
|  | They install everything else that's needed for their | 
|  | operation, they usually preconfigure a lot, and you | 
|  | don't need to worry about compiling anything or so. | 
|  | You can get the official wine packages from | 
|  | <ulink url="http://sourceforge.net/project/showfiles.php?group_id=6241"> | 
|  | the sourceforge.net Wine download page</ulink> | 
|  |  | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><emphasis>Wine source code via archive file</emphasis></term> | 
|  |  | 
|  | <listitem> | 
|  |  | 
|  | <para> | 
|  | Intended user level: Advanced to Expert | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | A Wine source code archive file can be used | 
|  | if you want to compile your own standard Wine release. | 
|  | By using differential patch files to newer Wine versions, | 
|  | you can easily upgrade your outdated Wine directory. | 
|  | However, as you need to manually download patch files | 
|  | and you're only able to download the most current | 
|  | standard Wine release, this is not necessarily the | 
|  | best method to use. | 
|  | The only advantage a Wine source archive has is that it | 
|  | is a standard Wine release with less development | 
|  | "quirks" than current CVS code.  Except for that, CVS | 
|  | source code is much preferred and almost as easy. | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | <varlistentry> | 
|  | <term><emphasis>Wine source code via CVS checkout</emphasis></term> | 
|  | <listitem> | 
|  | <para> | 
|  | Intended user level: Advanced to Expert/Developer | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | The Wine CVS checkout offers the best way to take | 
|  | part in bleeding edge Wine capabilities and | 
|  | development, since you'll be able to download every | 
|  | single CVS commit even <emphasis>beyond</emphasis> the | 
|  | last official Wine release. | 
|  | As upgrading a Wine CVS checkout tree to the latest | 
|  | version is very easy, this is a recommended method | 
|  | of installing Wine. | 
|  | Plus, by carefully following the instructions in this | 
|  | Guide, you'll be able to gain the very best Wine | 
|  | environment compatibility (instead of falling victim | 
|  | to package maintainers who fail to follow some | 
|  | instructions in the Wine Packagers Guide). | 
|  | </para> | 
|  | </listitem> | 
|  | </varlistentry> | 
|  | </variablelist> | 
|  |  | 
|  | <para> | 
|  | To summarize, the "best" way to install Wine is to download | 
|  | Wine source code via CVS to get the newest code (which might | 
|  | be unstable!). Then you could easily compile and install the | 
|  | Wine files manually. The final configuration part (writing the | 
|  | configuration file and setting up the drive environment) could then | 
|  | be handled by WineSetupTk. All in all the best way to go, | 
|  | except for the about 500MB of disk space that you'll need. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | With source code archive files, you have the advantage that you're | 
|  | running standard release versions, plus you can update to | 
|  | newer versions via patch files that we release. | 
|  | You won't have the newest code and the flexibility offered by CVS, | 
|  | though. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | About binary package files: not sure. There's about a zillion | 
|  | reasons to not like them as much as you'd think: they may be | 
|  | outdated, they may not include "everything", they are | 
|  | <emphasis>not</emphasis> optimized for your particular | 
|  | environment (as opposed to a source compile, which would guess | 
|  | and set everything based on your system), they frequently fail | 
|  | to provide a completely configured Wine environment. | 
|  | On the plus side: they're pretty easy to install and they | 
|  | don't take as much space as a full-blown source code compile. | 
|  | But that's about it when it comes to their advantages. | 
|  | So I'd say they are OK if you want to have a | 
|  | <emphasis>quick</emphasis> way to have a test run of Wine, but | 
|  | for prolonged Wine use, configuring the environment on your | 
|  | own is probably better. | 
|  | Eventually this will change (we'll probably do some packaging | 
|  | efforts on our own at some time), but at the current explosive | 
|  | rate of Wine development, staying as close as possible to the | 
|  | actual Wine development that's going on is the way to go. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | If you are running a distribution of Linux or some other | 
|  | system that uses packages to keep track of installed software, | 
|  | you should be in luck: A prepackaged version of Wine | 
|  | should already exist for your system. | 
|  | The following sections will tell you how to find the latest | 
|  | Wine packages and get them installed.  You should be careful, | 
|  | though, about mixing system packages between different distributions, | 
|  | and even from different versions of the same distribution. | 
|  | Often a package will only work on the distribution which it | 
|  | has been compiled for.  We'll cover | 
|  | <link linkend="getting-dist-debian">Debian Linux</link>, | 
|  | <link linkend="getting-dist-linux">Red Hat, Mandrake, SUSE and Slackware Linux</link>, | 
|  | <link linkend="getting-freebsd">FreeBSD</link>, and | 
|  | <link linkend="getting-other">other</link> distributions. | 
|  | </para> | 
|  | <para> | 
|  | If you're not lucky enough to have a package available for | 
|  | your operating system, or if you'd prefer a newer version of | 
|  | Wine than already exists as a package, you will need to | 
|  | download the Wine source code and compile it yourself on your | 
|  | own machine.  Don't worry, it's not too hard to do this, | 
|  | especially with the many helpful tools that come with Wine. | 
|  | You don't need any programming experience to compile and | 
|  | install Wine, although it might be nice to have some minor | 
|  | UNIX administrative skills.  Working from the source is | 
|  | covered in the Wine Developer's Guide. | 
|  | The main problem with externally maintained package files is | 
|  | that they lack a standard configuration method, and in fact | 
|  | they often fail to configure Wine's Windows environment | 
|  | properly (which is outlined in the Wine Packagers Guide). | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | </sect1> | 
|  |  | 
|  | <sect1 id="getting-wine-package"> | 
|  | <title>Getting a Wine package</title> | 
|  | <sect2 id="getting-dist-debian"> | 
|  | <title>Debian Linux</title> | 
|  |  | 
|  | <para> | 
|  | In most cases on a Debian system (or any other distribution that | 
|  | uses packages that use the file name ending .deb, for that | 
|  | matter), you can download and install Wine with a | 
|  | single command, as <glossterm>root</glossterm>: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt># </><userinput>apt-get install wine</> | 
|  | </screen> | 
|  | <para> | 
|  | <command>apt-get</command> will connect to a Debian archive | 
|  | across the Internet (thus, you must be online), then download | 
|  | the Wine package and install it on your system. End of story. | 
|  | You might first need to properly update your package setup, | 
|  | though, by using an <glossterm>editor</glossterm> as | 
|  | <glossterm>root</glossterm> to add an entry to | 
|  | <filename>/etc/apt/sources.list</filename> to point to an active | 
|  | package server and then running <command>apt-get | 
|  | update</command>. | 
|  | </para> | 
|  | <para> | 
|  | Once you're done with that step, you may skip the Wine | 
|  | installation chapter, since apt-get has not only downloaded, | 
|  | but also installed the Wine files already. | 
|  | Thus you can now go directly to the <link | 
|  | linkend="config-wine-main">Configuration section</link>. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | However, if you don't want to or cannot use the automatic | 
|  | download method for .deb packages that | 
|  | <command>apt-get</command> provides, then please read on. | 
|  | </para> | 
|  | <para> | 
|  | Of course, Debian's pre-packaged version of Wine may not be | 
|  | the most recent release.  If you are running the stable | 
|  | version of Debian, you may be able to get a slightly newer | 
|  | version of Wine by grabbing the package from the so-called | 
|  | "unstable" Debian distribution, although this may be a little | 
|  | risky, depending on how far the unstable distribution has | 
|  | diverged from the stable one.  You can find a list of Wine | 
|  | binary packages for the various Debian releases using the | 
|  | package search engine at <ulink | 
|  | url="http://www.debian.org">www.debian.org</ulink>. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | If you downloaded a separate .deb package file (e.g. a newer | 
|  | Wine release as stated above) that's not part of your | 
|  | distribution and thus cannot be installed via | 
|  | <command>apt-get</command>, you must use <command>dpkg</command> instead. | 
|  | For instructions on how to do this, please proceed to the | 
|  | <link linkend="installing">Installation section</link>. | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-dist-linux"> | 
|  | <title>Linux Red Hat, Mandrake, SUSE, and Slackware</title> | 
|  |  | 
|  | <para> | 
|  | Red Hat, Mandrake, SUSE and Slackware users can download | 
|  | a wine binary from the | 
|  | <ulink url="http://sourceforge.net/project/showfiles.php?group_id=6241"> | 
|  | sourceforge.net Wine download page</ulink> | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-freebsd"> | 
|  | <title>FreeBSD</title> | 
|  |  | 
|  | <para> | 
|  | In order to use Wine you need to build and install a new kernel | 
|  | with options USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | If you want to install Wine using the FreeBSD port system, run | 
|  | in a <glossterm>terminal</glossterm>: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>su -</> | 
|  | <prompt># </><userinput>cd /usr/ports/emulators/wine/</> | 
|  | <prompt># </><userinput>make</> | 
|  | <prompt># </><userinput>make install</> | 
|  | <prompt># </><userinput>make clean</> | 
|  | </screen> | 
|  | <para> | 
|  | This process will get wine source from the Internet, | 
|  | then download the Wine package and install it on your system. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | If you want to install Wine from the FreeBSD CD-ROM, run in a | 
|  | <glossterm>terminal</glossterm>: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>su -</> | 
|  | <prompt># </><userinput>mount /cdrom</> | 
|  | <prompt># </><userinput>cd /cdrom/packages/All</> | 
|  | <prompt># </><userinput>pkg_add wine_.X.X.X.tgz</> | 
|  | </screen> | 
|  | <para> | 
|  | </para> | 
|  | <para> | 
|  | These FreeBSD install instructions completely install the | 
|  | Wine files on your system; you may then proceed to the <link | 
|  | linkend="config-wine-main">Configuration section</link>. | 
|  | </para> | 
|  | <para> | 
|  | You can also download a FreeBSD package of wine from the | 
|  | <ulink url="http://sourceforge.net/project/showfiles.php?group_id=6241"> | 
|  | sourceforge.net Wine download page</ulink> | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-other"> | 
|  | <title>Other systems</title> | 
|  |  | 
|  | <para> | 
|  | The first place you should look if your system isn't | 
|  | specifically mentioned above is the <ulink | 
|  | url="http://www.winehq.org/download/">WineHQ Download | 
|  | Page</ulink>.  This page lists many assorted archives of | 
|  | binary (precompiled) Wine files. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | You could also try to use | 
|  | <ulink url="http://www.google.com/search?q=wine+package+download"> | 
|  | Google</ulink> to track down miscellaneous distribution packages. | 
|  | </para> | 
|  |  | 
|  | </sect2> | 
|  | <!-- *** Add other distributions, e.g., Lindows, Lycoris, Xandros *** --> | 
|  |  | 
|  | </sect1> | 
|  |  | 
|  | <sect1 id="getting-wine-source"> | 
|  | <title>Getting Wine source code</title> | 
|  |  | 
|  | <para> | 
|  | If you are going to compile Wine (instead of installing binary | 
|  | Wine files), either to use the most recent code possible or to | 
|  | improve it, then the first thing to do is to obtain a copy of | 
|  | the source code. We'll cover how to retrieve and compile the | 
|  | source releases from the <link | 
|  | linkend="getting-source">official archives</link>, and also how | 
|  | to get the cutting edge up-to-the-minute fresh Wine source code | 
|  | from <link linkend="getting-source-cvs">CVS (Concurrent Versions | 
|  | System)</link>. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | Once you have downloaded Wine source code according to the | 
|  | instructions below, there are two ways to proceed: If you want | 
|  | to manually install and configure Wine, then go to the <link | 
|  | linkend="compiling">Compiling</link> section. If instead you | 
|  | want automatic installation, then go straight to the <link | 
|  | linkend="config-wine-main">Configuration section</link> to make | 
|  | use of <command>wineinstall</command> to automatically install | 
|  | and configure Wine. | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | You may also need to know how to apply a source code patch to | 
|  | your version of Wine.  Perhaps you've uncovered | 
|  | a bug in Wine, reported it to the | 
|  | <ulink url="http://bugs.winehq.org">Wine Bugzilla</ulink> | 
|  | or the | 
|  | <ulink url="mailto:wine-devel@winehq.org">Wine mailing list</ulink>, | 
|  | and received a patch from a developer to hopefully fix the | 
|  | bug.  We will show you how to | 
|  | <link linkend="getting-upgrading-patch">safely apply the | 
|  | patch</link> and revert it if it doesn't work. | 
|  | </para> | 
|  |  | 
|  | <sect2 id="getting-source"> | 
|  | <title>Getting Wine Source Code from the official archives</title> | 
|  |  | 
|  | <para> | 
|  | The safest way to grab the source is from one of the official | 
|  | archives.  An up to date listing is in the <ulink | 
|  | url="http://www.winehq.org/source/ANNOUNCE">ANNOUNCE</ulink> | 
|  | file in the Wine distribution (which you would have if you | 
|  | already downloaded it).  Here is a list | 
|  | of servers carrying Wine: | 
|  | </para> | 
|  | <itemizedlist> | 
|  | <listitem> | 
|  | <para> | 
|  | <ulink url="ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/"> | 
|  | ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/ | 
|  | </ulink> | 
|  | </para> | 
|  | </listitem> | 
|  | <listitem> | 
|  | <para> | 
|  | <ulink url="http://sourceforge.net/project/showfiles.php?group_id=6241&package_id=77449"> | 
|  | sourceforge.net download page | 
|  | </ulink> | 
|  | </para> | 
|  | </listitem> | 
|  | </itemizedlist> | 
|  | <para> | 
|  | The official releases are tagged by date with the format | 
|  | "Wine-<replaceable>YYYYMMDD</>.tar.gz".  Your best bet is to grab | 
|  | the latest one. | 
|  | </para> | 
|  | <para> | 
|  | I'd recommend placing the Wine archive file that you chose | 
|  | into the directory where you intend to extract Wine. In this | 
|  | case, let's just assume that it is your home directory. | 
|  | </para> | 
|  | <para> | 
|  | Once you have downloaded a Wine archive file, we need to | 
|  | extract the archive file. This is not very hard to do. First | 
|  | switch to the directory containing the file you just | 
|  | downloaded. Then extract the source in a | 
|  | <glossterm>terminal</glossterm> with (e.g.): | 
|  | <screen> | 
|  | <prompt>$ </><userinput>tar xvzf wine-<replaceable>20030115</>.tar.gz</> | 
|  | </screen> | 
|  | </para> | 
|  | <para> | 
|  | Just in case you happen to get a Wine archive that uses | 
|  | <filename>.tar.bz2</filename> extension instead of | 
|  | <filename>.tar.gz</filename>: | 
|  | Simply use <command>tar xvjf</command> in that case instead. | 
|  | </para> | 
|  | <para> | 
|  | Since you now have a fully working Wine source tree by | 
|  | having followed the steps above, you're now well-prepared to | 
|  | go to the Wine installation and configuration steps that follow. | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-source-cvs"> | 
|  | <title>Getting Wine Source Code from CVS</title> | 
|  |  | 
|  | <para> | 
|  | This part is intended to be quick and easy, showing the bare minimum | 
|  | of what is needed to download Wine source code via CVS. | 
|  | If you're interested in a very verbose explanation of CVS or | 
|  | advanced CVS topics (configuration settings, CVS mirror servers, | 
|  | other CVS modules on WineHQ, CVSWeb, ...), then please read | 
|  | the full CVS chapter in the Wine Developer's Guide. | 
|  | </para> | 
|  |  | 
|  | <sect3> | 
|  | <title>CVS installation check</title> | 
|  | <para> | 
|  | First you need to make sure that you have <command>cvs</command> | 
|  | installed. | 
|  | To check whether this is the case, please run in a | 
|  | <glossterm>terminal</glossterm>: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>cvs</> | 
|  | </screen> | 
|  | <para> | 
|  | If this was successful, then you should have gotten a nice CVS | 
|  | "Usage" help output.  Otherwise (e.g. an error "cvs: command | 
|  | not found") you still need to install a CVS package for your | 
|  | particular operating system, similar to the instructions given | 
|  | in the chapters for getting and installing a Wine package on | 
|  | various systems. | 
|  | </para> | 
|  | </sect3> | 
|  |  | 
|  | <sect3> | 
|  | <title>Downloading the Wine CVS tree</title> | 
|  |  | 
|  | <para> | 
|  | Once CVS is installed, you can now do a login on our CVS | 
|  | server and checkout (download) the Wine source code. | 
|  | First, let's do the server login, to connect to the US server: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput> export CVSROOT=:pserver:cvs@cvs.winehq.org:/home/wine</> | 
|  | <prompt>$ </><userinput> cvs login</> | 
|  | </screen> | 
|  | <para> | 
|  | To connect to the EU server: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>export CVSROOT=:pserver:cvs@rhlx01.fht-esslingen.de:/home/wine</> | 
|  | <prompt>$ </><userinput>cvs login</> | 
|  | </screen> | 
|  | <para> | 
|  | If <command>cvs</command> successfully connects to the CVS server, | 
|  | then you will get a "CVS password:" prompt. | 
|  | Simply enter "cvs" as the password (the password is | 
|  | <emphasis>case sensitive</emphasis>: no capital letters!). | 
|  | </para> | 
|  |  | 
|  | <para> | 
|  | After login, we are able to download the Wine source code tree. | 
|  | Please make sure that you are in the directory that you want | 
|  | to have the Wine source code in (the Wine source code will | 
|  | use the subdirectory <filename>wine/</filename> in this | 
|  | directory, since the subdirectory is named after the CVS module | 
|  | that we want to check out). We assume that your current directory | 
|  | might be your user's home directory. | 
|  | To download the Wine tree into the subdirectory <filename>wine/</filename>, run: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput> cvs -z3 checkout wine</> | 
|  | </screen> | 
|  | <para> | 
|  | Downloading the CVS tree might take a while (some minutes | 
|  | to few hours), depending on your connection speed. | 
|  | Once the download is finished, you should keep a note of | 
|  | which directory the newly downloaded | 
|  | <filename>wine/</filename> directory is in, by running | 
|  | <command>pwd</command> (Print Working Directory): | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>pwd</> | 
|  | </screen> | 
|  | <para> | 
|  | Later, you will be able to change to this directory by | 
|  | running: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>cd <replaceable><some_dir></></> | 
|  | </screen> | 
|  | <para> | 
|  | where <some_dir> is the directory that | 
|  | <command>pwd</command> gave you. | 
|  | By running | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>cd wine</> | 
|  | </screen> | 
|  | <para> | 
|  | you can now change to the directory of the Wine CVS tree | 
|  | you just downloaded. Since you now have a fully working Wine | 
|  | source tree by having followed the steps above, you're now | 
|  | well-prepared to go to the Wine installation and configuration | 
|  | steps that follow. | 
|  | </para> | 
|  | </sect3> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-updating-cvs"> | 
|  | <title>Updating the Wine CVS tree</title> | 
|  |  | 
|  | <para> | 
|  | After a while, you might want to update your Wine CVS tree to | 
|  | the current version. | 
|  | Before updating the Wine tree, it might also be a good idea | 
|  | to run <command>make uninstall</command> as root in order to | 
|  | uninstall the installation of the previous Wine version. | 
|  | </para> | 
|  | <para> | 
|  | To proceed with updating Wine, simply <command>cd</command> | 
|  | to the Wine CVS tree directory, then run, if you're using the US server: | 
|  | </para> | 
|  | <screen> | 
|  | <prompt>$ </><userinput>make distclean</> | 
|  | <prompt>$ </><userinput>cvs update -PAd</> | 
|  | </screen> | 
|  | <para> | 
|  | The <command>make distclean</command> part is optional, but | 
|  | it's a good idea to remove old build and compile configuration | 
|  | files before updating to a newer Wine version.  Once the CVS | 
|  | update is finished, you can proceed with installing Wine again | 
|  | as usual. | 
|  | </para> | 
|  | </sect2> | 
|  |  | 
|  | <sect2 id="getting-upgrading-patch"> | 
|  | <title>Updating Wine with a Patch</title> | 
|  | <para> | 
|  | If you got Wine source code (e.g. via a tar archive file), you | 
|  | have the option of applying patches to the source tree to | 
|  | update to a newer Wine release or to fix bugs and add | 
|  | experimental features.  Perhaps you've found a bug, reported | 
|  | it to the <ulink url="mailto:wine-devel@winehq.org">Wine | 
|  | mailing list</>, and received a patch file to fix the bug. | 
|  | You can apply the patch with the <command>patch</> command, | 
|  | which takes a streamed patch from <filename>stdin</>: | 
|  | <screen> | 
|  | <prompt>$ </><userinput>cd wine</> | 
|  | <prompt>$ </><userinput>patch -p0 <<replaceable>../patch_to_apply.diff</></> | 
|  | </screen> | 
|  | </para> | 
|  | <para> | 
|  | To remove the patch, use the <parameter>-R</> option: | 
|  | <screen> | 
|  | <prompt>$ </><userinput>patch -p0 -R <<replaceable>../patch_to_apply.diff</></> | 
|  | </screen> | 
|  | </para> | 
|  | <para> | 
|  | If you want to do a test run to see if the patch will apply | 
|  | successfully (e.g., if the patch was created from an older or | 
|  | newer version of the tree), you can use the | 
|  | <parameter>--dry-run</> parameter to run the patch | 
|  | without writing to any files: | 
|  | <screen> | 
|  | <prompt>$ </><userinput>patch -p0 --dry-run <<replaceable>../patch_to_apply.diff</></> | 
|  | </screen> | 
|  | </para> | 
|  | <para> | 
|  | <command>patch</> is pretty smart about extracting | 
|  | patches from the middle of a file, so if you save an email with | 
|  | an inlined patch to a file on your hard drive, you can invoke | 
|  | patch on it without stripping out the email headers and other | 
|  | text.  <command>patch</> ignores everything that doesn't | 
|  | look like a patch. | 
|  | </para> | 
|  | <para> | 
|  | The <parameter>-p0</> option to <command>patch</> | 
|  | tells it to keep the full file name from the patch file. For example, | 
|  | if the file name in the patch file was | 
|  | <filename>wine/programs/clock/main.c</>. | 
|  | Setting the <parameter>-p0</> option would apply the patch | 
|  | to the file of the same name i.e. | 
|  | <filename>wine/programs/clock/main.c </>. | 
|  | Setting the <parameter>-p1</> option would strip off the | 
|  | first part of the file name and apply | 
|  | the patch to <filename>programs/clock/main.c</>. | 
|  | The <parameter>-p1</> option would be useful if you named your | 
|  | top level wine directory differently than the person who sent | 
|  | you the patch. For the <parameter>-p1</> option | 
|  | <command>patch</> should be run from the top level wine | 
|  | directory. | 
|  | </para> | 
|  | </sect2> | 
|  | </sect1> | 
|  |  | 
|  | </chapter> | 
|  |  | 
|  | <!-- Keep this comment at the end of the file | 
|  | Local variables: | 
|  | mode: sgml | 
|  | sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "") | 
|  | End: | 
|  | --> |