  <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 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 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">Red Hat</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 will 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.  Working from the source is
        covered in the Wine Developer's Guide.
      </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>
<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.
      </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>
<prompt>$ </><userinput>su -</>
Password:
<prompt># </><userinput>cd /home/user</>
<prompt># </><userinput>dpkg -i wine_<replaceable>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 Red Hat System</title>

      <para>
        Red Hat/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>
<prompt># </><userinput>rpm -ivh wine-<replaceable>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
        Red Hat 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>

  </chapter>

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