329 lines
13 KiB
Plaintext
329 lines
13 KiB
Plaintext
<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 an available package 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 skill. 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
|
|
<ulink url="http://cgi.debian.org/cgi-bin/search_packages.pl?keywords=wine&searchon=names&version=all&release=all">
|
|
package search engine</ulink> 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><Type in root password></emphasis>
|
|
# cd /home/user
|
|
# dpkg -i wine_0.0.20000109-3.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>
|
|
|
|
<!-- *** Should really flesh this out more! Any Redhat-running
|
|
*** volunteers?
|
|
-->
|
|
|
|
</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.html">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>
|
|
|
|
<!-- *** Add other distributions, e.g., Mandrake, 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 (possibly out of date) list
|
|
of FTP servers carrying Wine:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/">
|
|
ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/
|
|
</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/">
|
|
ftp://tsx-11.mit.edu/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://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>
|
|
FIXME: Explain how to un-tar, compile, and install Wine from a tarball.
|
|
</para>
|
|
|
|
<para></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/dev.html">
|
|
http://www.winehq.com/dev.html</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 -dP 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>-d</parameter> and <parameter>-P</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>
|
|
FIXME: Go into more depth about the -p0 option...
|
|
</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:
|
|
-->
|