在RPM(红帽软件包管理器)公布之前,要想在Linux系统中安装软件只能采取编译源码包的方式,所以早期安装软件是一件非常困难、耗费耐心的事情,而且大多数的服务程序仅仅提供自身的源代码,还需要运维人员编译代码后自行解决软件之间的依赖关系。
总而言之,早期Linux系统在安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系,所以在进行校验、安装、卸载、查询、升级等管理软件操作时难度都非常大,RPM机制则正是为了解决这些问题而设计的。
通过RPM安装的服务程序会像Windows系统中的控制面板那样,建立统一的数据库,详细记录软件信息并能够自动分析依赖关系。表1-1是一些常用的RPM软件包命令。
表1-1 常用的RPM命令

命令

作用

rpm -ivh 文件名.rpm

安装软件

rpm -uvh 文件名.rpm

升级软件

rpm -e 文件名.rpm

卸载软件

rpm -qpi 文件名.rpm

查询软件描述信息

rpm -qpl 文件名.rpm

列出软件文件信息

rpm -qf 文件名

查询文件属于哪个RPM

但是,尽管RPM能够帮助用户查询软件之间的依赖关系,但问题还是要运维人员自己来解决,而有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件依然是很繁琐的,Yum软件仓库便是为了进一步降低软件安装难度和复杂度而设计的技术。Yum软件仓库可以根据用户的要求分析出所需软件包及其相关的依赖关系,然后自动从服务器下载软件包并安装到系统。Yum软件仓库的技术拓扑如下图所示。

软件仓库里没有的rpm包去哪里下载_软件仓库里没有的rpm包去哪里下载


Yum软件仓库中的RPM软件包可以是由红帽官方发布的,也可以是第三方发布的,当然也可以是自己编写的。表1-2所示为一些常见的Yum命令,当前只需对它们有一个简单印象即可。

表1-2 常见的Yum命令

命令

作用

yum repolist all

列出所有仓库

yum list all

列出仓库中所有软件包

yum info 软件包名称

查看软件包信息

yum install 软件包名称

安装软件包

yum reinstall 软件包名称

重新安装软件包

yum update 软件包名称

升级软件包

yum remove 软件包名称

移除软件包

yum clean all

清除所有仓库缓存

yum check-update

检查可更新的软件包

yum grouplist

查看系统中已经安装的软件包组

yum groupinstall 软件包组

安装指定的软件包组

yum groupremove 软件包组

移除指定的软件包组

yum groupinfo 软件包组

查询指定的软件包组信息

Yum虽然解决了软件的依赖关系问题,但仍然还是存在着分析不准确、内存占用量大、不能多人同时安装软件等等硬伤。终于在2015年随着Fedora 22系统的发布,红帽又给了我们一个新的选择——DNF,实际就是解决了上述问题的Yum软件仓库的提升版,行业内叫做Yum v4版本。
作为Yum软件仓库v3版本的接替者,DNF特别友好的继承了原有的命令格式,使用习惯上保持一致~不用担心不会操作,举例来说以前安装软件用的是“yum install 软件包名称”,那么现在则是“dnf install 软件包名称”,命令替换成dnf即可。
当然RHEL 8系统也照顾到了老用户的习惯问题,同时兼容保留了yum和dnf两个命令,在实际操作中随意选择喜欢的执行就好,甚至提示信息都基本一样,感知不到什么区别。