rpmfind : the rpm2html client tool

  1. What is it ?
  2. How to use it
    1. Finding packages
    2. Installing packages
    3. Upgrading packages
    4. Search for latest
    5. Sticking to a given distribution
  3. Rpmfind configuration file
  4. Autoupgrading using rpmfind
  5. How does it work
  6. Download it
  7. Todo

Please upgrade to a recent version of rpmfind before sending bug report mails to the author, thank you.

Note: KAJIKI Yoshihiro maintain a Japanese version of this page

What is it ?

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 your machine, where to find them, and how much space it will take on your hard drive (so you can also estimate the download time), and can fetch the required files for you.

Rpmfind can also be used to query the RPM database for existing packages using a keyword or a regular expression.

It can also operate in a different "upgrade" mode intended to maintain machines up to date or to upgrade them to a new version of the distribution. Check the separate autoupgrade page for informations on this mode of operations.

How to use it:

Rpmfind can be used in various modes, here is a description of the standard ways of using it

Finding packages:

This mode is used to find packages related to a given topic defined by a keyword of a regex. The syntax is rpmfind --apropos regex and will query the full set of RPM indexed on rpmfind.net for package name and summary descriptions.

For example I have heard about a Borland like programming environment, let' learn about it:

$ rpmfind --apropos borland
1: ftp://rpmfind.net/linux/contrib/i386/rhide-1.3-1.i386.rpm
  rhide : Rhide is a very nice IDE exactly like Borland's
$

In that case the query found only one package, all the package containing the substring in their name or summary will be shown.

Installing packages:

This is the "default" mode of rpmfind where you know the name of the package you want to install and rpmfind will locate the "best" package accordingly to your installed distribution, and show also all the other packages needed to solve the dependancies needed.

For example let's install xbill game on the machine:

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

### To Transfer:
ftp://rpmfind.net/linux/redhat/redhat-5.0/i386/RedHat/RPMS/xbill-2.0-2.i386.rpm
Do you want to download these files to /tmp [Y/n/a] ? : y
saving to /tmp/xbill-2.0-2.i386.rpm
$

There is only one package needed to install the game and it has been saved in /tmp. Note that rpmfind can be run by any users, it doesn' requires root access. Installing the package, however require root privileges (do "rpm -i /tmp/xbill-2.0-2.i386.rpm").

Upgrading packages:

In the "default" mode, rpmfind doesn't try to replace existing packages, so a specific "upgrade" mode exists to check for replacement of older packages. It also walks down the dependency lists and also suggest upgrades for them:

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

### To Transfer:
ftp://rpmfind.net/linux/freshmeat/libpng/libpng-1.0.1-1.i386.rpm
ftp://rpmfind.net/linux/redhat/redhat-5.0/i386/RedHat/RPMS/ImageMagick-3.9.1-1.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/support/RPMS/giflib-3.0-2.i386.rpm
ftp://rpmfind.net/linux/contrib/hurricane/i386/giflib-3.0-4.i386.rpm
ftp://rpmfind.net/linux/redhat/redhat-5.0/i386/RedHat/RPMS/libgr-progs-2.0.13-4.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/devel/1998052417/RPMS/imlib-1.4-1998052414.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/devel/1998052417/RPMS/glib-1.1.0-1998052414.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/devel/1998052417/RPMS/gtk+-1.1.0-1998052414.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/devel/1998052417/RPMS/gnome-libs-0.13-1998052414.i386.rpm
ftp://rpmfind.net/linux/redhat-labs/gnome/devel/1998052417/RPMS/balsa-0.2.0-1998052416.i386.rpm
Do you want to download these files to /tmp [Y/n/a] ? : n
$

The -q flag is used to reduce the verbosity of rpmfind.

Search for latest:

The last rpmfind mode is "latest" performing the search to the most up-to-date package, in that case rpmfind will not give higher priority to package from the installed distribution or vendor, but will bring back the most recent packages:

$ rpmfind -$ rpmfind -q --latest knews
Installing knews will require 668 KBytes

