  <chapter id="getting-wine">
    <title>Getting Wine</title>

    <sect1>
      <title>The Many Forms of Wine</title>
      <para>
        The standard Wine distribution includes quite a few different
        executables, libraries, and configuration files.  All of these
        must be set up properly for Wine to work well.  This chapter
        will guide you through the necessary steps to get Wine
        installed on your system.
      </para>
      <para>
        If you are running a distribution of Linux that uses packages
        to keep track of installed software, you may be in luck: A
        prepackaged version of Wine may already exist for your system.
        The first three sections will tell you how to find the latest
        Wine packages and get them installed.  You should be careful,
        though, about mixing packages between different distributions,
        and even from different versions of the same distribution.
        Often a package will only work on the distribution it's
        compiled for.  We'll cover
        <link linkend="getting-dist-debian">Debian</link>, 
        <link linkend="getting-dist-redhat">Redhat</link>, and 
        <link linkend="getting-dist-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 may have 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.  We'll cover how to retrieve and
        compile the official source releases from the <link
        linkend="getting-source-ftp">FTP 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>.  Both processes of source code
        installation are similar, and once you master one, you should
        have no trouble dealing with the other one.
      </para>
      <para>
        Finally, you may someday 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="mailto:wine-devel@winehq.com">Wine mailing list</ulink>,
        and received a patch from a developer to hopefully fix the
        bug.  The last section in this chapter will show you how to
        <link linkend="getting-upgrading">safely apply the
        patch</link> and revert it if the patch doesn't work.
      </para>
    </sect1>

    <sect1 id="getting-dist-debian">
      <title>Getting Wine for a Debian System</title>

      <para>
        In most cases on a Debian system, you can install Wine with a
        single command, as root:
      </para>
      <screen>
# 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.
      </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 unstable 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>
        To install a package that's not part of your distribution, you
        must use <command>dpkg</command> instead of
        <command>apt-get</command>.  Since <command>dpkg</command>
        doesn't download the file for you, you must do it yourself.
        Follow the link on the package search engine to the desired
        package, then click on the <guibutton>Go To Download
          Page</guibutton> button and follow the instructions.  Save the
        file to your hard drive, then run <command>dpkg</command> on it.
        For example, if you saved the file to your home directory, you
        might perform the following actions to install it:
      </para>
      <screen>
$ su -
<emphasis>&lt;Type in root password&gt;</emphasis>
# cd /home/user
# dpkg -i wine_0.0.20021031-1.deb
    </screen>
      <para>
        You may also want to install the
        <systemitem>wine-doc</systemitem> package, and if you are
        using Wine from the 2.3 distribution (Woody), the
        <systemitem>wine-utils</systemitem> package as well.
      </para>
    </sect1>

    <sect1 id="getting-dist-redhat">
      <title>Getting Wine for a Redhat System</title>

      <para>
        Redhat/RPM users can use <ulink url="http://rpmfind.net/linux/RPM/">
          rpmfind.net</ulink> to track down available Wine RPM binaries.
        <ulink url="http://rpmfind.net/linux/RPM/WByName.html"> This
          page</ulink> contains a list of all rpmfind packages that start with
        the letter "W", including a few Wine packages.
      </para>

      <para>
        Of course now that you have the RPM package, you may be wondering
        "What in the world do I do with this thing?".
      </para>

      <para>
        The easiest way to install an RPM is to make sure that you have not
        previously installed wine (perhaps, when you installed linux)
        and then switch to the directory you downloaded the rpm file to.
        Once there, type this one command as root:
      </para>
      <screen>
# rpm -ivh wine-20020605-2.i386.rpm
      </screen>
      <para>
        You may also want to install the
        <systemitem>wine-devel</systemitem> package.
      </para>
    </sect1>

    <sect1 id="getting-dist-other">
      <title>Getting Wine for Other Distributions</title>

      <para>
        The first place you should look if your system isn't Debian or
        Redhat is the <ulink
        url="http://www.winehq.com/download/">WineHQ Download
        Page</ulink>.  This page lists many assorted archives of
        binary (precompiled) Wine files.
      </para>

      <para>
        <ulink url="http://ftpsearch.lycos.com/?form=medium">
          Lycos FTPSearch</ulink> is another useful resource for
        tracking down miscellaneous distribution packages.
      </para>

      <para>
        NOTE: If you are running a Mandrake system, please see the page
        on how to get wine for a 
        <link linkend="getting-dist-redhat">Redhat</link> system,
        as Mandrake is based on Redhat.
      </para>

      <!-- *** Add other distributions, e.g., SUSE, Slackware *** -->

    </sect1>

    <sect1 id="getting-source-ftp">
      <title>Getting Wine Source Code from the FTP Archive</title>

      <para>
        If the version of Wine you want does not exist in package form,
        you can download the source code yourself and compile it on your
        machine.  Although this might seem a little intimidating at
        first if you've never done it, you'll find that it'll often go
        quite smoothly, especially on the newer Linux distributions.
      </para>

      <para>
        The safest way to grab the source is from one of the official
        FTP archives.  An up to date listing is in the <ulink
        url="http://www.winehq.com/source/ANNOUNCE">ANNOUNCE</ulink>
        file in the Wine distribution (which you would have if you
        already downloaded it).  Here is a list
        of FTP 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="ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/">
              ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/
            </ulink>
          </para>
        </listitem>
        <listitem>
          <para>
            <ulink url="ftp://ftp.fu-berlin.de/unix/linux/mirrors/sunsite.unc.edu/ALPHA/wine/development/">
              ftp://ftp.fu-berlin.de/unix/linux/mirrors/sunsite.unc.edu/ALPHA/wine/development/
            </ulink>
          </para>
        </listitem>
        <listitem>
          <para>
            <ulink url="ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/">
              ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/
            </ulink>
          </para>
        </listitem>
      </itemizedlist>
      <para>
        The official releases are tagged by date with the format
        "Wine-YYYYMMDD.tar.gz".  Your best bet is to grab the latest
        one.
      </para>
      <para>
        Once you have downloaded this, you must first compile wine, and then install it.
        To do this is not very hard.  First switch to the directory containing the file
        you just downloaded.  Then extract the source with (e.g.):
      </para>
      <screen>
