<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.5//EN"
		"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

<qandadiv id="faq.setup">
<title>Setting up Cygwin</title>

<!-- faq-setup.xml -->
<qandaentry id="faq.setup.setup">
<question><para>What is the recommended installation procedure?</para></question>
<answer>

<para>There is only one recommended way to install Cygwin, which is to use the GUI
installer <command>setup-*.exe</command>.  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
<ulink url="https://cygwin.com/cygwin-ug-net/setup-net.html"/>.
</para>
<para>If you do it any other way, you're on your own!
If something doesn't work right for you, and
it's not covered here or in the latest development snapshot at
<ulink url="https://cygwin.com/snapshots/"/>, then by all means report it to the
mailing list.
</para>
<para>For a searchable list of packages that can be installed with Cygwin,
see <ulink url="https://cygwin.com/packages/"/>.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.automated">
<question><para>What about an automated Cygwin installation?</para></question>
<answer>

<para>The Cygwin Setup program is designed to be interactive, but there are
a few different ways to automate it. If you are deploying to multiple systems,
the best way is to run through a full installation once, saving the entire 
downloaded package tree. Then, on target systems, run Cygwin Setup as a
"Local Install" pointed at your downloaded package tree. You could do this 
non-interactively with the command line options
<literal>-q -L -l x:\cygwin-local\</literal>, where your downloaded 
package tree is in <literal>x:\cygwin-local\</literal> (see the next FAQ for
an explanation of those options.)
</para>
<para>
For other options, search the mailing lists with terms such as 
<ulink url="http://www.google.com/search?q=cygwin+automated+setup">cygwin automated setup</ulink> or
<ulink url="http://www.google.com/search?q=automated+cygwin+install">automated cygwin install</ulink>.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.cli">
<question><para>Does Setup accept command-line arguments?</para></question>
<answer>

<para>Yes, run <literal>setup-x86.exe --help</literal> or
<literal>setup-x86_64.exe --help</literal> for a list.
</para>

<screen>
    --allow-unsupported-windows    Allow old, unsupported Windows versions
 -a --arch                         architecture to install (x86_64 or x86)
 -C --categories                   Specify entire categories to install
 -o --delete-orphans               remove orphaned packages
 -A --disable-buggy-antivirus      Disable known or suspected buggy anti virus
                                   software packages during execution.
 -D --download                     Download from internet
 -f --force-current                select the current version for all packages
 -h --help                         print help
 -I --include-source               Automatically include source download
 -i --ini-basename                 Use a different basename, e.g. "foo",
                                   instead of "setup"
 -U --keep-untrusted-keys          Use untrusted keys and retain all
 -L --local-install                Install from local directory
 -l --local-package-dir            Local package directory
 -m --mirror-mode                  Skip availability check when installing from
                                   local directory (requires local directory to
                                   be clean mirror!)
 -B --no-admin                     Do not check for and enforce running as
                                   Administrator
 -d --no-desktop                   Disable creation of desktop shortcut
 -r --no-replaceonreboot           Disable replacing in-use files on next
                                   reboot.
 -n --no-shortcuts                 Disable creation of desktop and start menu
                                   shortcuts
 -N --no-startmenu                 Disable creation of start menu shortcut
 -X --no-verify                    Don't verify setup.ini signatures
 -O --only-site                    Ignore all sites except for -s
 -M --package-manager              Semi-attended chooser-only mode
 -P --packages                     Specify packages to install
 -p --proxy                        HTTP/FTP proxy (host:port)
 -Y --prune-install                prune the installation to only the requested
                                   packages
 -K --pubkey                       URL of extra public key file (gpg format)
 -q --quiet-mode                   Unattended setup mode
 -c --remove-categories            Specify categories to uninstall
 -x --remove-packages              Specify packages to uninstall
 -R --root                         Root installation directory
 -S --sexpr-pubkey                 Extra public key in s-expr format
 -s --site                         Download site
 -u --untrusted-keys               Use untrusted keys from last-extrakeys
 -g --upgrade-also                 also upgrade installed packages
    --user-agent                   User agent string for HTTP requests
 -v --verbose                      Verbose output
 -W --wait                         When elevating, wait for elevated child
                                   process
