RPM Package Manager
From Christoph's Personal Wiki
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
- Red Hat RPM Guide from the Fedora project.
- Fox, Pennington, Red Hat (2003): Fedora Project Developer's Guide: Chapter 4. Building RPM Packages
- RPM Package Manager homepage
- The story of RPM by Matt Frye in Red Hat Magazine
- RPM Building as a User
- Bailey, Edward C. (2000): Maximum RPM, an outdated but popular rpm reference
- Bailey, Edward C. (2000): Maximum RPM, actualized Maximum RPM edition
- SUSE Package Conventions
- Package File Format - Linux Standards Base
- RPM -- plans, goals, etc. - Fedora announcement about RPM.
- RPM.org's wiki
- wikipedia:RPM Package Manager