在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软件仓库的技术拓扑如下图所示。

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两个命令,在实际操作中随意选择喜欢的执行就好,甚至提示信息都基本一样,感知不到什么区别。
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树首页概览8582 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!