@chapter Installation Instructions
@section Contents

There is only one recommended way to install Cygwin, which is to use the GUI
installer ``Cygwin Setup''.  It is flexible and easy to use.  
You can pick and choose the packages you wish to install, and update
them individually.  Full source code is available for all packages and
tools.  More information on using Cygwin Setup may be found at
@file{http://cygwin.com/cygwin-ug-net/setup-net.html}.

If you do it any other way, you're on your own!  That said, keep in mind
that the GUI installer is a "work in progress", so there might be a few
difficulties, especially if you are behind a firewall or have other
specific requirements.  If something doesn't work right for you, and
it's not covered here or in the latest development snapshot at
@file{http://cygwin.com/setup-snapshots/}, then by all means report it to the
mailing list.

For a searchable list of packages that can be installed with Cygwin,
see @file{http://cygwin.com/packages/}.

@section Installation using ``Cygwin Setup''

The Cygwin Setup program is the @emph{only} recommended way to install
Cygwin. 

@subsection Why not install in C:\?

The Cygwin Setup program will prompt you for a "root" directory.
The default is @samp{C:\cygwin}, but you can change it.  You are urged not to
choose something like @samp{C:\} (the root directory on the system drive) for
your Cygwin root.  If you do, then critical Cygwin system directories
like @samp{etc}, @samp{lib} and @samp{bin} could easily be corrupted by
other (non-Cygwin) applications or packages that use @samp{\etc},
@samp{\lib} or @samp{\bin}.  Perhaps there is no conflict now, but who
knows what you might install in the future?  It's also just good common
sense to segregate your Cygwin "filesystems" from the rest of your
Windows system disk.

(In the past, there had been genuine bugs that would cause problems
for people who installed in @samp{C:\}, but we believe those are gone
now.)

@subsection Can I use Cygwin Setup to get old versions of packages (like gcc-2.95)?

Cygwin Setup can be used to install any packages that are on a
Cygwin mirror, which usually includes one version previous to the
current one. The complete list may be searched at 
@file{http://cygwin.com/packages/}.  There is no complete archive of
older packages. If you have a problem with the current version of
a Cygwin package, please report it to the mailing list using the 
guidelines at @file{http://cygwin.com/problems.html}.

That said, if you really need an older package, you may be able to find
an outdated or archival mirror by searching the web for an old package
version (for example, @samp{gcc2-2.95.3-10-src.tar.bz2}), but keep in
mind that this older version will not be supported by the mailing list
and that installing the older version will not help improve Cygwin.

@subsection Is Cygwin Setup, or one of the packages, infected with a virus?

Unlikely.  Unless you can confirm it, please don't report it to the
mailing list.  Anti-virus products have been known to detect false
positives when extracting compressed tar archives.  If this causes
problems for you, consider disabling your anti-virus software when
running @code{setup}.  Read the next entry for a fairly safe way to do
this.

@subsection My computer hangs when I run Cygwin Setup!

Both Network Associates (formerly McAfee) and Norton anti-virus
products have been reported to "hang" when extracting Cygwin tar
archives.  If this happens to you, consider disabling your anti-virus
software when running Cygwin Setup.  The following procedure should be
a fairly safe way to do that:

@enumerate
@item Download @code{setup.exe} and scan it explicitly.

@item Turn off the anti-virus software.

@item Run setup to download and extract all the tar files.

@item Re-activate your anti-virus software and scan everything
in C:\cygwin (or wherever you chose to install), or your entire hard
disk if you are paranoid.

@end enumerate

This should be safe, but only if Cygwin Setup is not substituted by
something malicious, and no mirror has been compromised.

@subsection What packages should I download?

When using Cygwin Setup for the first time, the default is to install
a minimal subset of packages.  If you want anything beyond that, you
will have to select it explicitly.  See
@file{http://cygwin.com/packages/} for a searchable list of available
packages.

If you want to build programs, of course you'll need @samp{gcc},
@samp{binutils}, @samp{make} and probably other packages from the
``Devel'' category.

@subsection How do I just get everything?

Long ago, the default was to install everything, much to the
irritation of most users.  Now the default is to install only a basic
core of packages.  Cygwin Setup is designed to make it easy to browse
categories and select what you want to install or omit from those
categories.  It's also easy to install everything:

@enumerate

@item At the ``Select Packages'' screen, in ``Categories'' view, at the line 
marked ``All'', click on the word ``default'' so that it changes to
``install''.  (Be patient, there is some computing to do at this step.
It may take a second or two to register the change.)  This tells Setup
to install @emph{everything}, not just what it thinks you should have
by default.

@item Now click on the ``View'' button (twice) until you get the
``Partial'' view.  This shows exactly which packages are about to be
downloaded and installed.

@end enumerate

This procedure only works for packages that are currently available.
There is no way to tell Cygwin Setup to install all packages by
default from now on.  As new packages become available that would not
be installed by default, you have to repeat the above procedure to get
them.

In general, a better method (in my opinion), is to:

@enumerate

@item First download & install all packages that would normally be
installed by default.  This includes fundamental packages and any
updates to what you have already installed.  Then...

@item Run Cygwin Setup again, and apply the above technique to get all
new packages that would not be installed by default.  You can check
the list in the Partial View before proceeding, in case there's
something you really @emph{don't} want.

@item In the latest version of Cygwin Setup, if you click the ``View''
button (twice) more, it shows packages not currently installed.  You
ought to check whether you @emph{really} want to install everything!

@end enumerate

@subsection How much disk space does Cygwin require?

That depends, obviously, on what you've chosen to download and
install.  A full installation today is probably larger than 800MB
installed, not including the package archives themselves nor the source
code.

After installation, the package archives remain in your ``Local
Package Directory'', by default the location of @code{setup.exe}.  You
may conserve disk space by deleting the subdirectories there.  These
directories will have very weird looking names, being encoded with
their URLs.

@subsection What if setup fails?

First, make sure that you are using the latest version of Cygwin
Setup.  The latest version is always available from the 'Install
Cygwin now' link on the Cygwin Home Page at @file{http://cygwin.com/}.

If you are downloading from the Internet, setup will fail if it cannot
download the list of mirrors at
@file{http://cygwin.com/mirrors.html}.  It could be that
the network is too busy.  Similarly for an ftp download site that isn't
working.  Try another mirror, or try again later.

If setup refuses to download a package that you know needs to be
upgraded, try deleting that package's entry from /etc/setup.  If you are
reacting quickly to an announcement on the mailing list, it could be
that the mirror you are using doesn't have the latest copy yet.  Try
another mirror, or try again tomorrow.

If setup has otherwise behaved strangely, check the files
@samp{setup.log} and @samp{setup.log.full} in @code{/var/log}
(@code{C:\cygwin\var\log} by default).  It may provide some clues as
to what went wrong and why.

If you're still baffled, search the Cygwin mailing list for clues.
Others may have the same problem, and a solution may be posted there.
If that search proves fruitless, send a query to the Cygwin mailing
list.  You must provide complete details in your query: version of
setup, options you selected, contents of setup.log and setup.log.full,
what happened that wasn't supposed to happen, etc.

@subsection My Windows logon name has a space in it, will this cause problems?

Most definitely yes!  UNIX shells (and thus Cygwin) use the space
character as a word delimiter.  Under certain circumstances, it is
possible to get around this with various shell quoting mechanisms, but
you are much better off if you can avoid the problem entirely.

In particular, the environment variables @samp{USER} and @samp{HOME} are
set for you in /etc/profile.  By default these derive from your Windows
logon name.  You may edit this file and set them explicitly to something
without spaces.

(If you use the @samp{login} package or anything else that reads
/etc/passwd, you may need to make corresponding changes there.  See the
README file for that package.)

@subsection How do I uninstall individual packages?

Run Cygwin Setup as you would to install packages.  In the list of
packages to install, browse the relevant category or click on the
``View'' button to get a full listing.  Click on the cycle glyph until
the action reads ``Uninstall''.  Proceed by clicking ``Next''.

@subsection How do I uninstall @strong{all} of Cygwin?

Setup has no automatic uninstall facility.  Just delete everything
manually:

@itemize @bullet
@item Cygwin shortcuts on the Desktop and Start Menu

@item The registry tree @samp{Software\Cygnus Solutions} under
@code{HKEY_LOCAL_MACHINE} and/or @code{HKEY_CURRENT_USER}.

@item Anything under the Cygwin root folder, @samp{C:\cygwin} by
default.

@item Anything created by setup in its temporary working directory.

@end itemize

It's up to you to deal with other changes you made to your system, such
as installing the inetd service, altering system paths, etc.  Setup
would not have done any of these things for you.

@subsection How do I install snapshots?

First, are you sure you want to do this?  Snapshots are risky.  They
have not been tested.  Use them @strong{only} if there is a feature or
bugfix that you need to try, and you are willing to deal with any
problems.

Before installing a snapshot, you must first Close @strong{all} Cygwin
applications, including shells and services (e.g. inetd, sshd), before
updating @code{cygwin1.dll}.  You may have to restart Windows to clear
the DLL from memory.

You cannot use Setup to install a snapshot.

You should generally install the full
@code{cygwin-inst-YYYYMMDD.tar.bz2} update, rather than just the DLL,
otherwise some components may be out of sync.  Cygwin tar won't be
able to update @code{/usr/bin/cygwin1.dll}, but it should succeed with
everything else.

@enumerate

@item Download the snapshot, and run:
@example
	cd /
        tar jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 --exclude=usr/bin/cygwin1.dll
        cd /tmp
        tar jxvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.bz2 usr/bin/cygwin1.dll
@end example

@item After closing all Cygwin apps (see above), use Explorer or the
Windows command shell to move @code{C:\cygwin\tmp\usr\bin\cygwin1.dll}
to @code{C:\cygwin\bin\cygwin1.dll}.

@end enumerate

@subsection Can Cygwin Setup maintain a ``mirror''?

NO.  Cygwin Setup cannot do this for you.  Use a tool designed for
this purpose.  See @file{http://rsync.samba.org/},
@file{http://wget.sunsite.dk/} for utilities that can do this for you.
For more information on setting up a custom Cygwin package server, see
the Cygwin Setup homepage at
@file{http://sources.redhat.com/cygwin-apps/setup.html}.