# tar xzvf wine-20021031.tar.gz
      </screen>
      <para>
        Then, switch to the directory that was created and compile it by typing (e.g.):
      </para>
      <screen>
# ./tools/wineinstall
      </screen>
      <para>
        NOTE: You must make sure that you are not the superuser (root) when doing this,
        and that you have write permission to the directory that was created by the tar
        command as well as all of its subdirectories and files..
      </para>
    </sect1>

    <sect1 id="getting-source-cvs">
      <title>Getting Wine Source Code from CVS</title>

      <para>
        The official web page for Wine CVS is
        <ulink url="http://www.winehq.com/development/">
          http://www.winehq.com/development/</ulink>.
      </para>
      <para>
        First, you need to get a copy of the latest Wine sources
        using CVS. You can tell it where to find the source tree by
        setting the <envar>CVSROOT</envar> environment variable. You
        also have to log in anonymously to the wine CVS server.  In
        <command>bash</command>, it might look something like this:
      </para>
      <screen>
$ export CVSROOT=:pserver:cvs@cvs.winehq.com:/home/wine
$ cvs login
Password: cvs
$ cvs checkout wine
    </screen>
      <para>
        That'll pull down the entire Wine source tree from
        winehq.com and place it in the current directory (actually
        in the 'wine' subdirectory).  CVS has a million command line
        parameters, so there are many ways to pull down files, from
        anywhere in the revision history.  Later, you can grab just
        the updates:
      </para>
      <screen>
$ cvs -PAd update
      </screen>
      <para>
        <command>cvs update</command> works from inside the source tree.
        You don't need the <envar>CVSROOT</envar> environment variable
        to run it either.  You just have to be inside the source tree.
        The <parameter>-P</parameter>, <parameter>-A</parameter> and <parameter>-d</parameter>
        options make sure your local Wine tree directory structure stays
        in sync with the remote repository.
      </para>
      <para>
        After you've made changes, you can create a patch with
        <command>cvs diff -u</command>, which sends output to stdout
        (the <parameter>-u</parameter> controls the format of the
        patch). So, to create an <filename>my_patch.diff</filename>
        file, you would do this:
      </para>
      <screen>
$ cvs diff -u > my_patch.diff
      </screen>
      <para>
        You can call <command>cvs diff</command> from anywhere in the
        tree (just like <command>cvs update</command>), and it will
        always grab recursively from that point.  You can also specify
        single files or subdirectories:
      </para>
      <screen>
$ cvs diff -u dlls/winaspi > my_aspi_patch.diff
      </screen>
      <para>
        Experiment around a little.  It's fairly intuitive.
      </para>
    </sect1>

    <sect1 id="getting-upgrading">
      <title>Upgrading Wine with a Patch</title>
      <para>
        If you have the Wine source code, as opposed to a binary
        distribution, you have the option of applying patches to the
        source tree to fix bugs and add experimental features.
        Perhaps you've found a bug, reported it to the <ulink
        url="mailto:wine-devel@winehq.com">Wine mailing list</ulink>,
        and received a patch file to fix the bug.  You can apply the
        patch with the <command>patch</command> command, which takes a
        streamed patch from <filename>stdin</filename>:
      </para>
      <screen>
$ cd wine
$ patch -p0 < ../patch_to_apply.diff
      </screen>
      <para>
        To remove the patch, use the <parameter>-R</parameter> option:
      </para>
      <screen>
$ patch -p0 -R < ../patch_to_apply.diff
      </screen>
      <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> parameter to run the patch
        without writing to any files:
      </para>
      <screen>
$ patch -p0 --dry-run < ../patch_to_apply.diff
      </screen>
      <para>
        <command>patch</command> 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</command> ignores everything that doesn't
        look like a patch.
      </para>
      <para>
        The <parameter>-p0</parameter> option to <command>patch</command>
	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</filename>.
	Setting the <parameter>-p0</parameter> option would apply the patch
	to the file of the same name i.e.
	<filename>wine/programs/clock/main.c </filename>.
	Setting the <parameter>-p1</parameter> option would strip off the
	first part of the file name and apply
	the patch instead to <filename>programs/clock/main.c </filename>.
	The <parameter>-p1</parameter> option would be useful if you named
	your top level wine directory differently to the person who sent you
	the patch. For the <parameter>-p1</parameter> option
	<command>patch</command> should be run from the top level wine directory.

      </para>
    </sect1>

  </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-doc.sgml" "set" "book" "chapter" "")
End:
-->
