如何安装或升级 RPM 软件包?
Environment
- Red Hat Enterprise Linux 6, 7, 8, 9, 10
Issue
- 如何安装或升级 RPM 软件包?
- 如何升级
rpm
软件包?
Resolution
要安装 RPM 软件包,您首先需要具有要在系统上安装的 RPM 软件包。红帽客户门户网站(Red Hat Customer Portal)的 下载页中包含了所有 RPM 软件包。可以通过两种方式查找您感兴趣的软件包。
根据软件包名称进行浏览
在下载页中,选择 RPM 软件包搜索。您可以使用软件包搜索功能搜索所有软件包,无论是什么产品,但可以限制为搜素特定产品的软件包。
通过产品浏览
在下载页中,浏览您感兴趣的产品,然后选择"软件包"选项卡。例如,RHEL 7 服务器的软件包
备注:您需要具有包括相关软件包权利的有效产品订阅才能查看或下载软件包。
有关从客户门户网站下载软件包的更多信息,请参阅此解决方案:如何从客户门户网站手动下载 rpm 软件包?
安装或升级
rpm
命令有两个用于安装或升级 RPM 软件包的主要选项:
-
-i
用于安装一个新的软件包。在进行内核安装时始终这个选项(在升级时也可以使用)。 -
-U
用于升级 RPM 软件包,但如果相关软件包信息没有包括在 RPM 数据库中,它也会安装软件包。
RPM man page 提供了更多与使用和额外选项的信息。在命令行中输入 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 文件所在的当前工作目录中执行。
- 要安装 RPM 软件包,使用
-i
。如前所述,在安装内核 RPM 时使用此标志。在这种情况下,您可能需要至少临时在系统中保留旧的内核,以备新内核无法引导的情况。在这个示例中,我们首先使用ls
命令查看新 RPM 软件包的名称。然后,查询 RPM 数据库以查看已安装了哪个内核软件包。您不需要在查询中包含版本号,使用方法是:rpm -q
。我们可使用以下命令安装 RPM 软件包:
rpm -ivh
。请注意,
-v
选项将显示详细输出,-h
会显示哈希标记,它代表 RPM 升级的进度操作。最后,运行另一个 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-2.4.21-15.0.3.EL
kernel-smp-2.4.21-4.0.1.EL
kernel-smp-2.4.21-15.0.2.EL
kernel-smp-2.4.21-15.0.3.EL
- 要升级 RPM 软件包,使用
-U
。在这个示例中,使用ls
命令验证新软件包名称。然后,运行一个 RPM 查询来检查我们要安装的软件包是否存在于 RPM 数据库中:rpm -q
。接下来,使用以下命令执行 RPM 安装:
rpm -Uvh
。请注意,
-v
选项将显示详细输出,-h
会显示哈希标记,它代表 RPM 升级的进度操作。最后,运行另一个 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
备注:因为依赖关系的问题,需要同时安装 httpd
和 mod_ssl
。如果您试图在没有另外一个的情况下安装其中一个,则会出现类似如下的错误:
# 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
备注:您还可以使用通配符 '*' 来一次升级所有软件包。
# 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 *.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
Root Cause
Diagnostic Steps
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.
Comments