  <chapter id="installing">
    <title>Installing or uninstalling Wine</title>

    <para>
      A standard Wine distribution form (which you probably downloaded
      according to chapter <link linkend="getting-wine">Getting Wine</link>)
      includes quite a few different programs, libraries
      and configuration files.  All of these
      must be set up properly for Wine to work well.  In order to
      achieve this, this chapter will guide you through the necessary steps
      to get the Wine files
      installed on your system. It will <emphasis>not</emphasis>
      deal with how to get Wine's Windows environment
      <emphasis>configured</emphasis>; that's what the next chapter
      will talk about.
    </para>

    <para>
      When installing Wine, you should make sure that it doesn't happen
      to overwrite a previous Wine installation (as this would cause
      an overwhelming amount of annoying and fatal conflicts);
      uninstalling any previous Wine version (as explained in this chapter)
      to avoid this problem is recommended.
    </para>

    <sect1 id="installing-package">
      <title>Installing or uninstalling Wine packages</title>

      <para>
	Now that you have downloaded the Debian or RPM or whatever Wine
	package file, probably via the instructions given in the
	previous chapter, you may be wondering "What in the world do I
	do with this thing?".
	This section will hopefully be able to put an end to your
	bewildered questioning, by giving detailed install instructions
	for all sorts of well-known package types.
      </para>

      <sect2>
        <title>Debian Linux</title>

	<para>
	  In case you haven't downloaded and automatically installed the
	  Wine package file via <command>apt-get</command> as described
	  in the <link linkend="getting-wine">Getting Wine</link>
	  section, you now need to use <command>dpkg</command> to
	  install it.  Switch to the directory you downloaded the Debian
	  .deb package file to.  Once there, type these commands,
	  adapting the package file name as required:
        </para>
  <screen>
  <prompt>$ </><userinput>su -</>
  Password:
  <prompt># </><userinput>cd /home/user</>
  <prompt># </><userinput>dpkg -i wine_<replaceable>0.0.20030115-1</>.deb</>
  </screen>
        <para>
	  (Type the root password at the "Password:" prompt)
	</para>

        <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>

	<para>
	  Uninstalling an installed Wine Debian package can be done by
	  running:
	</para>
  <screen>
  <prompt># </><userinput>dpkg -l|grep wine</>
  </screen>
        <para>
	  The second column of the output (if any) of this command will
	  indicate the installed packages dealing with "wine".
	  The corresponding packages can be uninstalled by running:
	</para>
  <screen>
  <prompt># </><userinput>dpkg -r <replaceable>&lt;package_name&gt;</></>
  </screen>
        <para>
	  where &lt;package_name&gt; is the name of the Wine-related package
	  which you want to uninstall.
        </para>
      </sect2>
      <sect2>
        <title>Linux Red Hat, Mandrake, SUSE and other distributions using RPM</title>

        <para>
	  Most distributions provide a graphical tool for installing
	  RPM packages, you can use it by simply clicking (Or double clicking,
	  depending on your system settings) on the RPM. If you don't have a
	  graphical RPM manager installed, using a shell, switch to the
	  directory where you downloaded the RPM package file to.
	  Once there, type this one command as root, adapting the
	  package file name as required:
        </para>
  <screen>
  <prompt># </><userinput>rpm -ivh wine-<replaceable>20031212.i386</>.rpm</>
  </screen>
        <para>
          You may also want to install the
          <systemitem>wine-devel</systemitem> package.
        </para>
	<para>
	  If you've installed wine graphically, you can uninstall it
	  using your graphical RPM manager (Gnorpm, Kpackage, Yast,
	  Mandrake Control Center and so on), alternatively, uninstalling
	  a installed Wine RPM package can be done from a shell, by running:
	</para>
  <screen>
  <prompt># </><userinput>rpm -qa|grep -i wine</>
  </screen>
        <para>
	  This command will indicate the installed packages dealing with "wine".
	  The corresponding packages can be uninstalled by running:
	</para>
  <screen>
  <prompt># </><userinput>rpm -e <replaceable>&lt;package_name&gt;</></>
  </screen>
        <para>
	  where &lt;package_name&gt; is the name of the Wine-related package
	  which you want to uninstall.
        </para>
      </sect2>
    </sect1>

    <sect1 id="installing-source">
      <title>Installing or uninstalling a Wine source code tree</title>

      <para>
        If you are in the directory of the Wine version that you just
	compiled (e.g. by having run <command>make depend && make</command>), then you may now install this Wine version by running as <glossterm>root</glossterm>:
      </para>
  <screen>
  <prompt># </><userinput>make install</>
  </screen>
      <para>
        This will copy the Wine binary files to their final destination
	in your system. You can then proceed to the <link
	linkend="config-wine-main">Configuration chapter</link> to
	configure the Wine environment.
      </para>

      <para>
        If instead you want to uninstall the currently installed Wine
	source code version, then change to the main directory of this
	version and run as <glossterm>root</glossterm>:
      </para>
  <screen>
  <prompt># </><userinput>make uninstall</>
  </screen>
    </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:
-->
