RPM Package Manager

From Christoph's Personal Wiki
Revision as of 02:37, 14 April 2008 by Christoph (Talk | contribs) (Usage)

Jump to: navigation, search

RPM Package Manager (originally Red Hat Package Manager, abbreviated RPM) is a package management system.

Usage

NOTE: RPM file names normally have the following format:

<name>-<version>-<release>.<arch>.rpm

Examples

rpm -qa |grep glibc  # returns 'glibc-version', if installed
rpm -q --whatprovides /lib/libc.so.6  # returns 'glibc-version'
rpm -q --whatrequires python # returns the following
  lib64xml2-python-2.6.27-3mdv2007.1
  tkinter-2.5-4mdv2007.1
  python-imaging-1.1.4-11mdv2007.1
  python-numpy-1.0.1-2mdv2007.1
  python-numeric-24.2-4mdv2007.1
  lib64python2.5-devel-2.5-4.1mdv2007.1
  lib64python2.5-devel-2.5-4.1mdv2007.1
  • List the absolute paths of all files installed from a given package:
rpm -ql package_name

You can alter the output from a query using "querytags". To find out which querytags are available, execute the following command:

rpm --querytags

You can then display selected information on that package(s) in question. For an example, if you only wish to display the names of all packages having "auto" in them (i.e., not version, release, arch, etc.), execute the following command

rpm -qa --qf '%{NAME}\n'|grep auto

This is useful if you want to compare installed packages on two machines with different versions (and/or architectures).

Source code may also be distributed in RPM packages. Such package labels do not have an architecture part and replace it with "src". E.g.:

libgnomeuimm2.0-2.0.0-3.src.rpm

An SRPM is an RPM package with source code. Unlike a tarball (or an RPM), an SRPM package can be automatically compiled and installed, following instructions in the .spec file included in the SRPM.

Recompile with -fPIC

see: HOWTO fix -fPIC errors for some background.

Some 64-bit packages require the source to be compiled with the -fPIC option. For this example, I will be using LAPACK (64-bit version).

  • Step #1: Download the source rpm (e.g., lapack.src.rpm)
  • Step #2: Install/unpack the package
rpm -i lapack.src.rpm
  • Step #3: Add the -fPIC flag to the .SPEC file
vi /usr/src/rpm/SPECS/lapack.spec
   %define optflags ... -fPIC -DPIC ...
  • Step #4: Check that the option was compiled into the libary:
nm /usr/lib64/liblapack.a|more

That should take care of errors that look something like this:

/usr/lib64/liblapack.a: relocation R_X86_64_32 against `a local symbol' can not 
be used when making a shared object; recompile with -fPIC

See also

External links