cygcheck — List system information, check installed packages, or query package database


cygcheck [-v] [-h] PROGRAM

cygcheck -c [-d] [-n] [PACKAGE]

cygcheck -s [-r] [-v] [-h]

cygcheck -k

cygcheck -e [--requires] [--build-reqs] PATTERN...

cygcheck -i [--inst] [--curr] [--prev] [--test] [--deps] [--build-deps] PATTERN...

cygcheck -f FILE...

cygcheck -l [PACKAGE...]

cygcheck -p REGEXP

cygcheck --delete-orphaned-installation-keys

cygcheck -h | -V


At least one command option or a PROGRAM is required, as shown above.

  PROGRAM              list library (DLL) dependencies of PROGRAM
  -c, --check-setup    show installed version of PACKAGE and verify integrity
                       (or for all installed packages if none specified)
  -d, --dump-only      do not verify packages (with -c)
  -n, --names-only     just list package names (implies -c -d)
  -s, --sysinfo        produce diagnostic system information (implies -c -d)
  -r, --registry       also scan registry for Cygwin settings (with -s)
  -k, --keycheck       perform a keyboard check session (must be run from a
                       plain console only, not from a pty/rxvt/xterm)
  -e, --search-package list all available packages matching PATTERN
                       PATTERN is a glob pattern with * and ? as wildcard chars
      search selection specifiers (multiple allowed):
      --requires       list packages depending on packages matching PATTERN
      --build-reqs     list packages depending on packages matching PATTERN
                       when building these packages
                       only the most recent available releases are checked
                       to collect requirements info
  -i, --info-package   print full info on packages matching PATTERN, installed
                       and available releases
                       PATTERN is a glob pattern with * and ? as wildcard chars
      info selection specifiers (multiple allowed):
      --inst           only print info on installed package release
      --curr           only print info on most recent available release
      --prev           only print info on older, still available releases
      --test           only print info on test releases
      --deps           additionally print package dependencies
      --build-deps     additionally print package build dependencies
  -f, --find-package   find the package to which FILE belongs
  -l, --list-package   list contents of PACKAGE (or all packages if none given)
  -p, --package-query  search for REGEXP in the entire package
                       repository (requires internet connectivity)
                       Delete installation keys of old, now unused
                       installations from the registry.  Requires the right
                       to change the registry.
  -v, --verbose        produce more verbose output
  -h, --help           annotate output with explanatory comments when given
                       with another command, otherwise print this help
  -V, --version        print the version of cygcheck and exit

  -c, -f, and -l only report on packages that are currently installed.
  -i and -e report on available packages, too.  To search for files within
  uninstalled Cygwin packages, use -p.  The -p REGEXP matches package names,
  descriptions, and names of files/paths within all packages.


The cygcheck program is a diagnostic utility for dealing with Cygwin programs. If you are familiar with dpkg or rpm, cygcheck is similar in many ways. (The major difference is that setup handles installing and uninstalling packages; see the section called “Internet Setup” for more information.)

The -c option checks the version and status of installed Cygwin packages. If you specify one or more package names, cygcheck will limit its output to those packages, or with no arguments it lists all packages. A package will be marked Incomplete if files originally installed are no longer present. The best thing to do in that situation is reinstall the package with setup. To see which files are missing, use the -v option. If you do not need to know the status of each package and want cygcheck to run faster, add the -d option and cygcheck will only output the name and version for each package. Add the -n option to output only the names of packages.

If you list one or more programs on the command line, cygcheck will diagnose the runtime environment of that program or programs, providing the names of DLL files on which the program depends. If you specify the -s option, cygcheck will give general system information. If you list one or more programs on the command line and specify -s, cygcheck will report on both.

The -e option allows to seach for available packages in the Cygwin distribution. PATTERN is a glob pattern, using * and ? as wildcard characters, just as in filename patterns. PATTERN is searched for in the package name and the summary of a package. The --requires and --build-reqs options allow to search for packages which have a certain dependency, either at runtime or at build time.

The -i option prints a lot of information available for installed packages, as well as for available packages in the Cygwin distribution. PATTERN is a glob pattern, using * and ? as wildcard characters, just as in filename patterns. PATTERN is compared against the package name as well as against the combined package name and version. With additional info selectors, --inst, --curr, --prev, and --test, allow to specify that only information in terms of installed, current latest available, older available, as well as test packages respectively, is requested. The --deps and --build-deps options allow to print additional dependency information.

Example 3.3. Example cygcheck -e/-i usage

