  <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>Red Hat (RPM) Linux</title>

        <para>
	  Switch to the directory 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>20020605-2.i386</>.rpm</>
  </screen>
        <para>
          You may also want to install the
          <systemitem>wine-devel</systemitem> package.
        </para>
	<para>
	  Uninstalling an installed Wine RPM package can be done 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:
-->
