commit 6beb6918027fd0bb7bcb3dbfd04c7b7da1130e28
Author: Stephen Wadeley <swadeley(a)redhat.com>
Date: Sun Dec 14 10:49:05 2014 +0100
Applying improvements to RPM
from upstream version, after proofreading
updated most package names to suit Fed21
en-US/RPM.xml | 1105 +++++++++++++++++++++++++++++----------------------------
1 files changed, 563 insertions(+), 542 deletions(-)
---
diff --git a/en-US/RPM.xml b/en-US/RPM.xml
index 482f897..35fb303 100644
--- a/en-US/RPM.xml
+++ b/en-US/RPM.xml
@@ -11,33 +11,45 @@
<indexterm>
<primary>RPM</primary>
</indexterm>
- <para>The <firstterm>RPM Package Manager</firstterm> (RPM) is an open
packaging system<indexterm><primary>packages</primary>
- <secondary>RPM</secondary>
- </indexterm>, which runs on &MAJOROS; as well as other Linux and UNIX
systems. Red Hat, Inc. and the Fedora Project encourage other vendors to use RPM for their
own products. RPM is distributed under the terms of the
<firstterm>GPL</firstterm> (<firstterm>GNU General Public
License</firstterm>).</para>
- <para>The RPM Package Manager only works with packages built to work with the
<emphasis>RPM format</emphasis>. RPM is itself provided as a pre-installed
<package>rpm</package> package. For the end user, RPM makes system updates
easy. Installing, uninstalling and upgrading RPM packages can be accomplished with short
commands. RPM maintains a database of installed packages and their files, so you can
invoke powerful queries and verifications on your system.</para>
- <para>The RPM package format has been improved for &MAJOROSVER;. RPM packages
are now compressed using the XZ lossless data compression format, which has the benefit of
greater compression and less CPU usage during decompression, and support multiple strong
hash algorithms, such as SHA-256, for package signing and verification.</para>
- <warning
- id="warning-Use_Yum_Instead_of_RPM_Whenever_Possible">
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ </indexterm>
+ <para>
+ The <firstterm>RPM Package Manager</firstterm>
(<application>RPM</application>) is an open packaging system that runs on
&MAJOROS; as well as other Linux and UNIX systems. Red Hat and the Fedora
Project encourage other vendors to use <application>RPM</application> for
their own products. <application>RPM</application> is distributed under the
terms of the <firstterm>GPL</firstterm> (<firstterm>GNU General Public
License</firstterm>).
+ </para>
+ <para>
+ The <application>RPM Package Manager</application> only works with
packages built in the <emphasis>RPM format</emphasis>.
<application>RPM</application> itself is provided as the pre-installed
<package>rpm</package> package. For the end user,
<application>RPM</application> makes system updates easy. Installing,
uninstalling, and upgrading <application>RPM</application> packages can be
accomplished with short commands. <application>RPM</application> maintains a
database of installed packages and their files, so you can make queries and verify
installed files on your system. There are several applications, such as
<application>Yum</application> or
<application>PackageKit</application>, that can make working with packages in
the <application>RPM</application> format even easier.
+ </para>
+ <warning id="warning-Use_Yum_Instead_of_RPM_Whenever_Possible">
<title>Use Yum Instead of RPM Whenever Possible</title>
- <para>For most package management tasks, the
<application>Yum</application> package manager offers equal and often greater
capabilities and utility than RPM<indexterm><primary>packages</primary>
- <secondary>Yum instead of RPM</secondary>
- </indexterm>. <application>Yum</application> also performs and
tracks complicated system dependency resolution, and will complain and force system
integrity checks if you use RPM as well to install and remove packages. For these reasons,
it is highly recommended that you use <application>Yum</application> instead
of RPM whenever possible to perform package management tasks. See <xref
- linkend="ch-yum"/>.</para>
- <para>If you prefer a graphical interface, you can use the
<application>PackageKit</application> GUI application, which uses
<application>Yum</application> as its back end, to manage your system's
packages.</para>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>Yum instead of RPM</secondary>
+ </indexterm>
+ <para>
+ For most package-management tasks, the <application>Yum</application>
package manager offers equal and often greater capabilities and utility than
<application>RPM</application>. <application>Yum</application>
also performs and tracks complicated system-dependency resolutions.
<application>Yum</application> maintains the system integrity and forces a
system integrity check if packages are installed or removed using another application,
such as <application>RPM</application>, instead of
<application>Yum</application>. For these reasons, it is highly recommended
that you use <application>Yum</application> instead of
<application>RPM</application> whenever possible to perform package-management
tasks. See <xref linkend="ch-yum"/>.
+ </para>
+ <para>
+ If you prefer a graphical interface, you can use the
<application>PackageKit</application> GUI application, which uses
<application>Yum</application> as its back end, to manage your system's
packages.
+ </para>
</warning>
- <important>
- <title>Install RPM packages with the correct architecture!</title>
- <para>When installing a package, ensure it is compatible with your operating
system and processor architecture. This can usually be determined by checking the package
name. Many of the following examples show RPM packages compiled for the AMD64/Intel 64
computer architectures; thus, the RPM file name ends in
<filename>x86_64.rpm</filename>.</para>
- </important>
- <para>During upgrades, RPM handles configuration files carefully, so that you
never lose your customizations—something that you cannot accomplish with regular
<filename>.tar.gz</filename> files.</para>
- <para>For the developer, RPM allows you to take software source code and package
it into source and binary packages for end
users.<indexterm><primary>packages</primary>
- <secondary>RPM</secondary>
- <tertiary>source and
- binary packages</tertiary>
- </indexterm> This process is quite simple and is driven from a single file and
optional patches that you create. This clear delineation between
<firstterm>pristine</firstterm> sources and your patches along with build
instructions eases the maintenance of the package as new versions of the software are
released.</para>
- <note>
- <title>Running rpm commands must be performed as root</title>
- <para>Because RPM makes changes to your system, you must be logged in as root
to install, remove, or upgrade an RPM package.</para>
+ <para>
+ During upgrades, <application>RPM</application> handles configuration
files carefully, so that you never lose your customizations — something that you
cannot accomplish with regular <filename>.tar.gz</filename> files.
+ </para>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ <tertiary>source and binary packages</tertiary>
+ </indexterm>
+ <para>
+ For the developer, <application>RPM</application> enables software source
code to be packaged into source and binary packages for end users. This process is quite
simple and is driven from a single file and optional patches that you create. This clear
delineation between pristine sources and your patches along with build instructions eases
the maintenance of the package as new versions of the software are released.
+ </para>
+ <note id="note-Root_Permissions">
+ <title>Note</title>
+ <para>
+ Because <application>RPM</application> can make changes to the system
itself, performing operations like installing, upgrading, downgrading, and uninstalling
binary packages system-wide requires <systemitem
class="username">root</systemitem> privileges in most cases.
+ </para>
</note>
<section
id="s1-rpm-design">
@@ -46,47 +58,71 @@
<primary>RPM</primary>
<secondary>design goals</secondary>
</indexterm>
- <para>To understand how to use RPM, it can be helpful to understand the design
goals of RPM:</para>
+ <para>
+ To understand how to use <application>RPM</application>, it is helpful
to understand the design goals of <application>RPM</application>:
+ </para>
<variablelist>
<varlistentry>
- <term>Upgradability<indexterm><primary>RPM</primary>
+ <term>
+ <indexterm>
+ <primary>RPM</primary>
<secondary>design goals</secondary>
<tertiary>upgradability</tertiary>
</indexterm>
+ Upgradability
</term>
<listitem>
- <para>With RPM, you can upgrade individual components of your system
without completely reinstalling. When you get a new release of an operating system based
on RPM, such as &MAJOROS;, you do not need to reinstall a fresh copy of the operating
system your machine (as you might need to with operating systems based on other packaging
systems). RPM allows intelligent, fully-automated, in-place upgrades of your system. In
addition, configuration files in packages are preserved across upgrades, so you do not
lose your customizations. There are no special upgrade files needed to upgrade a package
because the same RPM file is used to both install and upgrade the package on your
system.</para>
+ <para>
+ With <application>RPM</application>, you can upgrade individual
components of your system without a complete reinstallation. When you get a new release of
an operating system based on <application>RPM</application>, such as
&MAJOROS;, you do not need to reinstall a fresh copy of the operating system on your
machine (as you might need to with operating systems based on other packaging systems).
<application>RPM</application> allows for intelligent, fully-automated,
in-place upgrades of your system. In addition, configuration files in packages are
preserved across upgrades, so you do not lose your customizations. There are no special
upgrade files needed to upgrade a package because the same
<application>RPM</application> file is used to both install and upgrade the
package on the system.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Powerful Querying<indexterm><primary>RPM</primary>
+ <term>
+ <indexterm>
+ <primary>RPM</primary>
<secondary>design goals</secondary>
<tertiary>powerful querying</tertiary>
</indexterm>
+ Powerful Querying
</term>
<listitem>
- <para>RPM is designed to provide powerful querying options. You can
perform searches on your entire database for packages or even just certain files. You can
also easily find out what package a file belongs to and from where the package came. The
files an RPM package contains are in a compressed archive, with a custom binary header
containing useful information about the package and its contents, allowing you to query
individual packages quickly and easily.</para>
+ <para>
+ <application>RPM</application> is designed to provide powerful
querying options. You can perform searches on your copy of the database for packages or
even just certain files. You can also easily find out what package a file belongs to and
where the package came from. The files an <application>RPM</application>
package contains are in a compressed archive, with a custom binary header containing
useful information about the package and its contents, allowing you to query individual
packages quickly and easily.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
- <term> System
Verification<indexterm><primary>RPM</primary>
+ <term>
+ <indexterm>
+ <primary>RPM</primary>
<secondary>design goals</secondary>
<tertiary>system verification</tertiary>
</indexterm>
+ System Verification
</term>
<listitem>
- <para>Another powerful RPM feature is the ability to verify packages. If
you are worried that you deleted an important file for some package, you can verify the
package. You are then notified of anomalies, if any—at which point you can
reinstall the package, if necessary. Any configuration files that you modified are
preserved during reinstallation.</para>
+ <para>
+ Another powerful <application>RPM</application> feature is the
ability to verify packages. It allows you to verify that the files installed on the system
are the same as the ones supplied by a given package. If an inconsistency is detected,
<application>RPM</application> notifies you, and you can reinstall the package
if necessary. Any configuration files that you modified are preserved during
reinstallation.
+ </para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Pristine Sources
<indexterm><primary>packages</primary>
+ <term>
+ <indexterm>
+ <primary>packages</primary>
<secondary>RPM</secondary>
<tertiary>pristine sources</tertiary>
</indexterm>
+ Pristine Sources
</term>
<listitem>
- <para>A crucial design goal was to allow the use of
<emphasis>pristine </emphasis> software sources, as distributed by the
original authors of the software. With RPM, you have the pristine sources along with any
patches that were used, plus complete build instructions. This is an important advantage
for several reasons. For instance, if a new version of a program is released, you do not
necessarily have to start from scratch to get it to compile. You can look at the patch to
see what you <emphasis>might</emphasis> need to do. All the compiled-in
defaults, and all of the changes that were made to get the software to build properly, are
easily visible using this technique.</para>
- <para>The goal of keeping sources pristine may seem important only for
developers, but it results in higher quality software for end users, too.</para>
+ <para>
+ A crucial design goal was to allow the use of
<emphasis>pristine</emphasis> software sources, as distributed by the original
authors of the software. With <application>RPM</application>, you have the
pristine sources along with any patches that were used, plus complete build instructions.
This is an important advantage for several reasons. For instance, if a new version of a
program is released, you do not necessarily have to start from scratch to get it to
compile. You can look at the patch to see what you <emphasis>might</emphasis>
need to do. All the compiled-in defaults, and all of the changes that were made to get the
software to build properly, are easily visible using this technique.
+ </para>
+ <para>
+ The goal of keeping sources pristine may seem important only for developers,
but it results in higher quality software for end users.
+ </para>
</listitem>
</varlistentry>
</variablelist>
@@ -94,58 +130,13 @@
<section
id="s1-rpm-using">
<title>Using RPM</title>
- <para>RPM has five basic modes of
operation<indexterm><primary>RPM</primary>
+ <para><application>RPM</application> has five basic modes of
operation<indexterm><primary>RPM</primary>
<secondary>basic modes</secondary>
- </indexterm> (not counting package building): installing, uninstalling,
upgrading, querying, and verifying. This section contains an overview of each mode. For
complete details and options, try <command>rpm --help</command> or
<command>man rpm</command>. You can also refer to <xref
- linkend="s1-rpm-additional-resources"/> for more information on
RPM.</para>
- <section
- id="s2-rpm-finding">
- <title>Finding RPM Packages</title>
- <indexterm>
- <primary>packages</primary>
- <secondary>finding RPM packages</secondary>
- </indexterm>
- <indexterm>
- <primary>RPM</primary>
- <secondary>finding RPM packages</secondary>
- </indexterm>
- <para>Before using any RPM packages, you must know where to find them. An
Internet search returns many RPM repositories, but if you are looking for &MAJOROS;
RPM packages, they can be found at the following locations:</para>
- <itemizedlist>
- <listitem>
- <para>The &MAJOROS; installation media
<indexterm><primary>&MAJOROS; installation media</primary>
- <secondary>installable packages</secondary>
- </indexterm>
- <indexterm>
- <primary> packages</primary>
- <secondary>&MAJOROS; installation media</secondary>
- </indexterm> contain many installable RPMs.</para>
- </listitem>
- <listitem>
- <para>The initial RPM repositories provided with the YUM package
manager<indexterm><primary>initial RPM repositories</primary>
- <secondary>installable packages</secondary>
- </indexterm>
- <indexterm>
- <primary> packages</primary>
- <secondary>initial RPM repositories</secondary>
- </indexterm>. See <xref
- linkend="ch-yum"/> for details on how to use the official
&MAJOROS; package repositories.</para>
- </listitem>
- <listitem>
- <para>The active &MAJOROS; mirrors contains many installable RPMs:
<ulink
-
url="http://mirrors.fedoraproject.org/publiclist/"/>.</pa...
- </listitem>
- <listitem>
- <para>Unofficial, third-party repositories not affiliated with
&OSORG; also provide RPM packages.</para>
- <important>
- <title>Third-party repositories and package
compatibility</title>
- <para>When considering third-party repositories for use with your
&MAJOROS; system, pay close attention to the repository's web site with regard to
package compatibility before adding the repository as a package source. Alternate package
repositories may offer different, incompatible versions of the same software, including
packages already included in the &MAJOROS; repositories.</para>
- </important>
- </listitem>
- </itemizedlist>
- </section>
- <section
- id="sec-Installing_and_Upgrading">
- <title>Installing and Upgrading</title>
+ </indexterm> (not counting package building): installing, uninstalling,
upgrading, querying, and verifying. This section contains an overview of each mode. For
complete details and options, try <command>rpm --help</command> or see
<citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
Also, see <xref
+ linkend="s1-rpm-additional-resources"/> for more information on
<application>RPM</application>.
+ </para>
+ <section id="sec-Installing_and_Upgrading">
+ <title>Installing and Upgrading Packages</title>
<indexterm>
<primary>RPM</primary>
<secondary>installing</secondary>
@@ -162,100 +153,121 @@
<primary>packages</primary>
<secondary>upgrading RPM</secondary>
</indexterm>
- <para>RPM packages typically have file names
<indexterm><primary>RPM</primary>
- <secondary>file name</secondary>
- </indexterm>
- like <filename>tree-1.5.3-2.&PKGOS;.x86_64.rpm</filename>. The
file name includes the package name (<filename>tree</filename>), version
(<filename>1.5.3</filename>), release (<filename>2</filename>),
operating system major version (<filename>&PKGOS;</filename>) and CPU
architecture (<filename>x86_64</filename>).</para>
- <para>You can use <command>rpm</command>'s
<option>-U</option> option to:</para>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>file name</secondary>
+ </indexterm>
+ <para>
+<application>RPM</application> packages typically have file names in the
following form:
+</para>
+
<synopsis>package_name-version-release-operating_system-CPU_architecture.rpm</synopsis>
+ <para>
+ For example the
<filename>tree-1.7.0-3.&PKGOS;.x86_64.rpm</filename> file name includes
the package name (<filename>tree</filename>), version
(<filename>1.7.0</filename>), release (<filename>3</filename>),
operating system major version (<filename>&PKGOS;</filename>) and
<acronym>CPU</acronym> architecture
(<filename>x86_64</filename>).
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ When installing a package, ensure it is compatible with your operating system
and processor architecture. This can usually be determined by checking the package name.
For example, the file name of an <application>RPM</application> package
compiled for the AMD64/Intel 64 computer architectures ends with
<filename>x86_64.rpm</filename>.
+ </para>
+ </important>
+ <para>
+ The <option>-U</option> (or <option>--upgrade</option>)
option has two functions, it can be used to:
+ </para>
<itemizedlist>
<listitem>
- <para>upgrade an existing but older package on the system to a newer
version, or</para>
+ <para>
+ upgrade an existing package on the system to a newer version, or
+ </para>
</listitem>
<listitem>
- <para>install the package even if an older version is not already
installed.</para>
+ <para>
+ install a package if an older version is not already installed.
+ </para>
</listitem>
</itemizedlist>
- <para>That is, <command>rpm -U
<replaceable><rpm_file></replaceable>
- </command> is able to perform the function of either
<emphasis>upgrading</emphasis> or <emphasis>installing</emphasis>
as is appropriate for the package.</para>
- <para>Assuming the
<filename>tree-1.5.3-2.&PKGOS;.x86_64.rpm</filename> package is in the
current directory, log in as root and type the following command at a shell prompt to
either upgrade or install the <package>tree</package> package as determined by
<command>rpm</command>:</para>
- <!-- RHEL5: BZ#419161 -->
- <screen>
-<command>rpm -Uvh tree-1.5.3-2.&PKGOS;.x86_64.rpm</command>
- </screen>
+ <para>
+ The <command>rpm -U
<replaceable>package.rpm</replaceable></command> command is therefore
able to either <emphasis>upgrade</emphasis> or
<emphasis>install</emphasis>, depending on the presence of an older version of
<replaceable>package.rpm</replaceable> on the system.
+ </para>
+ <para>Assuming the
<filename>tree-1.7.0-3.&PKGOS;.x86_64.rpm</filename> package is in the
current directory, log in as <systemitem
class="username">root</systemitem> and type the following command at a
shell prompt to either upgrade or install the <package>tree</package>
package:</para>
+ <screen>~]# <command>rpm -Uvh
tree-1.7.0-3.&PKGOS;.x86_64.rpm</command></screen>
<note
id="note-Use_-Uvh_for_nicely-formatted_RPM_installs">
<title>Use -Uvh for nicely-formatted RPM installs</title>
<para>The <option>-v</option> and
<option>-h</option> options (which are combined with
<option>-U</option>) cause <application>rpm</application> to print
more verbose output and display a progress meter using hash signs.</para>
</note>
- <para>If the upgrade/installation is successful, the following output is
displayed:</para>
+ <para>If the upgrade or installation is successful, the following output is
displayed:</para>
<screen>Preparing...
########################################### [100%]
1:tree ###########################################
[100%]</screen>
<warning
id="warning-Always_use_the_-i_install_option_to_install_new_kernel_packages">
<title>Always use the -i (install) option to install new kernel
packages!</title>
<para>
- <command>rpm</command> provides two different options for
installing packages: the aforementioned <option>-U</option> option (which
historically stands for <emphasis>upgrade</emphasis>), and the
<option>-i</option> option, historically standing for
<emphasis>install</emphasis>. Because the <option>-U</option>
option subsumes both install and upgrade functions, we recommend to use <command>rpm
-Uvh</command> with all packages <emphasis>except
<package>kernel</package> packages</emphasis>.</para>
- <para>You should always use the <option>-i</option> option to
simply <emphasis>install</emphasis> a new kernel package instead of upgrading
it. This is because using the <option>-U</option> option to upgrade a kernel
package removes the previous (older) kernel package, which could render the system unable
to boot if there is a problem with the new kernel. Therefore, use the <command>rpm
-i <replaceable><kernel_package></replaceable>
- </command> command to install a new kernel <emphasis>without
replacing any older <package>kernel</package> packages</emphasis>. For
more information on installing <package>kernel</package> packages, refer to
<xref
+ <command>rpm</command> provides two different options for
installing packages: the aforementioned <option>-U</option> option (which
historically stands for <emphasis>upgrade</emphasis>), and the
<option>-i</option> option (which historically stands for
<emphasis>install</emphasis>). Because the <option>-U</option>
option includes both install and upgrade functions, the use of <command>rpm
-Uvh</command> with all packages, <emphasis>except
<package>kernel</package> packages</emphasis>, is
recommended.</para>
+ <para>You should always use the <option>-i</option> option to
<emphasis>install</emphasis> a new kernel package instead of upgrading it.
This is because using the <option>-U</option> option to upgrade a kernel
package removes the previous (older) kernel package, which could render the system unable
to boot if there is a problem with the new kernel. Therefore, use the <command>rpm
-i <replaceable>kernel_package</replaceable>
+ </command> command to install a new kernel <emphasis>without
replacing any older <package>kernel</package> packages</emphasis>. For
more information on installing <package>kernel</package> packages, see
<xref
linkend="ch-Manually_Upgrading_the_Kernel"/>.</para>
</warning>
- <para>The signature of a package is checked automatically when installing or
upgrading a package. The signature confirms that the package was signed by an authorized
party. For example, if the verification of the signature fails, an error message such as
the following is displayed:</para>
- <screen>error: tree-1.5.2.2-4.&PKGOS;.x86_64.rpm: Header V3 RSA/SHA256
signature: BAD, key ID
-d22e77f2</screen>
-<!-- TBD6: clarify: what is a "new, header-only, signature"? -->
- <para>If it is a new, header-only, signature, an error message such as the
following is displayed:</para>
- <screen>error: tree-1.5.2.2-4.&PKGOS;.x86_64.rpm: Header V3 RSA/SHA256
signature: BAD,
-key ID d22e77f2</screen>
- <para>If you do not have the appropriate key installed to verify the
signature, the message contains the word
<computeroutput>NOKEY</computeroutput>:</para>
- <screen>warning: tree-1.5.2.2-4.&PKGOS;.x86_64.rpm: Header V3 RSA/SHA1
signature: NOKEY, key ID 57bbccba</screen>
- <para>See <xref
- linkend="s1-check-rpm-sig"/> for more information on checking a
package's signature.</para>
- <section
- id="s3-rpm-errors">
- <title>Package Already Installed</title>
- <para>If a package of the same name and version is already
installed<indexterm><primary>RPM</primary>
- <secondary>already installed</secondary>
- </indexterm>
- <indexterm>
- <primary>packages</primary>
- <secondary>RPM</secondary>
- <tertiary>already installed</tertiary>
- </indexterm>, the following output is displayed:</para>
+ <para>
+ The signature of a package is checked automatically when installing or upgrading
a package. The signature confirms that the package was signed by an authorized party. If
the verification of the signature fails, an error message is displayed.
+ </para>
+ <para>
+ If you do not have the appropriate key installed to verify the signature, the
message contains the word <computeroutput>NOKEY</computeroutput>:
+ </para>
+ <screen>warning: tree-1.7.0-3.&PKGOS;.x86_64.rpm: Header V3 RSA/SHA256
Signature, key ID 431d51: NOKEY</screen>
+ <para>
+ See <xref linkend="s1-check-rpm-sig"/> for more information on
checking package signatures.
+ </para>
+ <section id="s3-rpm-errors">
+ <title>Replacing Already-Installed Packages</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>already installed</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ <tertiary>already installed</tertiary>
+ </indexterm>
+ <para>
+ If a package of the same name and version is already installed, the following
output is displayed:
+ </para>
<screen>Preparing...
########################################### [100%]
- package tree-1.5.3-2.&PKGOS;.x86_64 is already installed</screen>
- <para>However, if you want to install the package anyway, you can use the
<command>--replacepkgs</command> option, which tells RPM to ignore the
error:</para>
- <screen>
-<command>rpm -Uvh --replacepkgs
tree-1.5.3-2.&PKGOS;.x86_64.rpm</command>
- </screen>
- <para>This option is helpful if files installed from the RPM were deleted
or if you want the original configuration files from the RPM to be
installed.</para>
+ package tree-1.7.0-3.&PKGOS;.x86_64 is already installed</screen>
+ <para>
+ To install the package anyway, use the
<option>--replacepkgs</option> option, which tells
<application>RPM</application> to ignore the error:
+ </para>
+ <screen>~]# <command>rpm -Uvh --replacepkgs
tree-1.7.0-3.&PKGOS;.x86_64.rpm</command></screen>
+ <para>
+ This option is helpful if files installed from the package were deleted or if
you want the original configuration files to be installed.
+ </para>
+ <para>
+ If you attempt an upgrade to an <emphasis>older</emphasis> version
of a package (that is, if a newer version of the package is already installed),
<application>RPM</application> informs you that a newer version is already
installed. To force <application>RPM</application> to perform the downgrade,
use the <command>--oldpackage</command> option:
+ </para>
+ <synopsis><command>rpm -Uvh --oldpackage
<replaceable>older_package.rpm</replaceable></command></synopsis>
</section>
- <section
- id="s3-rpm-conflicting-files">
- <title>Conflicting Files</title>
+ <section id="s3-rpm-conflicting-files">
+ <title>Resolving File Conflicts</title>
<indexterm>
<primary>RPM</primary>
<secondary>file conflicts</secondary>
<tertiary>resolving</tertiary>
</indexterm>
- <para>If you attempt to install a package that contains a file which has
already been installed by another
package<indexterm><primary>RPM</primary>
- <secondary>conflicts</secondary>
- </indexterm>
- <indexterm>
- <primary>packages</primary>
- <secondary>RPM</secondary>
- <tertiary>conflict</tertiary>
- </indexterm>, the following is displayed:</para>
- <screen>Preparing... ##################################################
- file /usr/bin/foobar from install of foo-1.0-1.&PKGOS;.x86_64 conflicts
-with file from package bar-3.1.1.&PKGOS;.x86_64</screen>
- <para>To make RPM ignore this error, use the
<command>--replacefiles</command> option:</para>
- <screen>
-<command>rpm -Uvh --replacefiles foo-1.0-1.&PKGOS;.x86_64.rpm</command>
- </screen>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>conflicts</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ <tertiary>conflict</tertiary>
+ </indexterm>
+ <para>
+ If you attempt to install a package that contains a file that has already been
installed by another package, a conflict message is displayed. To make
<application>RPM</application> ignore this error, use the
<command>--replacefiles</command> option:
+ </para>
+ <synopsis><command>rpm -Uvh --replacefiles
<replaceable>package.rpm</replaceable></command></synopsis>
</section>
- <section
- id="s3-rpm-unresolved-dependency">
- <title>Unresolved Dependency</title>
+ <section id="s3-rpm-unresolved-dependency">
+ <title>Satisfying Unresolved Dependencies</title>
<indexterm>
<primary>RPM</primary>
<secondary>dependencies</secondary>
@@ -264,69 +276,61 @@ with file from package bar-3.1.1.&PKGOS;.x86_64</screen>
<primary>packages</primary>
<secondary>dependencies</secondary>
</indexterm>
- <para>RPM packages may sometimes depend on other
packages<indexterm><primary>RPM</primary>
- <secondary>failed dependencies</secondary>
- </indexterm>
- <indexterm>
- <primary>packages</primary>
- <secondary>RPM</secondary>
- <tertiary>failed dependencies</tertiary>
- </indexterm>, which means that they require other packages to be
installed to run properly. If you try to install a package which has an unresolved
dependency, output similar to the following is displayed:</para>
- <!-- Silas: original format:
- <screen> error: Failed dependencies: bar.so.2 is needed by foo-1.0-1
Suggested resolutions: bar-2.0.20-3.i386.rpm</screen>-->
- <screen>error: Failed dependencies:
- bar.so.3()(64bit) is needed by foo-1.0-1.&PKGOS;.x86_64</screen>
- <para>If you are installing a package from the &MAJOROS; installation
media, such as from a CD-ROM or DVD, the dependencies may be available. Find the suggested
package(s) on the &MAJOROS; installation media or on one of the active &MAJOROS;
mirrors and add it to the command:</para>
- <screen>
-<command>rpm -Uvh foo-1.0-1.&PKGOS;.x86_64.rpm
   bar-3.1.1.&PKGOS;.x86_64.rpm</command>