$ cygcheck -e grep
grep : search for regular expression matches in text files
grep-debuginfo : Debug info for grep
grepmail : search mailboxes for mail matching an expression
pdfgrep : Command-line utility for searching text in PDFs
pdfgrep-debuginfo : Debug info for pdfgrep
sgrep : Search indexed text regions like SGML,XML and HTML files

$ cygcheck -i --curr --deps grep
Latest available package:

Name        : grep
Version     : 3.8
Release     : 2
Architecture: x86_64
Size        : 401340 (392 K)
Source      : grep-3.8-2-src.tar.xz
Dependencies: bash, cygwin, libintl8, libpcre2_8_0
Summary     : search for regular expression matches in text files
Description :
GNU grep searches one or more input files for lines containing a
match to a specified pattern. By default, grep outputs the matching lines.
The GNU implementation includes several useful extensions over POSIX.

Note that -e and -i options fetch info from a distribution db file. This file will be downloading on demand and refreshed if it's older than 24 hours.

The -f option helps you to track down which package a file came from, and -l lists all files in a package. For example, to find out about /usr/bin/less and its package:

Example 3.4. Example cygcheck -f/-l usage

$ cygcheck -f /usr/bin/less

$ cygcheck -l less

The -h option prints additional helpful messages in the report, at the beginning of each section. It also adds table column headings. While this is useful information, it also adds some to the size of the report, so if you want a compact report or if you know what everything is already, just leave this out.

The -v option causes the output to be more verbose. What this means is that additional information will be reported which is usually not interesting, such as the internal version numbers of DLLs, additional information about recursive DLL usage, and if a file in one directory in the PATH also occurs in other directories on the PATH.

The -r option causes cygcheck to search your registry for information that is relevant to Cygwin programs. These registry entries are the ones that have "Cygwin" in the name. If you are paranoid about privacy, you may remove information from this report, but please keep in mind that doing so makes it harder to diagnose your problems.

In contrast to the other options that search the packages that are installed on your local system, the -p option can be used to search the entire official Cygwin package repository. It takes as argument a Perl-compatible regular expression which is used to match package names, package descriptions, and path/filenames of the contents of packages. This feature requires an active internet connection, since it must query the web site. In fact, it is equivalent to the search that is available on the Cygwin package listing page.

For example, perhaps you are getting an error because you are missing a certain DLL and you want to know which package includes that file:

Example 3.5. Searching all packages for a file

$ cygcheck -p 'cygintl-2\.dll'
Found 1 matches for 'cygintl-2\.dll'.

libintl2-0.12.1-3         GNU Internationalization runtime library

$ cygcheck -p 'libexpat.*\.a'
Found 2 matches for 'libexpat.*\.a'.

expat-1.95.7-1            XML parser library written in C
expat-1.95.8-1            XML parser library written in C

$ cygcheck -p '/ls\.exe'
Found 2 matches for '/ls\.exe'.

coreutils-5.2.1-5         GNU core utilities (includes fileutils, sh-utils and textutils)
coreutils-5.3.0-6         GNU core utilities (includes fileutils, sh-utils and textutils)

Note that this option takes a regular expression, not a glob or wildcard. This means that you need to use .* if you want something similar to the wildcard * commonly used in filename globbing. Similarly, to match the period character you should use \. since the . character in a regexp is a metacharacter that will match any character. Also be aware that the characters such as \ and * are shell metacharacters, so they must be either escaped or quoted, as in the example above.

The third example above illustrates that if you want to match a whole filename, you should include the / path seperator. In the given example this ensures that filenames that happen to end in ls.exe such as ncftpls.exe are not shown. Note that this use does not mean "look for packages with ls in the root directory," since the / can match anywhere in the path. It's just there to anchor the match so that it matches a full filename.

By default the matching is case-sensitive. To get a case insensitive match, begin your regexp with (?i) which is a PCRE-specific feature. For complete documentation on Perl-compatible regular expression syntax and options, read the perlre manpage, or one of many websites such as that document the Perl language.

The cygcheck program should be used to send information about your system for troubleshooting when requested. When asked to run this command save the output so that you can email it, for example:

$ cygcheck -s -v -r -h > cygcheck_output.txt

Each Cygwin DLL stores its path and installation key in the registry. This allows troubleshooting of problems which could be a result of having multiple concurrent Cygwin installations. However, if you're experimenting a lot with different Cygwin installation paths, your registry could accumulate a lot of old Cygwin installation entries for which the installation doesn't exist anymore. To get rid of these orphaned registry entries, use the cygcheck --delete-orphaned-installation-keys command.