Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

如何安装和升级一个RPM软件包

Solution In Progress - Updated -

Environment

  • Red Hat Enterprise Linux 4
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7

Issue

  • 如何安装和升级一个RPM软件包?
  • 如何升级一个RPM软件包?

Resolution

注意: 在 Red Hat Enterprise Linux 5 之后,由于 yum 能正确更新本地 yum 数据库, 所以相较于 yum,我们推荐您使用 rpm

如果您想安装某 RPM 包,您的系统里必需有这个要安装的 RPM 软件包文件。大多数人会从网站上下载 RPM 包。红帽客户门户网站会提供官方发行的所有 RPM 包。

rpm 主要用到以下两个参数用来安装或者升级 RPM 包。

  • -i 用来安装一个新的包。为了防止新内核无法启动,请用这个参数来安装及升级内核。

  • -U 用来升级 RPM 包,但是如果这个 RPM 包不在 RPM 数据库,则它会安装该包。

在 RPM 的 man 手册里您可以查到 rpm 的其它参数及用法。请在命令行里输入 man rpm 。以下是关于 -i 以及 -U 的说明:

INSTALL AND UPGRADE OPTIONS
    The general form of an rpm install command is

    rpm {-i|--install} [install-options] PACKAGE_FILE ...

    This installs a new package.

    The general form of an rpm upgrade command is

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

    This install the package or upgrades the package currently installed  to  a  newer
    version.   This  is the same as install, except all other version(s) of
    the package are removed after the new package is installed.

例:

注意: 这个例子假设您的系统某目录下有这个包。请您在有 RPM 文件的目录下执行以下 RPM 命令。

  • 请使用 -i 参数安装RPM 包。如前所述,您需要使用这个参数安装内核 RPM。这种情况下,为了防止新的内核无法启动,您需要暂时保留原内核。在这个例子里,首先使用 ls 命令检查新的 RPM 包的名字。然后查询 RPM 数据库查看已经安装了哪些内核包。您可以使用 rpm -q <package name> 命令查询,而不需包含其版本号。请使用以下命令安装 RPM 包:rpm -ivh <package name> 。注意 -v 参数会列出详细的安装信息,-h 参数会显示安装进度。最后,我们执行 RPM 的查询命令确认所安装的包是否已经存在。
# ls
kernel-2.4.21-15.0.3.EL.i686.rpm
kernel-smp-2.4.21-15.0.3.EL.i686.rpm
# rpm -q kernel; rpm -q kernel-smp
kernel-2.4.21-4.0.1.EL
kernel-2.4.21-15.0.2.EL
kernel-smp-2.4.21-4.0.1.EL
kernel-smp-2.4.21-15.0.2.EL
# rpm -ivh kernel-2.4.21-15.0.3.EL.i686.rpm
Preparing...                ########################################### [100%]
   1:kernel                 ########################################### [100%]
# rpm -ivh kernel-smp-2.4.21-15.0.3.EL.i686.rpm
Preparing...                ########################################### [100%]
   1:kernel-smp             ########################################### [100%]
# rpm -q kernel; rpm -q kernel-smp
kernel-2.4.21-4.0.1.EL
kernel-2.4.21-15.0.2.EL
kernel-smp-2.4.21-15.0.3.EL
  • 请使用 -U 参数升级 RPM 包。在这个例子里,首先使用 ls 命令检查新的 RPM 包的名字。然后通过执行 rpm -q <package name> 查询命令查看我们想安装的包是否存在于 RPM >数据库里。然后,执行以下命令 rpm -Uvh <package name> 安装包。注意 -v 参数会列出详细的安装信息,-h 参数会显示安装进度。最后,我们执行 RPM 的查询命令确认所安装的包是否已经存在。
# ls
httpd-2.0.46-32.ent.3.i386.rpm
mod_ssl-2.0.46-32.ent.3.i386.rpm
# rpm -q httpd; rpm -q mod_ssl
httpd-2.0.46-32.ent
mod_ssl-2.0.46-32.ent
# rpm -Uvh httpd-2.0.46-32.ent.3.i386.rpm mod_ssl-2.0.46-32.ent.3.i386.rpm
Preparing...                ########################################### [100%]
   1:httpd                  ########################################### [ 50%]
   2:mod_ssl                ########################################### [100%]
# rpm -q httpd; rpm -q mod_ssl
httpd-2.0.46-32.ent.3
mod_ssl-2.0.46-32.ent.3

注意 由于依赖关系问题,您需要同时安装 httpdmod_ssl 的 RPM 包。如果您只安装其中一个包,会出现如下报错:

# rpm -Uvh httpd-2.0.46-32.ent.3.i386.rpm
error: Failed dependencies:
        httpd = 2.0.46-32.ent is needed by (installed) mod_ssl-2.0.46-32.ent

注意: 此外,如果您通过红帽客户门户网站注册了机器,您可以参考How do I apply package updates from the Red Hat Network?安装/升级包。

注意: Red Hat Network (RHN) 已经被整统合到客户门户网站。
Welcome to the New Red Hat Network!

在 Red Hat Enterprise Linux 4 上升级包

现在,在 RHEL4 上,您只能找到 errata update 包。您可以手动下载和安装这些包,但是不能使用 up2date 命令,而且只有 RHEL4.9 可以下载。 此外,由于 RHEL4 已经进入生命周期的扩展生命周期阶段,已经不能再下载 errata 之外的升级包。

更多关于 RHEL4 EOL 的信息,请参考以下链接:
When is the end of life (EOL) support on RHEL 4?

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.