RPM command examples | Linux

Linux

Querying for All Packages

Use the rpm command to list all the packages that are currently installed on your system.
At the shell prompt, type:

[[email protected] ~]# rpm --query --all

This will give you a long listing of software installed.

Querying Details for a Specific Package

[[email protected] ~]# rpm --query bash
bash-3.2-*

The output should be something similar to the one shown. It shows that you do indeed have the package called bash installed.

[[email protected] ~]# rpm -qi bash

Name : bash Relocations: (not relocatable)
Version : 3.2 Vendor: Red Hat, Inc.
....<OUTPUT TRUNCATED>....
URL : http://www.gnu.org/software/bash
Summary : The GNU Bourne Again shell (bash) version 3.2
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification. This
package (bash) contains bash version 3.2, which improves POSIX
compliance over previous versions.

This output gives us a lot of information. It shows the version number, the release, the description, the packager, and more.

[[email protected] ~]# rpm -ql bash

This lists all the files that come along with the bash package.
To list the configuration files (if any) that come with the bash package, type:

[[email protected] ~]# rpm -qc bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc

The querying capabilities of rpm are extensive. RPM packages have a lot of information stored in so-called tags. These tags make up the metadata of the package. You can query the RPM database for specific information using these tags. For example, to find out the date that the bash package was installed on your system, you can type

[[email protected] ~]# rpm -q --qf "[ %{INSTALLTIME:date} \n]" bash
Mon 03 Sep 2009 01:35:44 PM PDT


To find out what package group the bash application comes under, type

[[email protected] ~]# rpm -q --qf "[ %{GROUP} \n]" bash
System Environment/Shells

You can always query for more than one package at the same time and also query for multiple tag information. For example, to display the names and package groups for the bash and xterm packages, type

[[email protected] ~]# rpm -q --qf "[%{NAME} - %{GROUP} - %{SUMMARY} \n]" bash xterm
bash - System Environment/Shells - The GNU Bourne Again shell (bash) version 3.2
xterm - User Interface/X - Terminal emulator for the X Window System

To determine what other packages on the system depend on the bash package, type

[[email protected] ~]# rpm -q --whatrequires bash

Installing with RPM

Process of installing an RPM.

1. Launch a virtual terminal.
2. Assuming your distribution install media disc is mounted at the /media/dvd mount point, change to the directory that usually contains the RPM packages on the DVD. Type

[[email protected] ~]# cd /media/dvd/Packages/

3. You can first make sure that the file you want is indeed in that directory. Use the ls command to list all the files that start with the letters “lyn” in the directory.
Type

[[email protected] Packages]# ls lyn*
lynx-2.*.rpm

4. Now that you have confirmed that the file is there, perform a test install of the package (this will run through the motion of installing the package without actually installing anything on the system). This is useful in making sure that all the needs (dependencies) of a package are met. Type

[[email protected] Packages]# rpm --install --verbose --hash --test lynx-*
Preparing... ########################################### [100%]

Everything looks okay., If you get a warning message about the signature, you can safely ignore it for now.

5. Now you can perform the actual installation. Type

[[email protected] Packages]# rpm -ivh lynx-*
Preparing.. ########################################### [100%]
1:lynx ########################################### [100%]

6. Run a simple query to confirm that the application is installed on your system.
Type

[[email protected] Packages]# rpm -q lynx
lynx-2.*

The output shows that lynx is now available on the system. Lynx is a text-based web browser. You can launch it by simply typing lynx at the shell prompt. To quit lynx, simply press q. You will get a prompt at the lower-right corner of your terminal to confirm that you want to quit lynx. Press enter to confirm.

As you can see, installing packages via RPM can be easy. But there are times when installing packages is trickier. This is usually due to the issues of failed dependencies.
For example, the lynx package might require the bash package to be already installed on the system before it can be successfully installed.
Let’s step through installing a more complex package to see how dependencies are handled with RPM. Assuming you are still in the Package directory of the DVD media, do the following:

1. Install the package by typing

