Beating cygwin setup into submission can be a challenge. I finally figured it out.
I have need to install cygwin on servers which have no internet connection. I have no computer with internet except my lowly workstation. It already has cygwin installed. I would like to be able to download the cygwin installer, tell it to download only(it does support this) and then copy that package directory to a non-connected machine and run the cygwin installer.
The catch is that when I run the cygwin installer on my workstation, it sees all the packages I have installed. I can select a package for re-download, but then it downloads only that package and not all of its dependencies. I want a way to fetch everything! I actually suffered through an openssh cygwin bundle once. Adding a dependant package when I found it, trying again and so on, until after about 5 rounds, I had functioning openssh. It was a horrible experience.
It turns out the cygwin setup program reads setup information from /etc/setup. The simple workaround is to rename /etc/setup(aka c:\cygwin\etc\setup) do your download only install, and then delete the /etc/setup and rename your original back in place.
So far it works very well. You can even keep around multiple setup directories for different cygwin bundles.
“I have need to install cygwin on servers which have no internet connection.”
What the fuck dude. Even Sophomore isn’t that much of a luddite.
The cygwin installer is one of the worst programs ever written.