whohas 0.13

Description

whohas is a command line tool that allows querying several package lists at once - currently supported are Arch, Debian, Fedora, Gentoo, Slackware, Source Mage, FreeBSD, NetBSD and OpenBSD. whohas is written in Perl and was designed to help package maintainers find ebuilds, pkgbuilds and similar package definitions from other distributions to learn from. However, it can also be used by normal users who want to know:

  • Which distribution provides packages on which the user depends.
  • What version of a given package is in use in each distribution, or in each release of a distribution (implemented only for Debian).

Tutorial

It is suggested you use Unix command line tools to enhance your search results. whohas is optimised for fast execution. This is done by threading, and the order of results cannot be guaranteed. To nonetheless get a standardised output, alphabetically sorted by distribution, use the sort tool:

whohas gimp | sort

You can use grep to improve your search results. Depending on whether you want only packages whose names begin with your search term, end with your search term, or exactly match, you would use a space before, after or on both sides of your search term, respectively:

whohas gimp | sort | grep " gimp"

whohas vim | sort | grep "vim "

whohas gimp | sort | grep " gimp "

The spaces will ensure that only results for the package gimp are displayed, not for gimp-print etc.

If you want results for a particular distribution only, do

whohas arch | grep "^Arch"

Output for each module will still be ordered, so you don't need to sort results in this case, although you may wish to do so for some distributions. Distribution names are abbreviated as "Arch", "Debian", "Fedora", "Gentoo", "Slackware", "SMGL" (Source Mage Linux) and FreeBSD, NetBSD and OpenBSD.

Output in version 0.1 looked like this. The first column is the name of the distribution, the second the name of the package, the third the version number, then the date, repository name and a url linking to more information about the package. Future versions will have package size information, too. Column lengths are fixed, so you can use cut:

whohas vim | grep " vim " | cut -b 36-45

The first bytes of the data fields at the time of writing are 11, 37, 48, 53, 64 and 76.

Here is an example of whohas 0.1 in a terminal session, showing how it works with grep and cut.

Features and limitations

Debian refers to the binary distribution. Slackware queries Current only. Binary sizes for Fedora are package sizes - space needed on disk will be greater by about factor 2. Binary sizes for Debian are unpacked sizes. All details (including availability, version numbers and binary sizes) are for the x86 architecture.

Debian version numbers in rare cases may not be for x86 (will be fixed). Gentoo version availability may not be for x86 (will be fixed). I recommend you consult the URLs provided in the output, which give detailed and accurate information about each package. You may want to use a terminal that recognises hyperlinks and allows easy access through the browser, such as gnome-terminal.

For Fedora, only release 4 is enabled by default, and only the most up to date package will be listed if different versions are available.

Appeal

I would like to encourage distributors at this time to provide web query interfaces to package lists, and specifically provide the following information: package name, version, date, size and a url to further information (maintainer, build information etc.)

Changelog

Link

Dependencies

  • wget
  • date utility
  • Perl
  • LWP::UserAgent (usually packaged as perl-libwww or libwww-perl)

Currently, the local repositories created in the user's home directory take up 900K.

Download

whohas-0.13.tar.gz

whohas-0.12.tar.gz

whohas-0.11.tar.gz

whohas-0.1.tar.gz

Bug reports

phi1ipp@yahoo.com

Roadmap

0.15: Fix Fink module, fix Fedora sizes, e.g. HelixPlayer, make Debian and Gentoo i386-specific, give Debian on-disk sizes, reliable Debian version numbers for i386, give Gentoo package status in repo column, put each subroutine in a separate .pm in ~/.whohas/plugins/, then "ls" for the plugins and load them that way, find the first subroutine in each plugin and launch it as a thread.
0.16: Disambiguate release, repository and package group, e.g. are they separately specified in package installer config files; but: in Debian, you can mix releases!!
0.17: full architectures support (i.e. query by arch), query by distro, query by distro and repo
0.20 Fedora yum.conf and Debian sources.list plug-in architecture

not yet assigned to any specific release:

  • source pkgs for Debian and Fedora - always in sync with binary? urls available? Gentoo ports vs. ebuilds?
  • give a url switch for brevity, consider including extra fields
  • make Fedora module use search_by_name
  • put Fedora module back on libwww-perl access by rewriting bits of &fedora_write and &fedora_analyse; consider curl to replace wget - speed gain?

Acknowledgements

Thanks to Andrew "ruskie" Levstik for suggesting the Source Mage module and providing a small package list file on their server for whohas to parse.

Thanks to Ladislav Bodnar of Distrowatch for advice on version checking, and his list of seminal Linux packages and stable version numbers.

History

whohas started life as whichdistro.pl, but its author preferred the shorter, hopefully more memorable name which is more conducive to word play.

 

 

updated 8 August 2005

 

 

 

Clicky Web Analytics