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