[[email protected] Packages]# rpm -ivh gcc-4.*
error: Failed dependencies:
glibc-devel >= 2.2.90-12 is needed by gcc-4.3.0-8.i386

The preceding output does not look good. The last line tells us that gcc* depends on another package, called glibc-devel*.

2. Fortunately, because we have access to the DVD media that contains most of the packages for this distro in a single directory, we can easily add the additional package to our install list. Type

[[email protected] Packages]# rpm -ivh gcc-4* glibc-devel-2*
error: Failed dependencies:
glibc-headers = 2.8-3 is needed by glibc-devel-2.8-3.i386

It looks like this particular partner is not going to be easy to move in. The output again tells us that the glibc-devel* package depends on another package, called glibc-headers*.

3. Add the newest dependency to the install list. Type

[[email protected] Packages]# rpm -ivh gcc-4* glibc-devel-2* \
> glibc-headers-2*
error: Failed dependencies:
kernel-headers is needed by glibc-headers-2.8-3.i386
kernel-headers >= 2.2.1 is needed by glibc-headers-2.8-3.i386

After all we have given to this relationship, all we get is more complaining. The last requirement is the kernel-headers* package. We need to satisfy this requirement, too.

4. Looks like we are getting close to the end. We add the final required package to the list. Type

[[email protected] Packages]# rpm -ivh gcc-4* glibc-devel-2* |
> glibc-headers-2* kernel-headers-*
Preparing... ###################################### [100%]
1:kernel-headers ###################################### [ 25%]
2:glibc-headers ###################################### [ 50%]
3:glibc-devel ###################################### [ 75%]
4:gcc ###################################### [100%]

Uninstalling Software with RPM

Removing software with RPM is quite easy and can be done in a single step. For example, to remove the lynx package that we installed earlier, we simply need to use the -e option, like so:

[[email protected] ~ ]# rpm -e lynx

This command will usually not give you any feedback if everything went well. To get a more verbose output for the uninstallation process, add the -vvv option to the command.

A handy feature of RPM is that it will also protect you from removing packages that are needed by other packages. For example, if we try to remove the kernel-headers package

[[email protected] ~]# rpm -e kernel-headers
error: Failed dependencies:
kernel-headers is needed by (installed) glibc-headers-2.8-3.i386
kernel-headers >= 2.2.1 is needed by (installed) glibc-headers-2.8-3.i386

Verifying Packages with RPM

A useful option with the RPM tool is the ability to verify a package. What happens is that RPM looks at the package information in its database, which is assumed to be good. It then compares that information with the binaries and files that are on your system.

[[email protected] ~]# rpm -V bash

The absence of any output is a good sign. You can also verify specific files on the file system that a particular package installed.

For example, to verify that the /bin/ls command is valid, you would type

[[email protected] ~ ]# rpm -Vf /bin/ls

Again, the lack of output is a good thing.

If something was amiss—for example, if the /bin/ls command had been replaced by a dud version—the verify output might be similar to the one here:

[[email protected] Fedora]# rpm -Vf /bin/ls
SM5....T /bin/ls

If something is wrong, as in the preceding example, RPM will inform you of what test failed. Some example tests are the MD5 checksum test, file size, and modification times.

Package Validation using RPM

You sometimes need to manually tell your system whose digital signature to trust. This explains the reason why you may see some warnings in the earlier procedures when you were trying to install a package (such as this message: “Warning: lynx-2.*.rpm:Header V3 DSA signature: NOKEY, key ID 4f2a6fd2”). To prevent this warning message, you should import Fedora’s digital key into your system’s key ring. Type

[[email protected] ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

You might also have to import other vendors’ keys into the key ring. To be extra certain that even the local key you have is not a dud, you can import the key directly from the vendor’s web site. For instance, to import a key from Fedora’s project site, you would type

[[email protected] ~]# rpm --import http://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/i386/os/RPM-GPG-KEY-fedora

 

 

In case of any ©Copyright or missing credits issue please check CopyRights page for faster resolutions.

Leave a Reply