Translate

Image of Operating System Concepts
Image of RHCE Red Hat Certified Engineer Linux Study Guide (Exam RH302) (Certification Press)
Image of Linux Kernel Development (3rd Edition)
Image of Beginning Google Maps API 3

List or Count Installed RPM Packages

If you are on a RPM-based Linux platform (such as Redhat, CentOS, Fedora, ArchLinux, Scientific Linux, etc.), here are two ways to determine the list of packages installed. Using yum: yum list installed Using rpm: rpm -qa You can also easily get a count of the installed packages by piping the output to wc: yum list installed | wc -l rpm -qa | wc -l

Set up local RPM Installation Repository

There are a number of ways of installing additional RPM packages from installation media. However, if your network is fast and you are installing the same packages on a number of systems, it sometimes is easier to set up a simple local package repository and use yum to install the packages from there. This post shows you how to do this. Copy the new packages, or even the contents of an entire distribution to a suitable subdirectory on a local webserver. For example, if you are using an Apache webserver on RHEL or Fedora, suitable locations would probably be /var/www/html/repos/rhel6/

Automatically Install SRPM Build Dependancies

An RPM spec file, among other things, enumerates a list of required packages under the BuildRequires tag. Every package listed must be installed on the build platform otherwise the build will fail. You can install the necessary BuildRequires packages either manually using yum or even rpm, but a easier way to do so is to use a utility called yum-builddep which is part of the familiar yum-utils package. $ sudo yum-builddep 389-ds-base-1.2.9.9-1.fc14.src.rpm If all goes well, all the dependency packages are automatically installed for you. Unfortunately yum-builddep does not know how to handle conditional BuildRequires and will sometimes incorrectly include

List packages in RPM Database using C

Here is one way of listing installed RPM packages. It works with all versions of CentOS 5, RHEL5 and up to Fedora 14. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <unistd.h> #include <rpm/rpmlib.h> #include <rpm/header.h> #include <rpm/rpmdb.h> int main(int argc, char *argv[]) { rpmdbMatchIterator mi; int type, count; char *name; rpmdb db; Header h; rpmReadConfigFiles( NULL, NULL ); if (rpmdbOpen( "", &db, O_RDONLY, 0644 ) != 0) { fprintf( stderr, "ERROR: Cannot open RPM databasen"); exit(1); } mi = rpmdbInitIterator(db, RPMDBI_PACKAGES, NULL, 0); while ((h = rpmdbNextIterator(mi))) { headerGetEntry(h, RPMTAG_NAME, &type, (void **) &name, &count); printf("%sn", name);

Programmatically Retrieve RPM Package Details

This post shows you how to access various types of information in the RPM database and RPM package files using C and Python.