8.2 Using RPM
RPM has five basic modes of operation (not counting package building):
installing, uninstalling, upgrading, querying, and verifying. This
section contains an overview of each mode. For complete details and
options try rpm --help, or turn to Section
8.4 for more information on RPM.
8.2.1 Installing
RPM packages typically have file names like foo-1.0-1.i386.rpm,
which includes the package name (foo), version (1.0),
release (1), and architecture (i386).
Installing a package is as simple as:
$ rpm -ivh foo-1.0-1.i386.rpm
foo ####################################
As you can see, RPM prints out the name of the package (which is not
necessarily the same as the file name, which could have been 1.rpm),
and then prints a succession of hash marks as the package is installed,
as a sort of progress meter.
Installing packages is designed to be simple, but you can get a few errors:
8.2.1.1 Package Already Installed
If the package is already installed, you will see:
$ rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
If you really want to install the package anyway, you can use
--replacepkgs on the command line, which tells RPM to ignore
the error.
8.2.1.2 Conflicting Files
If you attempt to install a package that contains a file that has already
been installed by another packages, you'll see:
# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
To cause RPM to ignore that error, use --replacefiles on the
command line.
8.2.1.3 Unresolved Dependency
RPM packages can ``depend'' on other packages, which means that
they require other packages to be installed in order to run properly.
If you try to install a package for which there is such an unresolved
dependency, you'll see:
$ rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
To handle this error you should install the requested packages. If
you want to force the installation anyway (a bad idea since the package
probably will not run correctly), use --nodeps on the command line.
8.2.2 Uninstalling
Uninstalling a package is just as simple as installing:
$ rpm -e foo
Notice that we used the package name ``foo'', not the name of the
original package file
``foo-1.0-1.i386.rpm''.
You can encounter a dependency error when uninstalling a package if
some other installed package depends on the one you are trying to
remove. For example:
$ rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
To cause RPM to ignore that error and uninstall the package anyway
(which is a bad idea since the package that depend on it will probably
fail to work properly), use --nodeps on the command line.
8.2.3 Upgrading
Upgrading a package is almost just like installing.
$ rpm -Uvh foo-2.0-1.i386.rpm
foo ####################################
What you don't see above is the fact that RPM automatically uninstalled
any old versions of the foo package. In fact you may want to
always use -U to install packages,
since it works fine even when there are no previous versions of
the package installed.
Since RPM performs intelligent upgrading of packages with configuration
files, you may see a message like:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
This means that your changes to the configuration file may not be
``forward compatible'' with the new configuration file in the package,
so RPM saved your original file, and installed a new one. You should
investigate and resolve the differences between the two files as soon
as possible to ensure that your system continues to function properly.
Since upgrading is really a combination of uninstalling and installing,
you can encounter any errors from those modes, plus one more:
If RPM thinks you are trying to upgrade to a package with an older
version number, you will see:
$ rpm -Uvh foo-1.0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
To cause RPM to ``upgrade'' anyway, use --oldpackage on the
command line.
8.2.4 Querying
Querying the database of installed packages is accomplished with
rpm -q. A simple use is rpm -q foo
which will print the package name, version, and release number of the installed
package foo:
$ rpm -q foo
foo-2.0-1
Instead of specifying the package name, you can use the following
options with -q to specify what package(s) you want to query. These are
called Package Specification Options.
l-a queries all currently installed packages.l-f <file> will query the package
owning <file>.l-p <packagefile> queries the
package <packagefile>.
There are a number of ways to specify what information to display
about queried packages.
The following options are used to select the information you
are interested in. These are called Information Selection
Options.
l-i displays package information such as name, description, release, size, build date, install date, vendor,
and other miscellaneous information.l-l displays the list of files that the package ``owns''.l-s displays the state of all the files in the package.l-d displays a list of files marked as documentation (man pages, info pages, README's, etc).l-c displays a list of files marked as configuration files. These are the files you change after installation to
adapt the package to your system (sendmail.cf, passwd, inittab, etc).
For those options that display file lists, you can add -v
to your command line to get the lists in a familiar ls -l
format.
8.2.5 Verifying
Verifying a package compares information about files installed from a
package with the same information from the original package.
Among other things, verifying
compares the size, MD5 sum, permissions, type, owner and group of each
file.
rpm -V verifies a package. You can use any of the
Package Selection Options listed for querying to specify the packages
you wish to verify. A simple use is rpm -V foo
which verifies that all the files in the foo package are as they
were when they were originally installed. For example:
lTo verify a package containing particular file:
rpm -Vf /bin/vilTo verify ALL installed packages:
rpm -ValTo verify an installed package against an RPM package file:
rpm -Vp foo-1.0-1.i386.rpmThis can be useful if you suspect that your RPM databases are corrupt.
If everything verified properly there will be no output. If there are
any discrepancies they will be displayed. The format of the output is
a string of 8 characters, a possible ``c'' denoting a configuration
file, and then the file name. Each of the 8 characters denotes the
result of a comparison of one attribute of the file to the value of
that attribute recorded in the RPM database. A single ``.'' (period)
means the test passed. The following characters denote failure of
certain tests:
5MD5 checksumSFile sizeLSymbolic linkTFile modification timeDDeviceUUserGGroupMMode (includes permissions and file type)
If you see any output, use your best judgment to determine if you
should remove or reinstall the package, or somehow fix the problem.
zanotowane.pldoc.pisz.plpdf.pisz.plteen-mushing.xlx.pl