Introduction to RedHat Package Manager (RPM)
A RedHat Package Manager (RPM) package is a container of files. A typical RedHat Package Manager (RPM) package includes the group of files associated with a specific program or application, which normally includes binary installation scripts as well as configuration and documentation files. It also includes instructions on how and where these files should be installed and uninstalled.
A proper RedHat Package Manager (RPM) file should follow a specific naming convention:
<packagename>-<version>-<release>.<arch>.rpm
Example: The AVG 8.5 antivirus package for Linux (avg85flx-r287-a2632.i386.rpm) Version, shows the version number and i386 indicates that this package is for intel 32bit processor architecture.
System Architectures used in RPM naming convention
Architecture |
Description |
noarch |
Architecture-independent, can run on any architecture |
i386 |
Generic build for a 32-bit x86 system |
i586 |
Processors like |
i686 |
Intel® Pentium® II, Intel Pentium III, Intel Pentium 4, AMD® Athlon, and |
x86_64 |
64-bit processors such as AMD Athlon64, AMD Opteron, Phenom and Intel EM64T (Core 2 Duo, Core 2 Quad) |
ia64 |
Intel® Itanium™ |
ppc |
32-bit IBM® POWER, IBM eServer™ pSeries®, and IBM eServer iSeries |
s390x |
64-bit IBM eServer System z |
How to query RedHat Package Manager (RPM) Database
RedHat Package Manager (RPM) queries can be used to query the RPM database about RPM files. Following are some common rpm query commands
• rpm -qa shows all installed packages
• rpm -qa | wc -l shows the number pf packages
Example:
[root@RHEL2 ~]# rpm -qa | wc -l
706
• rpm -qa | grep -i avgd - shows the information of the avgd package (case insensitive)
[root@RHEL2 ~]# rpm -qa | grep avg
avg85flx-r287-a2632
• rpm -qi avg85flx-r287-a2632 - shows the information about the avg85flx-r287-a2632 package
Example:
[root@RHEL2 ~]# rpm -qi avg85flx-r287-a2632
Name : avg85flx Relocations: (not relocatable)
Version : r287 Vendor: (none)
Release : a2632 Build Date: Thu 23 Apr 2009 04:27:18 PM IST
Install Date: Sun 05 Jul 2009 05:41:45 AM IST Build Host: michalh-desktop
Group : Applications/System Source RPM: avg85flx-r287-a2632.src.rpm
Size : 136512050 License: (c) 2009, AVG Technologies, s.r.o.
Signature : (none)
URL : http://www.avg.com/linux
Summary : AVG Anti-Virus for Linux
Description :
This package contains the binary release of AVG Anti-Virus for x86 Linux.
• rpm –qf – If the file is associated with an RPM package installed, the name of the package and the version installed is displayed.
Example: The package membership of the specified file (/opt/avg/avg8/bin/avgd, AVG antivirus)
[root@RHEL2 ~]# rpm -qf /opt/avg/avg8/bin/avgd
avg85flx-r287-a2632
• rpm –qpi – query a package for information
Example:
[root@RHEL2 Server]# rpm -qpi /media/'RHEL_5\ i386\ DVD'/Server/bind-9.3.3-7.el5.i386.rpm
warning: /media/RHEL_5 i386 DVD/Server/bind-9.3.3-7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Name : bind Relocations: (not relocatable)
Version : 9.3.3 Vendor: Red Hat, Inc.
Release : 7.el5 Build Date: Wed 17 Jan 2007 03:31:13 AM IST
Install Date: (not installed) Build Host: ls20-bc1-13.build.redhat.com
Group : System Environment/Daemons Source RPM: bind-9.3.3-7.el5.src.rpm
Size : 2189509 License: BSD-like
Signature : DSA/SHA1, Wed 17 Jan 2007 10:26:52 PM IST, Key ID 5326810137017186
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
URL : http://www.isc.org/products/BIND/
Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server.
Description :
BIND (Berkeley Internet Name Domain) is an implementation of the DNS
(Domain Name System) protocols. BIND includes a DNS server (named),
which resolves host names to IP addresses; a resolver library
(routines for applications to use when interfacing with DNS); and
tools for verifying that the DNS server is operating properly.
• rpm –ql – queries the contents of the package
Example:
[root@RHEL2 bin]# rpm -ql avg85flx-r287-a2632
• rpm -qc – queries the configuration file
• rpm –qd – queries the documentation files
How to install Packages in a Linux computer using rpm command
There are three basic commands that can be used to install an RPM. They won't work if there are dependencies (packages that need to be installed first). You may use the --force option to make rpm ignore dependencies, but that may cause other problems or the installed application will not work properly.
• To install (the package will be installed if it isn't already installed) an RPM package use
# rpm -i packagename
• To Update (upgrades any existing package or installs it if an earlier version isn't already installed) an RPM package use
# rpm -U packagename
• To freshen (Freshen option upgrades only existing packages. It does not install a package if it wasn't previously installed) an RPM package
# rpm -F packagename
The -v and -h options can be added to get more detailed output of the command. -v denotes the verbose mode and -h shows the progress of package installation.
Example:
# rpm -ivh packagename
How to verify an installed package using rpm command
Verifying an installed package compares information about that package with information from the RPM database on your system. The --verify (or -V) switch checks the size, MD5 checksum, permissions, type, owner, and group of each file in the package. Here are a few examples:
• rpm –Va – Verifies all packages and display an output if there is a problem
• rpm –Vf – Verifies a file and display an information if there is a problem.
Example:
[root@RHEL2 Server]# rpm -Vf /etc/login.defs
S.5....T c /etc/login.defs
RedHat Package Manager (RPM) Failure codes and meaning
Failure Code |
Meaning |
5 |
MD5 checksum |
S |
File size |
L |
Symbolic link (Path Mismatch) |
T |
File modification time |
D |
Device mismatch |
U |
User ownership differs |
G |
Group ownership differs |
M |
Mode differs (includes permissions and file type) |
How to remove an installed package using rpm command
To remove an installed package, run the following rpm command:
rpm -e <packagename>
The removal command will fail, if there is any dependency is there.
If the package that depends on the package you are trying to remove is still needed on the system, you should not try to remove the package. If the package that depends on the package you are trying to remove is also not needed, both must be removed at the same time to resolve the dependency:
rpm -e <packagename1> <packagename1>