<?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
Cygwin Setup program, a GUI installer.
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.
<ulink url="https://cygwin.com/cygwin-ug-net/setup-net.html">More information</ulink>
is available on using the Cygwin Setup program.
</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 Cygwin test package (see
<xref linkend="faq.setup.testrels"></xref>),
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 the Cygwin Setup program 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 the Cygwin Setup program accept command-line arguments?</para></question>
<answer>

<para>Yes, run the Cygwin Setup program with option
<literal>--help</literal> for an up to date list:
</para>

<screen>
    --allow-unsupported-windows    Allow old, unsupported Windows versions
 -a --arch                         Architecture to install (x86_64 or x86)
 -C --categories                   Specify categories to install
    --compact-os                   Compress installed files with Compact OS
                                   (xpress4k, xpress8k, xpress16k, lzx)
 -o --delete-orphans               Remove orphaned packages
 -A --disable-buggy-antivirus      Disable known or suspected buggy anti virus
                                   software packages during execution
 -D --download                     Download packages from internet
 -f --force-current                Select the current version for all packages
 -h --help                         Print help
 -I --include-source               Automatically install source for every
                                   package installed
 -i --ini-basename                 Use a different basename, e.g. "foo",
                                   instead of "setup"
 -U --keep-untrusted-keys          Use untrusted keys and retain all
    --lang                         Specify GUI language langid
 -L --local-install                Install packages from local directory
 -l --local-package-dir            Local package directory
 -m --mirror-mode                  Skip package 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
    --no-version-check             Suppress checking if a newer version of
                                   setup is available
 -w --no-warn-deprecated-windows   Don't warn about deprecated Windows versions
    --enable-old-keys              Enable old cygwin.com keys
 -O --only-site                    Do not download mirror list.  Only use sites
                                   specified with -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 or absolute path of extra public key
                                   file (RFC4880 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 DSA public key in s-expr format
 -s --site                         Download site URL
    --symlink-type                 Symlink type (lnk, native, sys, wsl)
 -u --untrusted-keys               Use untrusted saved extra keys
 -g --upgrade-also                 Also upgrade installed packages
    --user-agent                   User agent string for HTTP requests
 -v --verbose                      Verbose output
 -V --version                      Show version
 -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 the Cygwin Setup
program, 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_64.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 the Cygwin Setup program to get old versions of packages (like gcc-2.95)?</para></question>
<answer>

<para>The Cygwin Setup program can be used to install any packages that are on a
Cygwin mirror, which usually includes at least 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" xreflable="Secure Installation">
<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 Cygwin Setup program
using HTTPS (SSL/TLS).
This authenticates that the Cygwin Setup program
came from the Cygwin website
(users simply use their web browsers to download the Cygwin 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 Cygwin 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 the Cygwin Setup program 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 Cygwin Setup program downloads
the package list <literal>setup.ini</literal> from a mirror
and checks its digital signature.
The package list is in the files
<filename>setup.xz</filename>, <filename>setup.zst</filename>,
<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 Cygwin 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 the Cygwin Setup program's signature detection
(unless you use the <literal>-X</literal> option to disable signature checking).
The Cygwin 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 <filename>setup.xz/.zst/.bz2/.ini</filename> 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 Cygwin Setup program, 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 Cygwin Setup program itself.
Once the correct Setup program is running, it will counter other attacks
as described in
<xref linkend="faq.setup.install-security"></xref>.
</para>
</answer></qandaentry>

<qandaentry id="faq.setup.virus">
<question><para>Is the Cygwin Setup program, 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 the Cygwin Setup program.  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 the Cygwin Setup program.  The following procedure should be
a fairly safe way to do that:
</para>
<orderedlist><listitem><para>Download the Cygwin Setup program and scan it explicitly.
</para>
</listitem>
<listitem><para>Turn off the anti-virus software.
</para>
</listitem>
<listitem><para>Run the Cygwin Setup program to download and install or upgrade
all desired packages.
</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 the Cygwin Setup program is not substituted by
something malicious.
See also
<xref linkend="faq.setup.install-security"></xref>
for a description of how the
Cygwin project counters man-in-the-middle (MITM) attacks.
</para>

<para>See also <xref linkend="faq.using.bloda"></xref>
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 the Cygwin Setup program 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. The Cygwin Setup program is designed to make it easy to browse
categories and select what you want to install or omit from those
categories.
There are now more than 10000 Cygwin packages requiring more than 150GB
of disk space just to download and hundreds of GB more to install so you
are strongly advised not to attempt to
<ulink url="https://cygwin.com/install.html#everything">install everything</ulink>
at once, unless you have a lot of free disk space, a very high speed network
connection, and the system will not be required for any other purpose for
many hours (or days) until installation completes.
</para>
</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 many hundreds of 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 the Cygwin Setup program.
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>http%3a%2f...cygwin...%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
<filename>/var/log/setup.log.full</filename> and less verbose information about
prior actions is in <filename>/var/log/setup.log</filename>.
</para>

</answer></qandaentry>

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

<para>First, make sure that you are using the latest version of the Cygwin Setup program.
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.lst"/>.
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 the Cygwin Setup program 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 the Cygwin Setup program has otherwise behaved strangely, check the files
<filename>setup.log</filename> and <filename>setup.log.full</filename> in
<filename>/var/log</filename> (<filename>C:\cygwin\var\log</filename> 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
the Cygwin Setup program, 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 the Cygwin Setup program as you would to install packages.  In the
``Select packages to install'' dialog, choose ``Up To Date'' in the
<literal>View</literal> drop-down menu, and locate the package.  Choose the
``Uninstall'' action from the drop-down menu in the ``New'' column. 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 the Cygwin Setup program in the download directory.  However, if you
plan to reinstall Cygwin it's a good idea to keep your
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.testrels" xreflabel="Install Test Releases">
<question><para>How do I install Cygwin test releases?</para></question>
<answer>

<para>You can install Cygwin test releases just like test releases of
any other package using the Cygwin Setup program.  Ideally, you install
not only the <emphasis role='bold'>cygwin</emphasis> test package, but
also the <emphasis role='bold'>cygwin-debuginfo</emphasis> test package
with the same version number.  The cygwin-debuginfo package allows source
code debugging using gdb.  Install the
<emphasis role='bold'>cygwin-devel</emphasis> test package, if you also
want to test building against a new API.
</para>
<para>However, are you sure you want to do this?  Test releases are risky.
They have only been marginally tested most of the time.  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>The operative word in trying the test releases 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 most recent non-test
release of the Cygwin DLL, close all Cygwin processes, as usual, start the
Cygwin Setup program and choose the most recent non-test release of the
cygwin package, as well as the cygwin-debuginfo and cygwin-devel packages.
That's all there is to it.
</para>

</answer></qandaentry>

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

<para>NO. The Cygwin Setup program 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 <ulink url="https://cygwin.com/package-server.html.html">Cygwin Package Server page</ulink>.

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

