The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

RPM2 - Perl bindings for the RPM Package Manager API

SYNOPSIS

  use RPM2;

  my $db = RPM2->open_rpm_db();

  my $i = $db->find_all_iter();
  print "The following packages are installed (aka, 'rpm -qa'):\n";
  while (my $pkg = $i->next) {
    print $pkg->as_nvre, "\n";
  }

  $i = $db->find_by_name_iter("kernel");
  print "The following kernels are installed (aka, 'rpm -q kernel'):\n";
  while (my $pkg = $i->next) {
    print $pkg->as_nvre, " ", int($pkg->size()/1024), "k\n";
  }

  $i = $db->find_by_provides_iter("kernel");
  print "The following packages provide 'kernel' (aka, 'rpm -q --whatprovides kernel'):\n";
  while (my $pkg = $i->next) {
    print $pkg->as_nvre, " ", int($pkg->size()/1024), "k\n";
  }

  print "The following packages are installed (aka, 'rpm -qa' once more):\n";
  foreach my $pkg ($db->find_by_file("/bin/sh")) {
    print $pkg->as_nvre, "\n";
  }

  my $pkg = RPM2->open_package("/tmp/XFree86-4.1.0-15.src.rpm");
  print "Package opened: ", $pkg->as_nvre(), ", is source: ", $pkg->is_source_package, "\n";

DESCRIPTION

The RPM2 module provides an object-oriented interface to querying both the installed RPM database as well as files on the filesystem.

CLASS METHODS

Pretty much all use of the class starts here. There are two main entrypoints into the package -- either through the database of installed rpms (aka the rpmdb) or through a file on the filesystem (such as kernel-2.4.9-31.src.rpm or kernel-2.4.9-31.i386.rpm

You can have multiple RPM databases open at once, as well as running multiple queries on each.

open_rpm_db(-path => "/path/to/db")

As it sounds, it opens the RPM database, and returns it as an object.

open_package("foo-1.1-14.noarch.rpm")

Opens a specific package (RPM or SRPM). Returns a Header object.

RPM DB object methods

find_all_iter()

Returns an iterator object that iterates over the entire database.

find_all()

Returns an list of all of the results of the find_all_iter() method.

find_by_file_iter($filename)

Returns an iterator that returns all packages that contain a given file.

find_by_file($filename)

Ditto, except it just returns the list

find_by_name_iter($package_name)

You get the idea. This one is for iterating by package name.

find_by_name($package_name)

Ditto, except it returns a list.

find_by_provides_iter($provides_string)

This one iterates over provides.

find_by_provides($provides_string)

Ditto, except it returns a list.

find_by_requires_iter($requires_string)

This one iterates over requires.

find_by_requires($requires_string)

Ditto, except it returns a list.

RPM Header object methods

stuff goes here

TODO

Package installation and removal.

Signature validation.

HISTORY

0.01 Initial release

AUTHOR

Chip Turner <cturner@redhat.com>

SEE ALSO

perl. The original RPM module.

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 396:

'=item' outside of any '=over'

Around line 404:

You forgot a '=back' before '=head1'

Around line 406:

'=item' outside of any '=over'

Around line 446:

You forgot a '=back' before '=head1'