[ITP] cygcheck-leaves - a script to list installed packages not required by any

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Oct 18 08:07:00 GMT 2013

Hi Mikhail,

On Oct  5 23:03, Mikhail wrote:
> As soon as setup.exe hasn't got an option to uninstall a package along with its requirements which have become unused after uninstalling that package, and cygcheck utility also does not provide any information on package dependencies I have written a bash script to list installed Cygwin packages which are not required by any other installed packages (that is package leaves in the dependency tree).
> Developers usually have many lib*-devel packages installed on their system, these packages and others are required only as build dependencies so I think this script will be useful primarily for ordinary users who experiment with software and want to keep their Cygwin installation clean. They will be able to check the list of installed packages for unneeded ones.
> I would like to propose this script as a Cygwin package if you appreciate it. The name of the script can be changed according to Cygwin policy on the use of cyg- prefix for such a type of programs.
> setup.hint:
> category: Utils
> requires: bash coreutils sed wget bzip2
> sdesc: "List installed Cygwin packages which are not required by any other installed packages"

I like the idea, but your script doesn't work as expected:

$ ./cygcheck-leaves -v
--2013-10-18 09:54:19--  ftp://sourceware.org/pub/cygwin/x86_64-cygwin/setup.bz2
           => `/var/cache/cygcheck-leaves/x86_64-cygwin/.listing'
Resolving sourceware.org...
Connecting to sourceware.org||:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD (1) /pub/cygwin/x86_64-cygwin ...
No such directory `pub/cygwin/x86_64-cygwin'.

That should be x86_64, not x86_64-cygwin.  The reason is that HOSTTYPE
has been already set by tcsh, and tcsh has another idea of that
variable than bash.

There's also the problem that, even under bash, the HOSTTYPE for 32 bit
is i686, but the directory on sourceware is called x86.

I guess what you want is something along the lines of

  targetdir=$(uname -m)
  [ "${targetdir}" = "i686" ] && machine='x86'


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin-apps/attachments/20131018/2f975f7f/attachment.sig>

More information about the Cygwin-apps mailing list