rpmfind : the rpm2html client tool

What's that ?

Basically rpmfind is a program that will find RPM files on rufus for you.

For example rpmfind gimp will tell you what packages are needed to install Gimp on you machine, where to find them and how much space it will take on your hard drive (so you can also estimate the download time).

How does it work ?

Rpm2html export the information about the packages available in RDF schema. Thus a simple description of all the RPM packages and associated resources available are exported in small files.

When rpmfind is asked for a resource it first ask the local RPM base if it's available, if not it will request the associated RDF file on rufus. The content is parsed describing the various packages providing this resources (distribution, vendor, version, date, etc...) based on that rpmfind sort the various packages for suitability. Then it pick the first one and fetch more complete informations like the dependancies required by this packages. Based on that it then verify that all dependencies needed by this package are available, and recusively verify that all these resources are available if needed by fetching more packages from the net.

At the end rpmfind show the list of packages to fetch and their total size on disk.

If rpmfind noticed taht one of the package need a resource which is not available, or an upgrade of the libc, it will discard the package and take the second in the list, etc (this is an highly recursive process).

Note: rpmfind doen't actually transfer the files needed, nor does it try to install them. This could be an extension but at least the installation stage should be done by the actuall rpm installer, not rpmfind !

Example

Ok the mechanism look confusing, what about it's use ...

Let say I want gimp on my system:

$ ./rpmfind -q gimp
Arch : i586, Os : Linux
Default distribution : Red Hat Software(Hurricane)
        owning 249 of 338 installed packages
Resource gimp already installed
$

Ok, that's a bad example it's already installed... Note that rpmfind found my system type and my distribution.

Let's get xbill:

$ rpmfind xbill
Arch : i586, Os : Linux
Default distribution : Red Hat Software(Hurricane)
        owning 249 of 338 installed packages
Get http://rufus.w3.org//linux/RDF/resources/xbill.rdf
Get http://rufus.w3.org//linux/RDF/redhat/5.0/i386/xbill-2.0-2.i386.rdf
Installing xbill will requires 183 KBytes

### To Transfer:
ftp://rufus.w3.org/linux/redhat/redhat-5.0/i386/RedHat/RPMS/xbill-2.0-2.i386.rpm
$

Ok it seems to work, note that it suggested to fetch the version proposed in my standard distribution.

Let's try with a more complex example, balsa is a mail reader based on the GTK toolkit, it has a large amount of dependancies. To save some electrons, I use the "-q" to have a quiet run. It's also possible to get more verbose output by adding "-v" flags:

$ ./rpmfind -q balsa
[search for approx 30 seconds ... 28.8 Kbps PPP connection]
Installing balsa will requires 9574 KBytes

### To Transfer:
ftp://rufus.w3.org/linux/freshmeat/libpng/libpng-1.0.1-1.i386.rpm
ftp://rufus.w3.org/linux/redhat/redhat-5.0/i386/RedHat/RPMS/ImageMagick-3.9.1-1.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/support/RPMS/giflib-3.0-2.i386.rpm
ftp://rufus.w3.org/linux/contrib/hurricane/i386/giflib-3.0-4.i386.rpm
ftp://rufus.w3.org/linux/redhat/redhat-5.0/i386/RedHat/RPMS/libgr-progs-2.0.13-4.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/devel/1998052417/RPMS/imlib-1.4-1998052414.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/devel/1998052417/RPMS/glib-1.1.0-1998052414.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/devel/1998052417/RPMS/gtk+-1.1.0-1998052414.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/devel/1998052417/RPMS/gnome-libs-0.13-1998052414.i386.rpm
ftp://rufus.w3.org/linux/redhat-labs/gnome/devel/1998052417/RPMS/balsa-0.2.0-1998052416.i386.rpm
$

Convinced ? Fetch it it is currently packaged with rpm2html since most of the code base is identical ...

Todo

A lot of things:

Options

SYNOPSIS

rpmfind [-q][-v[-v]][-s server][-p prefix] resource(s)...

DESCRIPTION

Rpmfind locate RPM files available on the net and needed to install a program:

OPTIONS

-v

Increase verbosity

-q

Decrease verbosity

-s URL

Give the URL of another RDF server instead of rufus.w3.org

-p path

If your RPM database is non native and is stored under /usr/local instead of /usr and /var ...

CONFIGURATION

None yet.

OPERANDS

The following operands are supported: List of resources names

EXIT STATUS

The following exit values are returned: 0

Successful completion. >0 An error occurred.

CAVEATS AND BUGS

Doesn't allow upgrade of installed packages, is provided as a proof of concept rather than a fully supported program (ask your vendor !).

SEE ALSO

rpm2html rpm

AUTHORS

Daniel Veillard.

[ Home | News | Try it ! | Docs | Help | Mirrors | Download ]

[ Rpmfind | | FAQ | History | License | Archive | Feedback | Links ]

Daniel Veillard

$Id: rpmfind.html,v 1.1 1998/05/26 01:42:35 veillard Exp $