- </screen>
- <para>If installation of both packages is successful, output similar to the
following is displayed:</para>
- <screen>Preparing...
########################################### [100%]
- 1:foo ########################################### [ 50%]
- 2:bar ###########################################
[100%]</screen>
- <para>You can try the <option>--whatprovides</option> option to
determine which package contains the required file.</para>
- <screen>
-<command>rpm -q --whatprovides "bar.so.3"</command>
- </screen>
- <para>If the package that contains
<filename>bar.so.3</filename> is in the RPM database, the name of the package
is displayed:</para>
- <screen>bar-3.1.1.&PKGOS;.i586.rpm</screen>
- <warning
- id="warning-install-Warning-Forcing_Package_Installation">
- <title>Warning: Forcing Package Installation</title>
- <para>Although we can <emphasis>force</emphasis>
- <command>rpm</command> to install a package that gives us a
<computeroutput>Failed dependencies</computeroutput> error (using the
<option>--nodeps</option> option), this is
<emphasis>not</emphasis> recommended, and will usually result in the installed
package failing to run. Installing or removing packages with <command>rpm
--nodeps</command> can cause applications to misbehave and/or crash, and can cause
serious package management problems or, possibly, system failure. For these reasons, it is
best to heed such warnings; the package manager—whether
<application>RPM</application>, <application>Yum</application> or
<application>PackageKit</application>—shows us these warnings and suggests
possible fixes because accounting for dependencies is critical. The
<application>Yum</application> package manager can perform dependency
resolution and fetch dependencies from online repositories, making it safer, easier and
smarter than forcing <command>rpm</command> to car
ry out actions without regard to resolving dependencies.</para>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>failed dependencies</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ <tertiary>failed dependencies</tertiary>
+ </indexterm>
+ <para>
+ <application>RPM</application> packages sometimes depend on other
packages, which means that they require other packages to be installed to run properly. If
you try to install a package that has an unresolved dependency, a message about a failed
dependency is displayed.
+ </para>
+ <para>
+ Find the suggested package(s) on the &MAJOROS; installation media or on one
of the active &MAJOROS; mirrors and add it to the installation command. To determine
which package contains the required file, use the
<option>--whatprovides</option> option:
+ </para>
+ <synopsis><command>rpm -q --whatprovides
"<replaceable>required_file</replaceable>"</command></synopsis>
+ <para>
+ If the package that contains
<replaceable>required_file</replaceable> is in the
<application>RPM</application> database, the name of the package is
displayed.
+ </para>
+ <warning id="warning-Forcing_Package_Installation">
+ <title>Warning</title>
+ <para>
+ Although you can <emphasis>force</emphasis>
<command>rpm</command> to install a package that has an unresolved dependency
(using the <option>--nodeps</option> option), this is
<emphasis>not</emphasis> recommended and will usually result in the installed
software failing to run. Installing packages with <option>--nodeps</option>
can cause applications to misbehave or terminate unexpectedly. It can also cause serious
package-management problems or system failure. For these reasons, heed the warnings about
missing dependencies. The <application>Yum</application> package manager
performs automatic dependency resolution and fetches dependencies from on-line
repositories.
+ </para>
</warning>
</section>
- </section>
- <section
- id="sec-Configuration_File_Changes">
- <title>Configuration File Changes</title>
- <indexterm>
- <primary>RPM</primary>
- <secondary>configuration file changes</secondary>
- </indexterm>
- <indexterm>
- <primary>packages</primary>
- <secondary>RPM</secondary>
- <tertiary>configuration file changes</tertiary>
- </indexterm>
- <para>Because RPM performs intelligent upgrading of packages with
configuration files<indexterm><primary>RPM</primary>
+ <section id="sec-Configuration_File_Changes">
+ <title>Preserving Changes in Configuration Files</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>configuration file changes</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>RPM</secondary>
+ <tertiary>configuration file changes</tertiary>
+ </indexterm>
+ <indexterm><primary>RPM</primary>
<secondary>configuration file changes</secondary>
<tertiary>conf.rpmsave</tertiary>
- </indexterm>, you may see one or the other of the following
messages:</para>
- <screen>saving /etc/foo.conf as /etc/foo.conf.rpmsave</screen>
- <para>This message means that changes you made to the configuration file may
not be <emphasis>forward-compatible</emphasis> with the new configuration file
in the package, so RPM saved your original file and installed a new one. You should
investigate the differences between the two configuration files and resolve them as soon
as possible, to ensure that your system continues to function properly.</para>
- <para>Alternatively, RPM may save the package's
<emphasis>new</emphasis> configuration file as, for example,
<filename>foo.conf.rpmnew</filename>, and leave the configuration file you
modified untouched. You should still resolve any conflicts between your modified
configuration file and the new one, usually by merging changes from the old one to the new
one with a <command>diff</command> program.</para>
- <para>If you attempt to upgrade to a package with an
<emphasis>older</emphasis> version number (that is, if a higher version of the
package is already installed), the output is similar to the following:</para>
- <screen>package foo-2.0-1.&PKGOS;.x86_64.rpm (which is newer than
foo-1.0-1) is already installed</screen>
- <para>To force RPM to upgrade anyway, use the
<command>--oldpackage</command> option:</para>
- <screen>
-<command>rpm -Uvh --oldpackage foo-1.0-1.&PKGOS;.x86_64.rpm</command>
- </screen>
+ </indexterm>
+ <para>
+ Because <application>RPM</application> performs intelligent
upgrading of packages with configuration files, you may see the following message:
+ </para>
+ <screen>saving
<replaceable>/etc/configuration_file.conf</replaceable> as
<replaceable>/etc/configuration_file.conf</replaceable>.rpmsave</screen>
+ <para>
+ This message means that the changes you made to the configuration file may not
be <emphasis>forward-compatible</emphasis> with the new configuration file in
the package, so <application>RPM</application> saved your original file and
installed a new one. You should investigate the differences between the two configuration
files and resolve them as soon as possible to ensure that your system continues to
function properly.
+ </para>
+ <para>
+ Alternatively, <application>RPM</application> may save the
package's <emphasis>new</emphasis> configuration file as, for example,
<filename><replaceable>configuration_file.conf</replaceable>.rpmnew</filename>
and leave the configuration file you modified untouched. You should still resolve any
conflicts between your modified configuration file and the new one, usually by merging
changes from the old one to the new one, for example using the
<command>diff</command> program.
+ </para>
+ </section>
</section>
- <section
- id="s2-rpm-uninstalling">
- <title>Uninstalling</title>
+ <section id="s2-rpm-uninstalling">
+ <title>Uninstalling Packages</title>
<indexterm>
<primary>RPM</primary>
<secondary>uninstalling</secondary>
@@ -345,36 +349,33 @@ with file from package bar-3.1.1.&PKGOS;.x86_64</screen>
<secondary>RPM</secondary>
<tertiary>removing</tertiary>
</indexterm>
- <para>Uninstalling a package is just as simple as installing one. Type the
following command at a shell prompt:</para>
- <screen>rpm -e foo</screen>
+ <para>
+ Uninstalling a package is just as simple as installing one. Type the following
command at a shell prompt as <systemitem
class="username">root</systemitem>:
+ </para>
+ <synopsis><command>rpm -e
<replaceable>package</replaceable></command></synopsis>
<note>
<title>rpm -e and package name errors</title>
- <para>Notice that we used the package
<emphasis>name</emphasis>
- <filename>foo</filename>, not the name of the original package
<emphasis>file</emphasis>,
<filename>foo-1.0-1.&PKGOS;.x86_64</filename>. If you attempt to uninstall
a package using the <command>rpm -e</command> command and the original full
file name, you will receive a package name error.</para>
+ <para>
+ Note that the command expects only the package
<emphasis>name</emphasis>, not the name of the original package
<emphasis>file</emphasis>. If you attempt to uninstall a package using the
<command>rpm -e</command> command and provide the original full file
name, you receive a package-name error.
+ </para>
</note>
<para>You can encounter dependency errors when uninstalling a package if
another installed package depends on the one you are trying to remove. For
example:</para>
- <screen>
-<command>rpm -e ghostscript</command>
+ <screen>~]# <command>rpm -e ghostscript</command>
error: Failed dependencies:
- libgs.so.8()(64bit) is needed by (installed) libspectre-0.2.2-3.&PKGOS;.x86_64
- libgs.so.8()(64bit) is needed by (installed) foomatic-4.0.3-1.&PKGOS;.x86_64
- libijs-0.35.so()(64bit) is needed by (installed) gutenprint-5.2.4-5.&PKGOS;.x86_64
- ghostscript is needed by (installed)
printer-filters-1.1-4.&PKGOS;.noarch</screen>
- <para>Similar to how we searched for a shared object library (i.e. a
<filename><replaceable><library_name></replaceable>.so.<replaceable><number></replaceable>
- </filename> file) in <xref
- linkend="s3-rpm-unresolved-dependency"/>, we can search for a
64-bit shared object library using this exact syntax (and making sure to quote the file
name):</para>
- <screen>~]# <command>rpm -q --whatprovides
"libgs.so.8()(64bit)"</command>
-ghostscript-8.70-1.&PKGOS;.x86_64</screen>
- <warning
- id="warning-uninstall-Warning-Forcing_Package_Installation">
+ ghostscript is needed by (installed) ghostscript-cups-9.07-16.&PKGOS;.x86_64
+ ghostscript is needed by (installed) foomatic-4.0.9-6.&PKGOS;.x86_64
+ libgs.so.9()(64bit) is needed by (installed)
libspectre-0.2.7-4.&PKGOS;.x86_64
+ libijs-0.35.so()(64bit) is needed by (installed)
gutenprint-5.2.9-15.&PKGOS;.x86_64
+ libijs-0.35.so()(64bit) is needed by (installed)
cups-filters-1.0.35-15.&PKGOS;.x86_64</screen>
+ <warning
id="warning-uninstall-Warning-Forcing_Package_Installation">
<title>Warning: Forcing Package Installation</title>
- <para>Although we can <emphasis>force</emphasis>
- <command>rpm</command> to remove a package that gives us a
<computeroutput>Failed dependencies</computeroutput> error (using the
<option>--nodeps</option> option), this is
<emphasis>not</emphasis> recommended, and may cause harm to other installed
applications. Installing or removing packages with <command>rpm
--nodeps</command> can cause applications to misbehave and/or crash, and can cause
serious package management problems or, possibly, system failure. For these reasons, it is
best to heed such warnings; the package manager—whether
<application>RPM</application>, <application>Yum</application> or
<application>PackageKit</application>—shows us these warnings and suggests
possible fixes because accounting for dependencies is critical. The
<application>Yum</application> package manager can perform dependency
resolution and fetch dependencies from online repositories, making it safer, easier and
smarter than forcing <command>rpm</command> to carry out actions w
ithout regard to resolving dependencies.</para>
+ <para>
+ Although you can <emphasis>force</emphasis>
<command>rpm</command> to uninstall a package that has unresolved dependencies
(using the <option>--nodeps</option> option), this is
<emphasis>not</emphasis> recommended. Removing packages with
<option>--nodeps</option> can cause applications from the packages whose
dependencies are removed to misbehave or terminate unexpectedly. It can also cause serious
package-management problems or system failure. For these reasons, heed the warnings about
failed dependencies.
+ </para>
</warning>
</section>
- <section
- id="s2-rpm-freshening">
- <title>Freshening</title>
+ <section id="s2-rpm-freshening">
+ <title>Freshening Packages</title>
<indexterm>
<primary>RPM</primary>
<secondary>freshening</secondary>
@@ -384,21 +385,23 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<secondary>RPM</secondary>
<tertiary>freshening</tertiary>
</indexterm>
- <para>Freshening is similar to upgrading, except that only existent packages
are upgraded. Type the following command at a shell prompt:</para>
- <screen>
-<command>rpm -Fvh foo-2.0-1.&PKGOS;.x86_64.rpm</command>
- </screen>
- <para>RPM's freshen option checks the versions of the packages specified
on the command line against the versions of packages that have already been installed on
your system. When a newer version of an already-installed package is processed by
RPM's freshen option, it is upgraded to the newer version. However, RPM's freshen
option does not install a package if no previously-installed package of the same name
exists. This differs from RPM's upgrade option, as an upgrade
<emphasis>does</emphasis> install packages whether or not an older version of
the package was already installed.</para>
- <para>Freshening works for single packages or package groups. If you have
just downloaded a large number of different packages, and you only want to upgrade those
packages that are already installed on your system, freshening does the job. Thus, you do
not have to delete any unwanted packages from the group that you downloaded before using
RPM.</para>
- <para>In this case, issue the following with the
<filename>*.rpm</filename> glob:</para>
- <screen>
-<command>rpm -Fvh *.rpm</command>
- </screen>
- <para>RPM then automatically upgrades only those packages that are already
installed.</para>
+ <para>
+ Freshening is similar to upgrading, except that only installed packages are
upgraded. Type the following command at a shell prompt as <systemitem
class="username">root</systemitem>:
+ </para>
+ <synopsis><command>rpm -Fvh
<replaceable>package.rpm</replaceable></command></synopsis>
+ <para>
+ The <option>-F</option> (or <option>--freshen</option>)
option compares the versions of the packages specified on the command line with the
versions of packages that are already installed on the system. When a newer version of an
already-installed package is processed by the <option>--freshen</option>
option, it is upgraded to the newer version. However, the
<option>--freshen</option> option does not install a package if no
previously-installed package of the same name exists. This differs from regular upgrading,
as an upgrade installs all specified packages regardless of whether or not older versions
of the packages are already installed.
+ </para>
+ <para>
+ Freshening works for single packages or package groups. For example, freshening
can help if you download a large number of different packages, and you only want to
upgrade those packages that are already installed on the system. In this case, issue the
following command with the <filename>*.rpm</filename> global expression:
+ </para>
+ <screen>~]# <command>rpm -Fvh
*.rpm</command></screen>
+ <para>
+ <application>RPM</application> then automatically upgrades only those
packages that are already installed.
+ </para>
</section>
- <section
- id="s2-rpm-querying">
- <title>Querying</title>
+ <section id="s2-rpm-querying">
+ <title>Querying Packages</title>
<indexterm>
<primary>RPM</primary>
<secondary>querying</secondary>
@@ -408,60 +411,21 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<secondary>RPM</secondary>
<tertiary>querying</tertiary>
</indexterm>
- <para>The RPM database stores information about all RPM packages installed in
your system. It is stored in the directory <filename>/var/lib/rpm/</filename>,
and is used to query what packages are installed, what versions each package is, and to
calculate any changes to any files in the package since installation, among other use
cases.</para>
- <para>To query this database, use the <command>-q</command>
option. The <command>rpm -q <replaceable>package name</replaceable>
- </command> command displays the package name, version, and release number
of the installed package
<replaceable><package_name></replaceable>. For example, using
<command>rpm -q tree</command> to query installed package
<filename>tree</filename> might generate the following output:</para>
- <screen>tree-1.5.2.2-4.&PKGOS;.x86_64</screen>
- <para>You can also use the following <emphasis>Package Selection
Options</emphasis> (which is a subheading in the RPM man page: see
<command>man rpm</command> for details) to further refine or qualify your
query:</para>
- <itemizedlist>
- <listitem>
- <para>
- <command>-a</command> — queries all currently installed
packages.</para>
- </listitem>
- <listitem>
- <para>
- <command>-f
<filename><replaceable><file_name></replaceable>
- </filename>
- </command> — queries the RPM database for which package owns
<filename><replaceable><file_name></replaceable>
- </filename>. Specify the absolute path of the file (for example,
<command>rpm -qf <filename>/bin/ls</filename>
- </command> instead of <command>rpm -qf
ls</command>).</para>
- </listitem>
- <listitem>
- <para>
- <command>-p
<filename><replaceable><package_file></replaceable>
- </filename>
- </command> — queries the uninstalled package
<filename><replaceable><package_file></replaceable>
- </filename>.</para>
- </listitem>
- </itemizedlist>
- <para>There are a number of ways to specify what information to display about
queried packages. The following options are used to select the type of information for
which you are searching. These are called the <emphasis>Package Query
Options</emphasis>.</para>
- <itemizedlist>
- <listitem>
- <para>
- <command>-i</command> displays package information including
name, description, release, size, build date, install date, vendor, and other
miscellaneous information.</para>
- </listitem>
- <listitem>
- <para>
- <command>-l</command> displays the list of files that the package
contains.</para>
- </listitem>
- <listitem>
- <para>
- <command>-s</command> displays the state of all the files in the
package.</para>
- </listitem>
- <listitem>
- <para>
- <command>-d</command> displays a list of files marked as
documentation (man pages, info pages, READMEs, etc.) in the package.</para>
- </listitem>
- <listitem>
- <para>
- <command>-c</command> displays a list of files marked as
configuration files. These are the files you edit after installation to adapt and
customize the package to your system (for example,
<filename>sendmail.cf</filename>, <filename>passwd</filename>,
<filename>inittab</filename>, etc.).</para>
- </listitem>
- </itemizedlist>
- <para>For options that display lists of files, add
<command>-v</command> to the command to display the lists in a familiar
<command>ls -l</command> format.</para>
+ <para>
+ The <application>RPM</application> database stores information about
all <application>RPM</application> packages installed on the system. It is
stored in the <filename>/var/lib/rpm/</filename> directory and is used for
many things, including querying what packages are installed, what version each package is,
and for calculating changes to files in packages since their installation. To query this
database, use the <command>rpm</command> command with the
<option>-q</option> (or <option>--query</option>) option:
+ </para>
+ <synopsis><command>rpm -q
<replaceable>package_name</replaceable></command></synopsis>
+ <para>
+ This command displays the package name, version, and release number of the
installed package <replaceable>package_name</replaceable>. For example:
+ </para>
+ <screen>~]$ <command>rpm -q tree</command>
+tree-1.7.0-3.&PKGOS;.x86_64</screen>
+ <para>
+ See the <computeroutput>Package Selection Options</computeroutput>
subheading in the
<citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>
manual page for a list of options that can be used to further refine or qualify your
query. Use options listed below the <computeroutput>Package Query
Options</computeroutput> subheading to specify what information to display about the
queried packages.
+ </para>
</section>
- <section
- id="s2-rpm-verifying">
- <title>Verifying</title>
+ <section id="s2-rpm-verifying">
+ <title>Verifying Packages</title>
<indexterm>
<primary>RPM</primary>
<secondary>verifying</secondary>
@@ -471,123 +435,240 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<secondary>RPM</secondary>
<tertiary>verifying</tertiary>
</indexterm>
- <para>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 file size, MD5 sum, permissions, type, owner, and group of each
file.</para>
- <para>The command <command>rpm -V</command> verifies a package.
You can use any of the <emphasis>Verify Options</emphasis> listed for querying
to specify the packages you wish to verify. A simple use of verifying is
<command>rpm -V tree</command>, which verifies that all the files in the
<command>tree</command> package are as they were when they were originally
installed. For example:</para>
- <itemizedlist
- mark="bullet">
- <listitem>
- <para>To verify a package containing a particular file:</para>
- <screen>
-<command>rpm -Vf /usr/bin/tree</command>
- </screen>
- <para>In this example, <filename>/usr/bin/tree</filename> is
the absolute path to the file used to query a package.</para>
- </listitem>
- <listitem>
- <para>To verify ALL installed packages throughout the system (which will
take some time):</para>
- <screen>
-<command>rpm -Va</command>
- </screen>
- </listitem>
- <listitem>
- <para>To verify an installed package against an RPM package
file:</para>
- <screen>
-<command>rpm -Vp tree-1.5.2.2-4.&PKGOS;.x86_64.rpm</command>
- </screen>
- <para>This command can be useful if you suspect that your RPM database is
corrupt.</para>
- </listitem>
- </itemizedlist>
- <para>If everything verified properly, there is no output. If there are any
discrepancies, they are displayed. The format of the output is a string of eight
characters (a "<computeroutput>c</computeroutput>" denotes a
configuration file) and then the file name. Each of the eight 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
(<computeroutput>.</computeroutput>) means the test passed. The following
characters denote specific discrepancies:</para>
+ <para>
+ Verifying a package is comparing information about files on the system installed
from a package with the same information from the original package. Among other
parameters, verifying compares the file size, MD5 sum, permissions, type, owner, and the
group of each file.
+ </para>
+ <para>
+ Use the <command>rpm</command> command with the
<option>-V</option> (or <option>--verify</option>) option to
verify packages. For example:
+ </para>
+ <screen>~]$ <command>rpm -V
tree</command></screen>
+ <para>
+ See the <computeroutput>Package Selection Options</computeroutput>
subheading in the
<citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>
manual page for a list of options that can be used to further refine or qualify your
query. Use options listed below the <computeroutput>Verify
Options</computeroutput> subheading to specify what characteristics to verify in the
queried packages.
+ </para>
+ <para>
+ If everything verifies properly, there is no output. If there are any
discrepancies, they are displayed. The output consists of lines similar to these:
+ </para>
+ <screen>~]# <command>rpm -V abrt</command>
+S.5....T. c /etc/abrt/abrt.conf
+.M....... /var/spool/abrt-upload</screen>
+ <para>
+ The format of the output is a string of nine characters followed by an optional
attribute marker and the name of the processed file.
+ </para>
+ <para>
+ The first nine characters are the results of tests performed on the file. Each
test is the comparison of one attribute of the file to the value of that attribute as
recorded in the <application>RPM</application> database. A single period
(<computeroutput>.</computeroutput>) means the test passed, and the
question-mark character (<computeroutput>?</computeroutput>) signifies that
the test could not be performed. The following table lists symbols that denote specific
discrepancies:
+ </para>
+ <table id="tab-rpm-verification-symbols">
+ <title>RPM Verification Symbols</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>verification</secondary>
+ </indexterm>
+ <tgroup cols="2">
+ <colspec colname="symbol" colnum="1"
colwidth="20*"/>
+ <colspec colname="description" colnum="2"
colwidth="80*"/>
+ <thead>
+ <row>
+ <entry>Symbol</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><computeroutput>S</computeroutput></entry>
+ <entry>file size differs</entry>
+ </row>
+ <row>
+ <entry><computeroutput>M</computeroutput></entry>
+ <entry>mode differs (includes permissions and file
type)</entry>
+ </row>
+ <row>
+ <entry><computeroutput>5</computeroutput></entry>
+ <entry>digest (formerly MD5 sum) differs</entry>
+ </row>
+ <row>
+ <entry><computeroutput>D</computeroutput></entry>
+ <entry>device major/minor number mismatch</entry>
+ </row>
+ <row>
+ <entry><computeroutput>L</computeroutput></entry>
+
<entry><citerefentry><refentrytitle>readLink</refentrytitle><manvolnum>2</manvolnum></citerefentry>
path mismatch</entry>
+ </row>
+ <row>
+ <entry><computeroutput>U</computeroutput></entry>
+ <entry>user ownership differs</entry>
+ </row>
+ <row>
+ <entry><computeroutput>G</computeroutput></entry>
+ <entry>group ownership differs</entry>
+ </row>
+ <row>
+ <entry><computeroutput>T</computeroutput></entry>
+ <entry>mtime differs</entry>
+ </row>
+ <row>
+ <entry><computeroutput>P</computeroutput></entry>
+ <entry>capabilities differ</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ The attribute marker, if present, describes the purpose of the given file. The following
table lists the available attribute markers:
+ </para>
+ <table id="tab-rpm-verification-markers">
+ <title>RPM Verification Symbols</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>verification</secondary>
+ </indexterm>
+ <tgroup cols="2">
+ <colspec colname="marker" colnum="1"
colwidth="20*"/>
+ <colspec colname="description" colnum="2"
colwidth="80*"/>
+ <thead>
+ <row>
+ <entry>Marker</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><computeroutput>c</computeroutput></entry>
+ <entry>configuration file</entry>
+ </row>
+ <row>
+ <entry><computeroutput>d</computeroutput></entry>
+ <entry>documentation file</entry>
+ </row>
+ <row>
+ <entry><computeroutput>l</computeroutput></entry>
+ <entry>license file</entry>
+ </row>
+ <row>
+ <entry><computeroutput>r</computeroutput></entry>
+ <entry>readme file</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ If you see any output, use your best judgment to determine if you should remove
the package, reinstall it, or fix the problem in another way.
+ </para>
+ </section>
+ </section>
+ <section id="s1-find-verify-rpm">
+ <title>Finding and Verifying RPM Packages</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>finding and verifying RPM packages</secondary>
+ </indexterm>
+ <para>
+ Before using any <application>RPM</application> packages, you must know
where to find them and be able to verify if you can trust them.
+ </para>
+ <section id="s2-rpm-finding">
+ <title>Finding RPM Packages</title>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>finding Fedora RPM packages</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>finding Fedora RPM packages</secondary>
+ </indexterm>
+ <para>
+ Although there are many <application>RPM</application> repositories
on the Internet, for security and compatibility reasons, you should consider installing
only official Fedora-provided RPM packages. The following is a list of sources for
<application>RPM</application> packages:
+ </para>
<itemizedlist>
<listitem>
<para>
- <computeroutput>5</computeroutput> — MD5 checksum</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>S</computeroutput> — file size</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>L</computeroutput> — symbolic link</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>T</computeroutput> — file modification
time</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>D</computeroutput> — device</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>U</computeroutput> — user</para>
- </listitem>
- <listitem>
- <para>
- <computeroutput>G</computeroutput> — group</para>
+ <indexterm>
+ <primary>&MAJOROS; installation media</primary>
+ <secondary>installable packages</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>&MAJOROS; installation media</secondary>
+ </indexterm>
+ Official &MAJOROS; installation media.
+ </para>
</listitem>
<listitem>
<para>
- <computeroutput>M</computeroutput> — mode (includes permissions
and file type)</para>
+ <indexterm>
+ <primary>initial RPM repositories</primary>
+ <secondary>installable packages</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>packages</primary>
+ <secondary>initial RPM repositories</secondary>
+ </indexterm>
+ Official <application>RPM</application> repositories provided
with the <application>Yum</application> package manager. See <xref
linkend="ch-yum"/> for details on how to use the official &MAJOROS;
package repositories.
+ </para>
</listitem>
+
+
+
<listitem>
<para>
- <computeroutput>?</computeroutput> — unreadable file (file
permission errors, for example)</para>
+ Unofficial, third-party repositories not affiliated with &OSORG; also
provide RPM packages.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ When considering third-party repositories for use with your &MAJOROS;
system, pay close attention to the repository's web site with regard to package
compatibility before adding the repository as a package source. Alternate package
repositories may offer different, incompatible versions of the same software, including
packages already included in the &MAJOROS; repositories.
+ </para>
+ </important>
</listitem>
</itemizedlist>
- <para>If you see any output, use your best judgment to determine if you
should remove the package, reinstall it, or fix the problem in another way.</para>
- </section>
- </section>
- <section
- id="s1-check-rpm-sig">
- <title>Checking a Package's Signature</title>
- <indexterm>
- <primary>RPM</primary>
- <secondary>md5sum</secondary>
- </indexterm>
- <para>To verify that a package has not been corrupted or tampered with, examine
the checksum by typing the following command at a shell prompt (where
<replaceable><rpm_file></replaceable> is the file name of the
RPM package):</para>
- <screen><command>rpm -K --nosignature
<replaceable><rpm_file></replaceable></command></screen>
- <para>If the message
<computeroutput><replaceable><rpm_file></replaceable>:
sha1 md5 OK</computeroutput> (specifically the
<computeroutput>OK</computeroutput> part of it) is displayed, the file was not
corrupted during download. To see a more verbose message, replace
<option>-K</option> with <option>-Kvv</option> in the
command.</para>
- <para>On the other hand, how trustworthy is the developer who created the
package? If the package is <firstterm>signed</firstterm> with the
developer's GnuPG <firstterm>key</firstterm>, you know that the developer
really is who they say they are.</para>
- <indexterm>
- <primary>RPM</primary>
- <secondary>GnuPG</secondary>
- </indexterm>
- <indexterm>
- <primary>RPM</primary>
- <secondary>checking package signatures</secondary>
- </indexterm>
- <indexterm>
- <primary>GnuPG</primary>
- <secondary>checking RPM package signatures</secondary>
- </indexterm>
- <para>An RPM package can be signed using <firstterm>GNU Privacy
Guard</firstterm> (or GnuPG), to help you make certain your downloaded package is
trustworthy.</para>
- <para>GnuPG is a tool for secure communication; it is a complete and free
replacement for the encryption technology of PGP, an electronic privacy program. With
GnuPG, you can authenticate the validity of documents and encrypt/decrypt data to and from
other recipients. GnuPG is capable of decrypting and verifying PGP
5.<replaceable>x</replaceable> files as well.</para>
- <para>During installation, GnuPG is installed by default, which enables you to
immediately start using it to verify any packages that you download from the Fedora
Project. Before doing so, you first need to import the correct Fedora key.</para>
- <section
- id="s2-keys-importing">
- <title>Importing Keys</title>
- <para>Fedora GnuPG keys are located in the
<filename>/etc/pki/rpm-gpg/</filename> directory. To verify a Fedora Project
package, first import the correct key based on your processor architecture:</para>
- <screen><command>rpm --import
/etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-<replaceable>x86_64</replaceable></command></screen>
- <para>To display a list of all keys installed for RPM verification, execute
the command:</para>
- <screen><command>rpm -qa gpg-pubkey*</command></screen>
- <para>For the Fedora Project key, the output states:</para>
- <screen>gpg-pubkey-57bbccba-4a6f97af</screen>
- <para>To display details about a specific key, use <command>rpm
-qi</command> followed by the output from the previous command:</para>
- <screen><command>rpm -qi
gpg-pubkey-57bbccba-4a6f97af</command></screen>
</section>
- <section
- id="s2-keys-checking">
- <title>Verifying Signature of Packages</title>
- <para>To check the GnuPG signature of an RPM file after importing the
builder's GnuPG key, use the following command (replace
<replaceable><rpm_file></replaceable> with the file name of the
RPM package):</para>
- <screen><command>rpm -K
<replaceable><rpm_file></replaceable></command></screen>
- <para>If all goes well, the following message is displayed:
<computeroutput>rsa sha1 (md5) pgp md5 OK</computeroutput>. This means that
the signature of the package has been verified, that it is not corrupt, and is therefore
safe to install and use.</para>
- <para>For more information, including a list of currently-used Fedora Project
keys and their fingerprints, refer to <ulink
url="http://fedoraproject.org/en/keys"/>.</para>
+ <section id="s1-check-rpm-sig">
+ <title>Checking Package Signatures</title>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>GnuPG</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>checking package signatures</secondary>
+ </indexterm>
+ <indexterm>
+ <primary>GnuPG</primary>
+ <secondary>checking RPM package signatures</secondary>
+ </indexterm>
+ <para>
+ <application>RPM</application> packages can be signed using
<application>GNU Privacy Guard</application> (or
<application>GPG</application>), which helps you make certain that downloaded
packages are trustworthy. <application>GPG</application> is a tool for secure
communication. With <application>GPG</application>, you can authenticate the
validity of documents and encrypt or decrypt data.
+ </para>
+ <para>
+ To verify that a package has not been corrupted or tampered with, check its
<application>GPG</application> signature by using the
<command>rpmkeys</command> command with the <option>-K</option>
(or <option>--checksig</option>) option:
+ </para>
+ <synopsis><command>rpmkeys -K
<replaceable>package.rpm</replaceable></command></synopsis>
+ <para>
+ Note that the <application>Yum</application> package manager performs
automatic checking of <application>GPG</application> signatures during
installations and upgrades.
+ </para>
+ <para>
+ <application>GPG</application> is installed by default, as well as a
set of Red Hat keys for verifying packages. To import additional keys for use
with <application>RPM</application>, see <xref
linkend="s2-keys-importing"/>.
+ </para>
+ <section id="s2-keys-importing">
+ <title>Importing GPG Keys</title>
+ <para>
+ To verify Red Hat packages, a Red Hat
<application>GPG</application> key needs to be installed. A set of basic keys
is installed by default. To view a list of installed keys, execute the following command
at a shell prompt:
+ </para>
+ <screen>~]$ <command>rpm -qa
gpg-pubkey*</command></screen>
+ <para>
+ To display details about a specific key, use
<command>rpm -qi</command> followed by the output from the previous
command. For example:
+ </para>
+ <screen>~]$ <command>rpm -qi
gpg-pubkey-fd431d51-4ae0493b</command></screen>
+ <para>
+ Use the <command>rpmkeys</command> command with the
<option>--import</option> option to install a new key for use with
<application>RPM</application>. The default location for storing
<application>RPM</application> <acronym>GPG</acronym> keys is the
<filename class="directory">/etc/pki/rpm-gpg/</filename> directory.
To import new keys, use a command like the following as <systemitem
class="username">root</systemitem>:
+ </para>
+ <screen>~]# <command>rpmkeys --import
/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release</command></screen>
+ <para>
+ See the <ulink
url="https://access.redhat.com/security/team/key/">Product Signing (GPG)
Keys</ulink> article on the Red Hat Customer Portal for additional
information about Red Hat package-signing practices.
+ </para>
+ </section>
</section>
</section>
- <section
- id="s1-rpm-impressing">
- <title>Practical and Common Examples of RPM Usage</title>
+ <section id="s1-rpm-usage-examples">
+ <title>Common Examples of RPM Usage</title>
<indexterm>
<primary>RPM</primary>
<secondary>tips</secondary>
@@ -597,10 +678,14 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<secondary>RPM</secondary>
<tertiary>tips</tertiary>
</indexterm>
- <para>RPM is a useful tool for both managing your system and diagnosing and
fixing problems. The best way to make sense of all its options is to look at some
examples.</para>
+ <para>
+ <application>RPM</application> is a useful tool for both managing your
system and diagnosing and fixing problems. See the following examples for an overview of
some of the most-used options.
+ </para>
<itemizedlist>
<listitem>
- <para>Perhaps you have deleted some files by accident, but you are not sure
what you deleted. To verify your entire system and see what might be missing, you could
try the following command:</para>
+ <para>
+ To verify your entire system and see what files are missing, issue the
following command as <systemitem
class="username">root</systemitem>:
+ </para>
<indexterm>
<primary>RPM</primary>
<secondary>finding deleted files with</secondary>
@@ -609,13 +694,15 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<primary>packages</primary>
<secondary>finding deleted files from</secondary>
</indexterm>
- <screen>
-<command>rpm -Va</command>
- </screen>
- <para>If some files are missing or appear to have been corrupted, you
should probably either re-install the package or uninstall and then re-install the
package.</para>
+ <synopsis><command>rpm -Va</command></synopsis>
+ <para>
+ If some files are missing or appear corrupted, consider reinstalling relevant
packages.
+ </para>
</listitem>
<listitem>
- <para>At some point, you might see a file that you do not recognize. To
find out which package owns it, enter:</para>
+ <para>
+ To determine which package owns a file, enter:
+ </para>
<indexterm>
<primary>RPM</primary>
<secondary>determining file ownership with</secondary>
@@ -624,21 +711,18 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<primary>packages</primary>
<secondary>determining file ownership with</secondary>
</indexterm>
- <screen>
-<command>rpm -qf /usr/bin/ghostscript</command>
- </screen>
- <para>The output would look like the following:</para>
- <screen>ghostscript-8.70-1.&PKGOS;.x86_64</screen>
+ <synopsis><command>rpm -qf
<replaceable>file</replaceable></command></synopsis>
</listitem>
<listitem>
- <para>We can combine the above two examples in the following scenario. Say
you are having problems with <filename>/usr/bin/paste</filename>. You would
like to verify the package that owns that program, but you do not know which package owns
<command>paste</command>. Enter the following command,</para>
- <screen>
-<command>rpm -Vf /usr/bin/paste</command>
- </screen>
- <para>and the appropriate package is verified.</para>
+ <para>
+ To verify the package that owns a particular file, enter as <systemitem
class="username">root</systemitem>:
+ </para>
+ <synopsis><command>rpm -Vf
<replaceable>file</replaceable></command></synopsis>
</listitem>
<listitem>
- <para>Do you want to find out more information about a particular program?
You can try the following command to locate the documentation which came with the package
that owns that program:</para>
+ <para>
+ To locate documentation files that are a part of a package to which a file
belongs, enter:
+ </para>
<indexterm>
<primary>RPM</primary>
<secondary>documentation with</secondary>
@@ -651,34 +735,12 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<primary>documentation</primary>
<secondary>finding installed</secondary>
</indexterm>
- <screen>
-<command>rpm -qdf /usr/bin/free</command>
- </screen>
- <para>The output would be similar to the following:</para>
- <screen>/usr/share/doc/procps-ng/BUGS
-/usr/share/doc/procps-ng/FAQ
-/usr/share/doc/procps-ng/NEWS
-/usr/share/doc/procps-ng/TODO
-/usr/share/man/man1/free.1.gz
-/usr/share/man/man1/pgrep.1.gz
-/usr/share/man/man1/pkill.1.gz
-/usr/share/man/man1/pmap.1.gz
-/usr/share/man/man1/ps.1.gz
-/usr/share/man/man1/pwdx.1.gz
-/usr/share/man/man1/skill.1.gz
-/usr/share/man/man1/slabtop.1.gz
-/usr/share/man/man1/snice.1.gz
-/usr/share/man/man1/tload.1.gz
-/usr/share/man/man1/top.1.gz
-/usr/share/man/man1/uptime.1.gz
-/usr/share/man/man1/w.1.gz
-/usr/share/man/man1/watch.1.gz
-/usr/share/man/man5/sysctl.conf.5.gz
-/usr/share/man/man8/sysctl.8.gz
-/usr/share/man/man8/vmstat.8.gz</screen>
+ <synopsis><command>rpm -qdf
<replaceable>file</replaceable></command></synopsis>
</listitem>
<listitem>
- <para>You may find a new RPM, but you do not know what it does. To find
information about it, use the following command:</para>
+ <para>
+ To find information about a (non-installed) package file, use the following
command:
+ </para>
<indexterm>
<primary>RPM</primary>
<secondary>querying uninstalled packages</secondary>
@@ -687,26 +749,12 @@ ghostscript-8.70-1.&PKGOS;.x86_64</screen>
<primary>packages</primary>
<secondary>querying uninstalled</secondary>
</indexterm>
- <screen>
-<command>rpm -qip crontabs-1.10-31.&PKGOS;.noarch.rpm</command>
- </screen>
- <para>The output would be similar to the following:</para>
- <screen>Name : crontabs Relocations: (not
relocatable)
-Size : 2486 License: Public Domain and GPLv2
-Signature : RSA/SHA1, Tue 11 Aug 2009 01:11:19 PM CEST, Key ID 9d1cc34857bbccba
-Packager : Fedora Project
-Summary : Root crontab files used to schedule the execution of programs
-Description :
-The crontabs package contains root crontab files and directories.
-You will need to install cron daemon to run the jobs from the crontabs.
-The cron daemon such as cronie or fcron checks the crontab files to
-see when particular commands are scheduled to be executed. If commands
-are scheduled, it executes them.
-Crontabs handles a basic system function, so it should be installed on
-your system.</screen>
+ <synopsis><command>rpm -qip
<replaceable>package.rpm</replaceable></command></synopsis>
</listitem>
<listitem>
- <para>Perhaps you now want to see what files the
<filename>crontabs</filename> RPM package installs. You would enter the
following:</para>
+ <para>
+ To list files contained in a package, use:
+ </para>
<indexterm>
<primary>RPM</primary>
<secondary>querying for file list</secondary>
@@ -715,95 +763,68 @@ your system.</screen>
<primary>packages</primary>
<secondary>obtaining list of files</secondary>
</indexterm>
- <screen>
-<command>rpm -qlp crontabs-1.10-31.&PKGOS;.noarch.rpm</command>
- </screen>
- <para>The output is similar to the following:</para>
- <screen>/etc/cron.daily
-/etc/cron.hourly
-/etc/cron.monthly
-/etc/cron.weekly
-/etc/crontab
-/usr/bin/run-parts
-/usr/share/man/man4/crontabs.4.gz</screen>
+ <synopsis><command>rpm -qlp
<replaceable>package.rpm</replaceable></command></synopsis>
</listitem>
</itemizedlist>
- <para>These are just a few examples. As you use RPM, you may find more uses for
it.</para>
+ <para>
+ See the
<citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>
manual page for more options.
+ </para>
</section>
- <section
- id="s1-rpm-additional-resources">
+ <section id="s1-rpm-additional-resources">
<title>Additional Resources</title>
<indexterm>
<primary>RPM</primary>
<secondary>additional resources</secondary>
</indexterm>
- <para>RPM is an extremely complex utility with many options and methods for
querying, installing, upgrading, and removing packages. See the following resources to
learn more about RPM.</para>
- <section
- id="s2-rpm-installed-docs">
- <title>Installed Documentation</title>
- <itemizedlist>
- <listitem>
- <para>
- <command>rpm --help</command> — This command displays a quick
reference of RPM parameters.</para>
- </listitem>
- <listitem>
- <para>
- <command>man rpm</command> — The RPM man page gives more detail
about RPM parameters than the <command>rpm --help</command>
command.</para>
- </listitem>
- </itemizedlist>
- </section>
- <section
- id="s2-rpm-useful-websites">
- <title>Useful Websites</title>
- <itemizedlist>
- <indexterm>
- <primary>RPM</primary>
- <secondary>website</secondary>
- </indexterm>
- <listitem>
- <para>The RPM website — <ulink
-
url="http://www.rpm.org/">http://www.rpm.org/</ulink>
- </para>
- </listitem>
- <listitem>
- <para>The RPM mailing list can be subscribed to, and its archives read
from, here — <ulink
-
url="http://www.redhat.com/mailman/listinfo/rpm-list/">https...
- </para>
- </listitem>
- </itemizedlist>
- </section>
- <section
- id="s2-rpm-related-books">
- <title>Related Books</title>
+ <para>
+ <application>RPM</application> is a complex utility with many options
and methods for querying, installing, upgrading, and removing packages. See the following
resources to learn more about <application>RPM</application>.
+ </para>
+ <bridgehead id="brid-rpm-resources-installed"
renderas="sect2">Installed Documentation</bridgehead>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <command>rpm --help</command> — This command displays a quick
reference of <application>RPM</application> parameters.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+
<citerefentry><refentrytitle>rpm</refentrytitle><manvolnum>8</manvolnum></citerefentry>
— The <application>RPM</application> manual page offers an overview of all
available <application>RPM</application> parameters.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <bridgehead id="brid-rpm-resources-online"
renderas="sect2">Online Documentation</bridgehead>
+ <itemizedlist>
<indexterm>
<primary>RPM</primary>
- <secondary>book about</secondary>
+ <secondary>website</secondary>
</indexterm>
<indexterm>
- <primary>
- <citetitle>Fedora Hat RPM Guide</citetitle>
- </primary>
+ <primary>RPM</primary>
+ <secondary>online documentation</secondary>
</indexterm>
- <variablelist>
- <varlistentry>
- <term>
- <citetitle>Maximum RPM</citetitle> — <ulink
-
url="http://www.rpm.org/max-rpm/"/>
- </term>
- <listitem>
- <para>The <citetitle>Maximum RPM</citetitle> book, which
you can read online, covers everything from general RPM usage to building your own RPMs to
programming with rpmlib.</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term>
- <citetitle>Fedora RPM Guide</citetitle> — <ulink
-
url="http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/...
- </term>
- <listitem>
- <para>The <citetitle>Fedora RPM Guide</citetitle> by Eric
Foster-Johnson is an excellent resource on all details of the RPM package format and the
RPM package management utility.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </section>
+
+ <listitem>
+ <para>
+ The <application>RPM</application> website — <ulink
url="http://www.rpm.org/" />
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The <application>RPM</application> mailing list — <ulink
url="http://lists.rpm.org/mailman/listinfo/rpm-list" />
+ </para>
+ </listitem>
+ </itemizedlist>
+ <bridgehead id="brid-rpm-resources-also"
renderas="sect2">See Also</bridgehead>
+ <itemizedlist>
+ <indexterm>
+ <primary>RPM</primary>
+ <secondary>see also</secondary>
+ </indexterm>
+ <listitem>
+ <para>
+ <xref linkend="ch-yum" /> describes how to use the
<application>Yum</application> package manager to search, install, update, and
uninstall packages on the command line.
+ </para>
+ </listitem>
+ </itemizedlist>
</section>
</appendix>