</screen>

</answer></qandaentry>

<qandaentry id="faq.setup.noroot">
<question><para>Can I install Cygwin without administrator rights?</para></question>
<answer>

<para>Yes.  The default installation requests administrator rights because
this allows to set up the Cygwin environment so that all users can start
a Cygwin shell out of the box.  However, if you don't have administrator
rights for your machine, and the admins don't want to install it for you,
you can install Cygwin just for yourself by downloading
<command>setup-x86.exe</command> (for a 32 bit install) or
<command>setup-x86_64.exe</command> (for a 64 bit install) and then start
it from the command line or via the "Run..." dialog from the start menu
using the <literal>--no-admin</literal> option, for instance:</para>

<para>
<screen>
  setup-x86.exe --no-admin
</screen>
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.c">
<question><para>Why not install in C:\?</para></question>
<answer>

<para>The Cygwin Setup program will prompt you for a "root" directory.
The default is <literal>C:\cygwin</literal>, but you can change it.  You are urged not to
choose something like <literal>C:\</literal> (the root directory on the system drive) for
your Cygwin root.  If you do, then critical Cygwin system directories
like <literal>etc</literal>, <literal>lib</literal> and <literal>bin</literal> could easily be corrupted by
other (non-Cygwin) applications or packages that use <literal>\etc</literal>,
<literal>\lib</literal> or <literal>\bin</literal>.  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.
</para>
<para>(In the past, there had been genuine bugs that would cause problems
for people who installed in <literal>C:\</literal>, but we believe those are gone
now.)
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.old-versions">
<question><para>Can I use Cygwin Setup to get old versions of packages (like gcc-2.95)?</para></question>
<answer>

<para>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 
<ulink url="https://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 <ulink url="https://cygwin.com/problems.html"/>.
</para>
<para>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, <literal>gcc2-2.95.3-10-src.tar.bz2</literal>), 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.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.install-security">
<question><para>How does Cygwin secure the installation and update process?</para></question>
<answer>

<para>
Here is how Cygwin secures the installation and update process to counter
<ulink url="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">man-in-the-middle (MITM) attacks</ulink>:
</para>

<orderedlist>
<listitem><para>The Cygwin website provides the setup program
(<literal>setup-x86.exe</literal> or <literal>setup-x86_64.exe</literal>)
using HTTPS (SSL/TLS).
This authenticates that the setup program
came from the Cygwin website
(users simply use their web browsers to download the setup program).
You can use tools like Qualsys' SSL Server Test,
<ulink url="https://www.ssllabs.com/ssltest/"/>,
to check the HTTPS configuration of Cygwin.
The cygwin.com site supports HTTP Strict Transport Security (HSTS),
which forces the browser to keep using HTTPS once the browser has seen
it before (this counters many downgrade attacks).
</para></listitem>
<listitem><para>The setup program has the
Cygwin public key embedded in it.
The Cygwin public key is protected from attacker subversion
during transmission by the previous step, and this public
key is then used to protect all later steps.
You can confirm that the key is in setup by looking at the setup project
(<ulink url="http://sourceware.org/cygwin-apps/setup.html"/>)
source code file <literal>cyg-pubkey.h</literal>
(the key is automatically generated from file <literal>cygwin.pub</literal>).
</para></listitem>
<listitem><para>The setup program downloads
the package list <literal>setup.ini</literal> from a mirror
and checks its digital signature.
The package list is in the file
<literal>setup.bz2</literal> (compressed) or
<literal>setup.ini</literal> (uncompressed) on the selected mirror.
The package list includes for every official Cygwin package
the package name, cryptographic hash, and length (in bytes).
The setup program also gets the relevant <literal>.sig</literal>
(signature) file for that package list, and checks that the package list
is properly signed with the Cygwin public key embedded in the setup program.
A mirror could corrupt the package list and/or signature, but this
would be detected by setup program's signature detection
(unless you use the <literal>-X</literal> option to disable signature checking).
The setup program also checks the package list
timestamp/version and reports to the user if the file
goes backwards in time; that process detects downgrade attacks
(e.g., where an attacker subverts a mirror to send a signed package list
that is older than the currently-downloaded version).
</para></listitem>
<listitem><para>The packages to be installed
(which may be updates) are downloaded and both their
lengths and cryptographic hashes
(from the signed <literal>setup.{bz2,ini}</literal> file) are checked.
Non-matching packages are rejected, countering any attacker's
attempt to subvert the files on a mirror.
Cygwin currently uses the cryptographic hash function SHA-512
for the <literal>setup.ini</literal> files.
</para></listitem>
</orderedlist>