### To Transfer:
ftp://rpmfind.net/linux/redhat/redhat-5.0/i386/RedHat/RPMS/libpng-0.96-1.i386.rpm
ftp://rpmfind.net/linux/contrib/hurricane/i386/knews-1.0b.0-1.i386.rpm
Do you want to download these files to /tmp [Y/n/a] ? : y
Download libpng-0.96-1.i386.rpm [Y/n/a] ? :y
transfering ftp://rpmfind.net/linux/redhat/redhat-5.0/i386/RedHat/RPMS/libpng-0.96-1.i386.rpm
saving to /tmp/libpng-0.96-1.i386.rpm
Download knews-1.0b.0-1.i386.rpm [Y/n/a] ? :y
transfering ftp://rpmfind.net/linux/contrib/hurricane/i386/knews-1.0b.0-1.i386.rpm
saving to /tmp/knews-1.0b.0-1.i386.rpm
$

This option is somewhat more dangerous since it may introduce significant changes from the "standard distribution" you have installed and this may cause problems when upgrading your base system when the new release is issued.

Sticking to a given distribution

The simplest way to instruct rpmfind to fetch packages from a given distribution is to add the --dist option to the command line like in the following:

$ rpmfind --dist redhat gpg

it is also possible to use the no_distrib flag in the [packages] section:

[packages]

no_distrib=rawhide

Rpmfind configuration file

Rpmfind creates and maintains a per-user configuration file, saved in $HOME/.rpmfind .

Here is some of the options, their meaning and default values:

version

this is maintained by rpmfind and is used for detection of upgrades

server

which RDF server to contact, currently rufus is the main one bu new mirrors are being maintained

prefix

prefix where the RPM local database is to be found, this can be /usr/local if RPM is not the native packaging format of your system

downloadDir

where to save the packages loaded from the net, /tmp is the default value.

httpProxy

URI to the HTTP proxy if your are using one

ftpProxy

URI to the FTP proxy if you are using one

verbose

setup the verbosity level, 1 is the default, 0 is quiet, >1 is annoying :-)

mode

default mode for queries, default to "lookup", one can also select "upgrade" or "latest" if you like living on the bleeding edge. This is overridable via the command line

The full list of options is listed in the config file itself, and a specific comment related to it's use is provided there.

Autoupgrading using rpmfind

I suggest using the latest versions (at least anything >= 1.5)

  1. select sources for your autoupgrades, these must be ftp or file URL
  2. edit your .rpmfind to add one autoupgradeURL entry per source, like:

    autoupgradeURL=ftp://rpmfind.net/linux/redhat/updates/6.2/i386

    autoupgradeURL=ftp://myserver.org/pub/rpm-updates/i386/

  3. run rpmfind --autoupgrade
  4. If this look satisfactory add it to your root crontab

In the later case, it's a good idea to switch the paranoid option on in the configuration file, configure gpg on your system, and add your distribution trusted key to the root gpg keyring (gpg --import with the distro key one one can find at the top of a CD-Rom is a good way to do it).

How does it work ?

Rpm2html exports the information about the packages available in RDF schema on rpmfind.net. Thus, a simple descriptions of all the RPM packages and associated resources available are exported in small files.

When rpmfind is asked for a resource it first asks the local RPM base if it's available. If it's not, it will request the associated RDF file on rufus. The content is parsed to find descriptions of the various packages providing the resources (distribution, vendor, version, date, etc...). Based on that, rpmfind sorts the various packages for suitability. Then it picks the first one and fetches more complete information like the dependencies required by these packages. Based on that, it then verifies that all dependencies needed by this package are available, and recursively verifies that all these resources are available (if needed) by fetching more packages from the net.

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

If rpmfind noticed that one of the package needs 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 a highly recursive process).

Download it

The place to look for latest version is ftp://rpmfind.net/pub/rpmfind it is also part of RedHat like distributions.

Todo

A lot of things:

Want to try rpmfind now ? Fetch it !

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

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

Daniel Veillard

$Id: rpmfind.html,v 1.11 2001/08/11 10:27:24 veillard Exp $