RPM Package Manager

From Christoph's Personal Wiki
Revision as of 02:04, 23 August 2007 by Christoph (Talk | contribs)

Jump to: navigation, search

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

Usage

Example

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

RPM file names normally have the following format:

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

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