home | login | register | DMCA | contacts | help | donate |      

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Э Ю Я


my bookshelf | genres | recommend | rating of books | rating of authors | reviews | new | форум | collections | читалки | авторам | add



5.1.1. How Do I Do That?

The rpm program provides access to the RPM database. The -q option enables query mode.

The default query takes a package name and tells you whether it is installed and, if so, which version is installed:

$ rpm -q selmyscan

package selmyscan is not installed

$ rpm -q httpd

httpd-2.0.54-10.2


More advanced queries use two different sets of arguments: one to control which packages are reported in the output, and one to control what is reported about the selected packages.

Table 5-1 describes the most commonly used options for selecting packages.

Table 5-1. RPM query options for package selection

Option Description
-a Selects all packages.
-f file Selects the package that installed file.
-g pkggroup Selects the packages that belong to pkggroup (such as Applications/Productivity).
-p pkgfile Selects the uninstalled RPM package file pkgfile, which can be a local filename or an HTTP or FTP URI. Information is retrieved from the package file instead of from the RPM database.
--triggeredby package Selects packages that have scripts that are triggered by the installation or removal of package. For example, a mail-client package may have a script that changes its configuration if the local mail server is changed from sendmail to postfix.
--whatprovides capability Selects packages that provide a certain capability, such as the ability to run perl scripts.
--whatrequires capability Selects packages that require a capability.
packagename Selects a package with the given name.

For example, to find out which package installed the file /usr/lib/libcdda_interface.so :

$ rpm -qf /usr/lib/libcdda_interface.so

cdparanoia-libs-alpha9.8-25


Or to find out which packages provide smtpdaemon (inbound mail server) capability:

$ rpm -q --whatprovides smtpdaemon

sendmail-8.13.4-2

postfix-2.2.2-2


Sometimes, though, you need more information than the name and version number of the packages selected. Table 5-2 lists the most common query output options.

Table 5-2. Query output options

Option Description
--changelog Shows the package changelog, a list of changes to the various versions of the package (not necessarily to various versions of the software).
-c Shows the configuration files included in the package.
-d Shows the documentation files included in the package.
-l Lists files included in the package.
--filesbypkg Same as -l, except that the package name is printed in front of each file; useful when multiple packages are selected.
-i Provides detailed information about the package (package description, license, group, origin, and so forth).
--provides Lists the capabilities provided by the package.
--requires Lists the capabilities required to successfully use the package.
--scripts Displays pre- and post-installation scripts, and pre- and post-uninstallation (removal) scripts.
--triggers Displays the trigger scripts in the package. Trigger scripts are invoked when another, related package is installed or removed.

When output options and selection options are combined, rpm becomes a very powerful tool. For example, to see the description of the package that installed /etc/mail/access :

$ rpm -qif /etc/mail/access

Name : sendmail Relocations: (not relocatable)

Version : 8.13.4 Vendor: Red Hat, Inc.

Release : 2 Build Date: Fri 06 May 2005 08:35:13 AM EDT

Install Date: Mon 29 Aug 2005 12:46:19 AM EDT Build Host: decompose.build.redhat.com

Group : System Environment/Daemons Source RPM: sendmail-8.13.4-2.src.rpm

Size : 1332268 License: Sendmail

Signature : DSA/SHA1, Fri 20 May 2005 01:44:43 PM EDT, Key ID b44269d04f2a6fd2

Packager : Red Hat, Inc.

Summary : A widely used Mail Transport Agent (MTA).

Description :

The Sendmail program is a very widely used Mail Transport Agent (MTA).

MTAs send mail from one machine to another. Sendmail is not a client

program, which you use to read your email. Sendmail is a

behind-the-scenes program which actually moves your email over

networks or the Internet to where you want it to go.


If you ever need to reconfigure Sendmail, you will also need to have

the sendmail.cf package installed. If you need documentation on

Sendmail, you can install the sendmail-doc package.


To see all of the files installed by the package that installed /usr/lib/libcdda_interface.so :

$ rpm -qlf /usr/lib/libcdda_interface.so

/usr/lib/libcdda_interface.so

/usr/lib/libcdda_interface.so.0

/usr/lib/libcdda_interface.so.0.9.8

/usr/lib/libcdda_paranoia.so

/usr/lib/libcdda_paranoia.so.0

/usr/lib/libcdda_paranoia.so.0.9.8


Or to see those files along with the package name:

$ rpm -qf --filesbypkg /usr/lib/libcdda_interface.so

cdparanoia-libs /usr/lib/libcdda_interface.so

cdparanoia-libs /usr/lib/libcdda_interface.so.0

cdparanoia-libs /usr/lib/libcdda_interface.so.0.9.8

cdparanoia-libs /usr/lib/libcdda_paranoia.so

cdparanoia-libs /usr/lib/libcdda_paranoia.so.0

cdparanoia-libs /usr/lib/libcdda_paranoia.so.0.9.8


To see all of the other capabilities provided by the package that provides the capability perl :

$ rpm -q --whatprovides perl --provides

APItest.so

B.so

Base64.so

Byte.so

ByteLoader.so

...(Lines snipped)...

perl(warnings::register) = 1.00

re.so

scalar.so

shared.so

threads.so

via.so

perl = 3:5.8.6-15


To see the scripts that will be triggered by removing sendmail :

$ rpm -q --triggeredby sendmail --triggers

triggerpostun scriptlet (using /bin/sh) -- sendmail < 8.10.0

/sbin/chkconfig --add sendmail

triggerpostun scriptlet (using /bin/sh) -- sendmail < 8.11.6-11

/usr/sbin/alternatives --auto mta


To list the files in the uninstalled RPM package file a52dec-0.7.4-4.fr.i386.rpm :

$ rpm -qlp a52dec-0.7.4-4.fr.i386.rpm

/usr/bin/a52dec

/usr/bin/extract_a52

/usr/share/doc/a52dec-0.7.4

/usr/share/doc/a52dec-0.7.4/AUTHORS

/usr/share/doc/a52dec-0.7.4/COPYING

/usr/share/doc/a52dec-0.7.4/ChangeLog

/usr/share/doc/a52dec-0.7.4/NEWS

/usr/share/doc/a52dec-0.7.4/README

/usr/share/doc/a52dec-0.7.4/TODO

/usr/share/doc/a52dec-0.7.4/liba52.txt

/usr/share/man/man1/a52dec.1.gz

/usr/share/man/man1/extract_a52.1.gz


If that RPM were on a remote web server or FTP server, you could substitute the URI for the filename:

$ rpm -qlp \ ftp://ftp.ntua.gr/pub/video/videolan/testing/vlc-0.7.0-test1/rpm/rh9-fc1/rh9-fc1/vlc/a52dec-0.7.4-4.fr.i386.rpm

/usr/bin/a52dec

/usr/bin/extract_a52

...(Lines snipped)...


5.1. Querying the Package Management Database | Fedora Linux | 5.1.2. How Does It Work?