A good answer has already been written on Stack Overflow. Here my comments for Super User.
get setup-x86 32 bits, or setup-x86_64 for a 64 bits XP.
(see this link to determine if you run XP 32 or 64.)
either make a shortcut
setup-x86.exe -X /
setup-x86_64.exe -X, note the "-X", or make a
.bat. Run the setup program. The
-X to prevent signature checks.
the mirrors shown do not work, you have to add one. Enter
in the URL cell, then click "Add". It should be selected. And should be automatically selected the next time you run the setup.
Despite the comments, I had no problem connecting to this mirror. It was slow, though! Maybe try another time if it fails.
== Edit April 2019
The "good answer" has indeed been deleted from SO (because Off-topic), you'll find a copy paste of the answer from @HiTechHiTouch hereunder
- Download setup version 2.874 directly from the Cygwin Time Machine.
Edit: The Cygwin Time Machine has moved! Please go here to read about it:
I'm updating this comment with new links:
32-bit (x86): ftp://www.fruitbat.org/pub/cygwin/setup/snapshots/setup-x86-2.874.exe
32-bit (x86): http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/setup/snapshots/setup-x86-2.874.exe
64-bit (x86_64): ftp://www.fruitbat.org/pub/cygwin/setup/snapshots/setup-x86_64-2.874.exe
64-bit (x86_64): http://ctm.crouchingtigerhiddenfruitbat.org/pub/cygwin/setup/snapshots/setup-x86_64-2.874.exe
Create a shortcut with the -X parameter to disable signature checking. (This is because the fruitbat mirror doesn't save the signature files used for the check.) This is required! Without -X, setup will quietly switch to another mirror!
- Right click the .exe and select "Copy".
- Right click on the desktop or in a directory and select "paste as short cut".
- Right click the shortcut you just created and select properties.
- Select the "Shortcut" tab
- Add -X to the end of the target field. That's a space to separate the parameter from the program name, a dash, and a CAPITAL X.
- Click OK to save the change.
Third, execute (double click) the shortcut and go through the drill as documented on the cygwin site. Better yet, refer to https://www.physionet.org/physiotools/cygwin/ which has very nice pictures.
When you reach Choose a Download Site , enter a URL from below in the User URL field and click ADD. Don't click NEXT yet, or your entry may be superseded!
Scroll through the list of Avaiable Download Sites and make sure that www.fruitbat.org is the only one highlighted . The full URL you entered won't be displayed, you have to take it on faith that the correct mirror date will be remembered and used. Finally, you can click Next.
Whenever you want to do maintenance, always use this shortcut.
I suggest you always use setup in two passes; "download but do not install", then "install from saved". This can lessen the risk of installing new package versions automatically added to your install list.
Prepare for bad things by saving a copy of cygwin1.dll (found in /cygwin/bin, a sub-directory of your install directory.) Do this using windows, and store it outside C:\cygwin.
You can use setup to connect to a more recent archive than Fruitbat, but be careful!
First thing to do when the package list is displayed: click on the global "keep" radio button so that nothing gets automatically upgraded. Also look for more than one version of a package to be displayed as you click through the version number to be installed.
Second, after you've made your selections, always click on the VIEW button to reach the "pending" view. Verify what will happen should you continue.
Third, watch for a pop-up after you start installing that lists required packages which you did not select, and offers to automatically add them to the install list.
Go back and select them manually. After you have everything needed in the list, reject any automatic add offer. The offer would probably includes things like a new cygwin or bash, which will not only break you cygwin system, but will also break setup.
Cygwin Mirrors are out to get you
Mirrors other than Fruitbat are constantly being upgraded, and do not preserve the older setup.ini files. At best, only the most previous version of an upgraded package is preserved. Obviously, if you are trying to keep a down-level cygwin system, this upgrade policy makes for a hostile environment.
Setup caches downloaded archive data in a local directory, identified in /cygwin/etc/setup/setup.rc. The very first time you run setup, it prompts for this directory name, and then never again lets you change it. Each mirror archive is a sub-directory in this local directory.
Setup always seems to download a few basic packages like cygwin from any new mirror it connects to, which risks these new versions being automatically added to the install list.
I suggest that you swap archives between a holding area and the local directory. Let setup see an archive other than Fruitbat only when you need an up-level package from the newer archive. If the newer archive isn't in the local directory, setup won't see the upgrades that will damage you system.
Recovering from an unexpected/unintended automagic upgrade.
You saved a copy of cygwin1.dll in step 4, right? If not, start rebuilding from scratch... ::frown:: ::sorry::
A possible "early warning" is if setup tells you that a newer file than 2.874 is available. This means it's looking at a mirror that contains an upgraded cygwin package which can break things.
You will realize things are going south as setup completes the install process with warnings and probably several pop-up about missing entry points in Windows proper, like kernel.dll. This is because setup have replaced your cygwin1.dll with a newer version. Just keep clicking OK and Continue until setup finishes.
After the dust settles, restore a copy of cygwin1.dll and re-run the shortcut you built in step 2. Limp though to get the cygwin and bash (and possibly dash) packages downgraded to ones that work. This is the minimum to get setup working again.
You may have to detach archives (mirrors), like the one that included the upgraded cygwin from setup's memory. Setup.ini comes with the archive, so after you get up-level mirrors out of the local (cache) directory, messages about setup.ini should cease.
You will be back to using the 2.874 file from the fruitbat archive when Fruitbat is the only archive in your local directory.
End of pasted answer