如何在 Linux 中安装 RPM 文件

RPM 文件的存在使软件安装和升级过程更容易。
它们允许我们简单地使用 RPM 文件来安装软件包,并且当与包管理器(例如 Yum 或者 DNF)结合使用时,我们还可以轻松下载和安装所有必需的依赖项。

并非所有 Linux 发行版都支持 RPM。
通常 RPM 文件在基于 RHEL 的发行版中使用,例如 CentOS 和 Fedora 。

使用 Yum 安装 RPM 文件

通常,当使用 yum 命令从存储库安装软件包时,我们将运行“yum install httpd”,它只会从配置的存储库下载所需的 RPM 文件。
我们可以改为使用“yum install file.rpm”并指定我们必须安装的本地 RPM 文件。

[jack@onitroad ~]# yum instsall httpd-2.4.6-45.el7.centos.x86_64.rpm
Loaded plugins: fastestmirror, langpacks
。。。
Total size: 9.7 M
Total download size: 309 k
Installed size: 10 M
Is this ok [y/d/N]: y
。。。
Installed:
  httpd.x86_64 0:2.4.6-45.el7.centos
Dependency Installed:
  apr.x86_64 0:1.4.8-3.el7                          apr-util.x86_64 0:1.5.2-6.el7
  httpd-tools.x86_64 0:2.4.6-45.el7.centos          mailcap.noarch 0:2.1.41-2.el7
Complete!

我们也可以使用“yum localinstall file.rpm”,但是手册页指出,这只是出于遗留原因而维护的,并建议使用 install 代替。

不仅安装了我们指定的 httpd RPM 文件,而且列出了 httpd 包正常工作所需的添加依赖项。

请注意,与后面介绍的 RPM 命令不同,yum 会自动为我们解析依赖项,并将从我们配置的存储库下载和安装任何其他包。

使用 DNF 安装 RPM 文件

DNF 是 Yum 的下一个版本,它是另一个用于处理 RPM 文件的包管理器。
DNF 语法与 Yum 命令非常相似,如下所示,我们可以以相同的方式安装我们的 RPM 文件。

[jack@onitroad ~]# dnf install httpd-2.4.6-45.el7.centos.x86_64.rpm
Extra Packages for Enterprise Linux 7 - x86_64                     9.7 MB/s |  12 MB     00:01
Using metadata from Thu Dec 29 21:31:01 2014
Dependencies resolved.
===================================================================================================
 Package           Arch              Version                         Repository               Size
===================================================================================================
Installing:
 httpd             x86_64            2.4.6-45.el7.centos             @commandline            2.7 M
Transaction Summary
===================================================================================================
Install  1 Package
Total size: 2.7 M
Is this ok [y/N]:

使用 RPM 命令安装 RPM 文件

为了比较,我们还可以使用带有 -i 选项的 rpm 命令来安装指定的 RPM 包。
然而,这不能为我们自动解决依赖关系,如下面的错误所示,我们必须出去手动下载这些另外的包,然后它们本身可能有更多的包依赖关系。
这种情况通常被称为依赖地狱,这是包管理器帮助我们避免的。

[jack@onitroad ~]# rpm -i httpd-2.4.6-45.el7.centos.x86_64.rpm
error: Failed dependencies:
        /etc/mime.types is needed by httpd-2.4.6-45.el7.centos.x86_64
        httpd-tools = 2.4.6-45.el7.centos is needed by httpd-2.4.6-45.el7.centos.x86_64
        libapr-1.so.0()(64bit) is needed by httpd-2.4.6-45.el7.centos.x86_64
        libaprutil-1.so.0()(64bit) is needed by httpd-2.4.6-45.el7.centos.x86_64

如何下载 RPM 文件

通常 RPM 文件会从 Internet 上的某个随机页面下载,但是也可以使用 yumdownloader 命令直接从存储库下载 RPM 文件。
只需在 yumdownloader 之后指定我们要下载的包,它就会下载用于将包安装到当前工作目录的 RPM 文件的副本。

[jack@onitroad ~]# yumdownloader httpd
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.serversaustralia.com.au
 * extras: ftp.swin.edu.au
 * updates: centos.mirror.serversaustralia.com.au
httpd-2.4.6-45.el7.centos.x86_64.rpm                                        | 2.7 MB  00:00:00
[jack@onitroad ~]# ls -la httpd-2.4.6-45.el7.centos.x86_64.rpm
-rw-r--r--. 1 root root 2827204 Nov 20 10:14 httpd-2.4.6-45.el7.centos.x86_64.rpm
日期:2020-07-07 20:56:20 来源:oir作者:oir