<para>
Cygwin uses the cryptographic hash algorithm SHA-512 as of 2015-03-23.
The earlier 2015-02-06 update of the setup program added support for SHA-512
(Cygwin previously used MD5).
There are no known practical exploits of SHA-512 (SHA-512 is part of the
widely-used SHA-2 suite of cryptographic hashes).
</para>

</answer></qandaentry>

<qandaentry id="faq.setup.increase-install-security">
<question><para>What else can I do to ensure that my installation and updates are secure?</para></question>
<answer>

<para>
To best secure your installation and update process, download
the setup program <literal>setup-x86.exe</literal> (32-bit) or
<literal>setup-x86_64.exe</literal> (64-bit), and then
check its signature (using a signature-checking tool you trust)
using the Cygwin public key
(<ulink url="https://cygwin.com/key/pubring.asc"/>).
This was noted on the front page for installing and updating.
</para>
<para>
If you use the actual Cygwin public key, and have an existing secure
signature-checking process, you will counter many other
attacks such as subversion of the Cygwin website and
malicious certificates issued by untrustworthy certificate authorities (CAs).
One challenge, of course, is ensuring that
you have the actual Cygwin public key.
You can increase confidence in the Cygwin public key by checking older copies
of the Cygwin public key (to see if it's been the same over time).
Another challenge is having a secure signature-checking process.
You can use GnuPG to check signatures; if you have a trusted Cygwin
installation you can install GnuPG.
Otherwise, to check the signature you must use an existing trusted tool or
install a signature-checking tool you can trust.
</para>
<para>
Not everyone will go through this additional effort,
but we make it possible for those who want that extra confidence.
We also provide automatic mechanisms
(such as our use of HTTPS) for those with limited time and
do not want to perform the signature checking on the setup program itself.
Once the correct setup program is running, it will counter other attacks
as described in
<ulink url="https://cygwin.com/faq/faq.html#faq.setup.install-security"/>.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.virus">
<question><para>Is Cygwin Setup, or one of the packages, infected with a virus?</para></question>
<answer>

<para>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 <literal>setup</literal>.  Read the next entry for a fairly safe way to do
this.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.hang">
<question><para>My computer hangs when I run Cygwin Setup!</para></question>
<answer>

<para>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:
</para>
<orderedlist><listitem><para>Download <literal>setup-x86.exe</literal> or
<literal>setup-x86_64.exe</literal> and scan it explicitly.
</para>
</listitem>
<listitem><para>Turn off the anti-virus software.
</para>
</listitem>
<listitem><para>Run setup to download and extract all the tar files.
</para>
</listitem>
<listitem><para>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.
</para>
</listitem>
</orderedlist>

<para>This should be safe, but only if Cygwin Setup is not substituted by
something malicious.
See also
<ulink url="https://cygwin.com/faq/faq.html#faq.setup.install-security"/>
for a description of how the
Cygwin project counters man-in-the-middle (MITM) attacks.
</para>

<para>See also <ulink url="https://cygwin.com/faq/faq.html#faq.using.bloda"/>
for a list of applications that have been known, at one time or another, to
interfere with the normal functioning of Cygwin.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.what-packages">
<question><para>What packages should I download? Where are 'make', 'gcc', 'vi', etc?  </para></question>
<answer>
<para>When using Cygwin Setup for the first time, the default is to install
a minimal subset of all available packages.  If you want anything beyond that,
you will have to select it explicitly.  See 
<ulink url="https://cygwin.com/packages/"/> for a searchable list of available
packages, or use <literal>cygcheck -p </literal> as described in the Cygwin
User's Guide at
<ulink url="https://cygwin.com/cygwin-ug-net/cygcheck.html"/>.
</para>
<para>If you want to build programs, of course you'll need <literal>gcc</literal>,
<literal>binutils</literal>, <literal>make</literal> and probably other packages from the
``Devel'' category. Text editors can be found under ``Editors''.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.everything">
<question><para>How do I just get everything?</para></question>
<answer>

<para>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:
</para>
<orderedlist>
<listitem><para>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 <emphasis>everything</emphasis>, not just what it thinks you should have
by default.
</para>
</listitem>
<listitem><para>Now click on the ``View'' button (twice) until you get to the
``Pending'' view.  This shows exactly which packages are about to be
downloaded and installed.
</para>
</listitem>
</orderedlist>

<para>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.
</para>
<para>In general, a better method (in my opinion), is to:
</para>
<orderedlist>
<listitem><para>First download &amp; install all packages that would normally be
installed by default.  This includes fundamental packages and any
updates to what you have already installed.  Then...
</para>
</listitem>
<listitem><para>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 ``Pending'' view before proceeding, in case there's
something you really <emphasis>don't</emphasis> want.
</para>
</listitem>
<listitem><para>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 <emphasis>really</emphasis> want to install everything!
</para>
</listitem>
</orderedlist>

</answer></qandaentry>

<qandaentry id="faq.setup.disk-space">
<question><para>How much disk space does Cygwin require?</para></question>
<answer>

<para>That depends, obviously, on what you've chosen to download and
install.  A full installation today is probably larger than 1 GB
installed, not including the package archives themselves nor the source
code.
</para>
<para>After installation, the package archives remain in your ``Local
Package Directory''.  By default the location of
<literal>setup-x86{_64}.exe</literal>.  You may conserve disk space by
deleting the subdirectories there.  These directories will have very weird
looking names, being encoded with their URLs
(named <literal>ftp%3a%2f...</literal>).
</para>
<para>Of course, you can keep them around in case you want to reinstall a
package. If you want to clean out only the outdated packages, Michael Chase
has written a script called <literal>clean_setup.pl</literal>, available
at <filename>unsupported/clean_setup.pl</filename> in a Cygwin mirror.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.what-upgraded">
<question><para>How do I know which version I upgraded from?</para></question>
<answer>

<para>Detailed logs of the most recent Cygwin Setup session can be found in
<literal>/var/log/setup.log.full</literal> and less verbose information about
prior actions is in <literal>/var/log/setup.log</literal>.
</para>

</answer></qandaentry>

<qandaentry id="faq.setup.setup-fails">
<question><para>What if setup fails?</para></question>
<answer>

<para>First, make sure that you are using the latest version of Cygwin Setup.
The latest version is always available from the Cygwin Home Page at
<ulink url="https://cygwin.com/"/>.
</para>
<para>If you are downloading from the Internet, setup will fail if it cannot
download the list of mirrors at <ulink url="https://cygwin.com/mirrors.html"/>.
It could be that the network is too busy.  Something similar could be the
cause of a download site not working.  Try another mirror, or try again
later.
</para>
<para>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.
</para>
<para>If setup has otherwise behaved strangely, check the files
<literal>setup.log</literal> and <literal>setup.log.full</literal> in
<literal>/var/log</literal> (<literal>C:\cygwin\var\log</literal> by
default).  It may provide some clues as to what went wrong and why.
</para>
<para>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.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.name-with-space">
<question><para>My Windows logon name has a space in it, will this cause problems?</para></question>
<answer>

<para>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.
</para>
<para>You have two choices:
</para><orderedlist>
<listitem><para>You can rename the user in the Windows User Manager GUI.
</para>
</listitem>
<listitem><para>If that's not possible, you can create an /etc/passwd file
using the <command>mkpasswd</command> command.  Then you can simply edit your
Cygwin user name (first field). It's also a good idea to avoid spaces in the
home directory.
</para>
</listitem>
</orderedlist>

</answer></qandaentry>

<qandaentry id="faq.setup.home">
<question><para>My <literal>HOME</literal> environment variable is not what I want.</para></question>
<answer>

<para>When starting Cygwin from Windows, <literal>HOME</literal> is determined
as follows:
</para>
<orderedlist>
<listitem><para>If <literal>HOME</literal> is set in the Windows environment,
translated to POSIX form.
</para>
</listitem>
<listitem><para>Otherwise, use the pw_home field from the passwd entry as
returned by <command>getent passwd</command>.  If you want to learn how this
field is set by Cygwin and how you can change it, this is explained in great
detail in the Cygwin User's Guide at
<ulink url="https://cygwin.com/cygwin-ug-net/ntsec.html"/>.
</para>
</listitem>
</orderedlist>

<para>When using Cygwin from a network login (via ssh for instance),
<literal>HOME</literal> is always taken from the passwd entry.
</para>
<para>If your <literal>HOME</literal> is set to a value such as /cygdrive/c,
it is likely that it was set in Windows. Start a DOS Command Window and type 
"set HOME" to verify if this is the case.
</para>
<para>Access to shared drives is often restricted when starting from the
network, thus Domain users may wish to have a different <literal>HOME</literal>
in the Windows environment (on shared drive) than in Cygwin (on local drive).
Note that ssh only considers the account information as retrieved by
getpwnam(3), disregarding <literal>HOME</literal>. 
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.uninstall-packages">
<question><para>How do I uninstall individual packages?</para></question>
<answer>

<para>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''.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.uninstall-service">
<question><para>How do I uninstall a Cygwin service?</para></question>
<answer>
<orderedlist>
<listitem><para>List all services you have installed with 
<literal>cygrunsrv -L</literal>. If you do not have 
<literal>cygrunsrv</literal> installed, skip this FAQ.
</para></listitem>
<listitem><para>Before removing the service, you should stop it with 
<literal>cygrunsrv --stop <replaceable>service_name</replaceable></literal>. 
If you have <literal>inetd</literal> configured to run as a standalone
service, it will not show up in the list, but 
<literal>cygrunsrv --stop inetd</literal> will work to stop it as 
well.
</para></listitem> 
<listitem><para>Lastly, remove the service with
<literal>cygrunsrv --remove <replaceable>service_name</replaceable></literal>.
</para></listitem>
</orderedlist>
</answer></qandaentry>

<qandaentry id="faq.setup.uninstall-all">
<question><para>How do I uninstall <emphasis role='bold'>all</emphasis> of Cygwin?</para></question>
<answer>
<para>Setup has no automatic uninstall facility.  The recommended method to remove all 
of Cygwin is as follows:
</para>
<orderedlist>
<listitem><para>If you have any Cygwin services running, remove by repeating 
the instructions in <ulink
url="https://cygwin.com/faq/faq.html#faq.setup.uninstall-service"/> for
all services that you installed.  Common services that might have been
installed are <literal>sshd</literal>, <literal>cron</literal>, 
<literal>cygserver</literal>, <literal>inetd</literal>, <literal>apache</literal>, 
<literal>postgresql</literal>, and so on.
</para>
</listitem>
<listitem><para>Stop the X11 server if it is running, and terminate any Cygwin programs 
that might be running in the background.  Exit the command prompt and ensure
that no Cygwin processes remain.  Note: If you want to save your mount points for a later 
reinstall, first save the output of <literal>mount -m</literal> as described at 
<ulink url="https://cygwin.com/cygwin-ug-net/mount.html"/>.
</para>
</listitem>
<listitem><para>If you installed <literal>cyglsa.dll</literal> by running the
shell script <literal>/usr/bin/cyglsa-config</literal> as described in
<ulink url="https://cygwin.com/cygwin-ug-net/ntsec.html"/>, then you need to
configure Windows to stop using the LSA authentication package.  You do so by
editing the registry and restoring
<literal>/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Authentication Packages</literal>
back to it's original value of <literal>msv1_0</literal>, and then rebooting.
</para>
</listitem>
<listitem><para>Delete the Cygwin root folder and all subfolders.  If you get
an error that an object is in use, then ensure that you've stopped all services
and closed all Cygwin programs.  If you get a 'Permission Denied' error then
you will need to modify the permissions and/or ownership of the files or
folders that are causing the error.  For example, sometimes files used by
system services end up owned by the SYSTEM account and not writable by regular
users.</para>
<para>The quickest way to delete the entire tree if you run into this problem
is to take ownership of all files and folders to your account.  To do
this in Windows Explorer, right click on the root Cygwin folder, choose
Properties, then the Security tab.  If you are using Simple File Sharing, you
will need to boot into Safe Mode to access the Security tab.  Select Advanced,
then go to the Owner tab and make sure your account is listed as the owner.
Select the 'Replace owner on subcontainers and objects' checkbox and press Ok.
After Explorer applies the changes you should be able to delete the entire tree
in one operation.  Note that you can also achieve by using other tools such as
<literal>icacls.exe</literal> or directly from Cygwin by using
<literal>chown</literal>.  Please note that you shouldn't use the
recursive form of chown on directories that have other file systems
mounted under them (specifically you must avoid
<literal>/proc</literal>) since you'd change ownership of the files under those
mount points as well.
</para>
</listitem>
<listitem><para>Delete the Cygwin shortcuts on the Desktop and Start Menu, and
anything left by setup-x86{_64}.exe in the download directory.  However, if you
plan to reinstall Cygwin it's a good idea to keep your setup-x86{_64}.exe
download directory since you can reinstall the packages left in its cache
without redownloading them.
</para>
</listitem>
<listitem><para>If you added Cygwin to your system path, you should remove it unless you 
plan to reinstall Cygwin to the same location.  Similarly, if you set your 
CYGWIN environment variable system-wide and don't plan to reinstall, you should 
remove it.
</para>
</listitem>
<listitem><para>Finally, if you want to be thorough you can delete the registry tree 
<literal>Software\Cygwin</literal> under <literal>HKEY_LOCAL_MACHINE</literal> and/or 
<literal>HKEY_CURRENT_USER</literal>.  However, if you followed the directions above you 
will have already removed everything important.  Typically only the installation
directory has been stored in the registry at all.
</para>
</listitem>
</orderedlist>

</answer></qandaentry>

<qandaentry id="faq.setup.snapshots">
<question><para>How do I install snapshots?</para></question>
<answer>

<para>First, are you sure you want to do this?  Snapshots are risky.  They
have not been tested.  Use them <emphasis role='bold'>only</emphasis> if there is a feature or
bugfix that you need to try, and you are willing to deal with any
problems, or at the request of a Cygwin developer.
</para>
<para>You cannot use Cygwin Setup to install a snapshot.
</para>
<para>First, you will need to download the snapshot from the snapshots
page at <ulink url="https://cygwin.com/snapshots/"/>.  Note the directory where
you saved the snapshot tarball.
</para>
<para>Before installing a snapshot, you must first Close <emphasis role='bold'>all</emphasis> Cygwin
applications, including shells and services (e.g., <literal>inetd</literal>, <literal>sshd</literal>).
You will not be able to replace <literal>cygwin1.dll</literal> if any Cygwin process is
running.  You may have to restart Windows to clear the DLL from memory
(beware of automatic service startup).
</para>
<para>Most of the downloaded snapshot can be installed using <literal>tar</literal>.  Cygwin
<literal>tar</literal> won't be able to update <literal>/usr/bin/cygwin1.dll</literal> (because it's
used by <literal>tar</literal> itself), but it should succeed with everything else.  If
you are only installing the DLL snapshot, skip the first tar command.  Open
a <literal>bash</literal> shell (it should be the only running Cygwin process) and issue
the following commands:
<screen>
	/bin/tar -C / -xvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.* --exclude=usr/bin/cygwin1.dll
	/bin/tar -C /tmp -xvf /posix/path/to/cygwin-inst-YYYYMMDD.tar.* usr/bin/cygwin1.dll
