pmcyg is a tool for creating a customized offline installer for Cygwin(TM), the Unix-like environment for Windows. This can be used to create a complete Cygwin installation system on a cdrom, dvd, or USB flash disk. pmcyg can be used on a wide variety of operating systems (e.g. Linux, MacOS, FreeBSD, Windows), allowing one to build the installation media without needing a Windows system with internet access.
pmcyg will assemble a collection of Cygwin packages based on a user-supplied list of Cygwin package names, and download only those packages and their dependencies from a Cygwin mirror site, to create a partial mirror of the Cygwin release. This avoids having to download many GB of the official Cygwin release, e.g. using wget. With pmcyg you can easily create a minimalistic installer that can be as small as 25MB.
To use pmcyg, you will need a recent version of Python installed. This is available on most GNU/Linux distributions, as part of Cygwin itself, or as a native Windows application. pmcyg has been developed using Python 2.x, and tested on Python versions 2.3-2.7. pmcyg is able to operate with the latest 3.x series of Python (after translation by the 2to3 tool).
To use pmcyg's graphical user interface, you will also need the 'Tkinter' toolkit typically available in the 'python-tk' or 'python-tkinter' packages of Linux or cygwin installations. The standard Windows installer for Python automatically installs the Tkinter toolkit by default.
To build your off-line Cygwin installer, pmcyg will help you through the following steps:
After that, you can use a standard CD or DVD-burning application to create an off-line installer, optionally with autorun capability. You can even use pmcyg to download directly onto a USB key.
You can simply mirror the entire set of Cygwin packages, which will occupy about 4GB, or you can list particular packages that you want to have available. This package list can be based on a template which pmcyg will generate, or might be as simple as:
# Base packages bash cygwin-doc # Development packages cppunit [arch=x86,x86_64] gcc-g++ mercurial ocaml [arch=x86] # Editors ed emacs-X11 nedit vim # X11 Window system xcalc [arch=x86_64] xorg-server xterm
If you want to create a copy of all the packages installed on an existing Cygwin system, then you could generate the package list by using cygcheck:
cygcheck -cd | tail -n +3 | cut -f 1 -d " " > mypackages.txt
For the most complete Cygwin distribution, pmcyg can also optionally include Cygwin source packages (taking about 20GB if you mirror the entire Cygwin tree).
When used with its graphical user interface, pmcyg will automatically try to find the latest official list of Cygwin mirrors sites, and present a sorted selection based on geographical region.
pmcyg will check the versions of packages in your local directory, and update those packages with newer versions if available from your selected download site. This allows you to maintain a current version of all your favourite Cygwin packages and the 'setup.exe' installer, which you could keep on a USB memory stick, ready for use as an offline installer on any PC without direct internet access.
The author would welcome any constructive feedback on pmcyg. This can be sent to rwpenney«AT»users«DOT»sourceforge«DOT»net .
Last updated 30 December 2013
© Copyright RW Penney, 2010-2013