376 lines
15 KiB
Plaintext
376 lines
15 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 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><Type in root password></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:
|
|
-->
|