</screen>
</para>
<para>Exit the bash shell, and use Explorer or the Windows command shell to
first rename <literal>C:\cygwin\bin\cygwin1.dll</literal> to
<literal>C:\cygwin\bin\cygwin1-prev.dll</literal> and then move
<literal>C:\cygwin\tmp\usr\bin\cygwin1.dll</literal>
to <literal>C:\cygwin\bin\cygwin1.dll</literal> (assuming you installed Cygwin in
<literal>C:\cygwin</literal>).
</para>
<para>The operative word in trying the snapshots is "<emphasis>trying</emphasis>".  If you
notice a problem with the snapshot that was not present in the release
DLL (what we call a "regression"), please report it to the Cygwin
mailing list (see <ulink url="https://cygwin.com/problems.html"/> for problem
reporting guidelines).  If you wish to go back to the older version of the
DLL, again, close all Cygwin processes, delete
<literal>C:\cygwin\bin\cygwin1.dll</literal>, and
rename <literal>C:\cygwin\bin\cygwin1-prev.dll</literal> back to
<literal>C:\cygwin\bin\cygwin1.dll</literal> (again assuming that your "<literal>/</literal>" is
<literal>C:\cygwin</literal>).  To restore the rest of the snapshot
files, reinstall the "<literal>cygwin</literal>" package using Setup.
</para>

</answer></qandaentry>

<qandaentry id="faq.setup.mirror">
<question><para>Can Cygwin Setup maintain a ``mirror''?</para></question>
<answer>

<para>NO.  Cygwin Setup cannot do this for you.  Use a tool designed for
this purpose.  See <ulink url="http://rsync.samba.org/"/>,
<ulink url="http://www.gnu.org/software/wget/"/> 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
<ulink url="https://sourceware.org/cygwin-apps/setup.html"/>.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.cd">
<question><para>How can I make my own portable Cygwin on CD?</para></question>
<answer>

<para>While some users have successfully done this, for example Indiana
University's XLiveCD <ulink url="http://racinfo.indiana.edu/research/xlivecd.php"/>, there is no
easy way to do it. Full instructions for constructing a portable Cygwin
on CD by hand can be found on the mailing list at
<ulink url="https://www.cygwin.com/ml/cygwin/2003-07/msg01117.html"/>
(Thanks to fergus at bonhard dot uklinux dot net for these instructions.)
Please note that these instructions are very old and are referring to the
somewhat different setup of a Cygwin 1.5.x release.  As soon as somebody set
this up for recent Cygwin releases, we might add this information here.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.registry">
<question><para>How do I save, restore, delete, or modify the Cygwin information stored in the registry?</para></question>
<answer>

<para>Cygwin doesn't store anything important in the registry anymore for
quite some time.  There's no reason to save, restore or delete it.
</para></answer></qandaentry>
</qandadiv>

