在此之前已经说过Linux最早期为c语言静态语言所编写的,这里暂时不讨论gcc以及g++等编译器也不讨论configure、make、make install等支持静态语言编译过程。此前也说过Linux满足开源协议每个人可以进行源码编译想使用Linux也必须进行源码编译,Linux厂商为了源码管理以及使用方便便将户所需要的软件直接编译好打包成可执行的软件直接发布给用户安装。不同的 Linux 发行版使用不同的打包系统,一般而言,大多数发行版分别属于两大包管理技术阵营: Debian 的”.deb”,和 RedHat的”.rpm”。也有一些重要的例外,比方说 Gentoo, Slackware,和 Foresight,但大多数会使用这两个基本系统中的一个。这里将要介绍的是Red Hat系列发行版的RPM与YUM包管理器
    RPM命名“RedHat Package Manager”,简称则为RPM。这个机制最早由RedHat这家公司开发出来的,后来实在很好用,因此很多开发商就使用这个机制来作为软件安装的管理方式,包括Fedora,CentOS,SuSE等知名的开发商都是用它。
    RPM最大的特点就是需要安装的软件已经编译过,并已经打包成RPM机制的安装包,通过里头默认的数据库记录这个软件安装时需要的依赖软件。当安装在你的Linux主机时,RPM会先依照软件里头的数据查询Linux主机的依赖属性软件是否满足,若满足则予以安装,若不满足则不予安装。
    YUM可以看作是CS架构的软件,YUM的存在很好的解决了RPM的属性依赖问题。
    YUM通过依赖rpm软件包管理器, 实现了rpm软件包管理器在功能上的扩展, 因此YUM是不能脱离rpm而独立运行的。
    YUM可以同时配置多个资源库(Repository)、自动解决增加或删除rpm包时遇到的依赖性问题并且保持与RPM数据库的一致性等特点让用户使用起来极其方便而无需关心安装的软件所需的依赖问题
    当用户使用yum client端发起发起安装指令,Server端先对程序包进行分类后存储到不同repository容器中; 再通过收集到大量的rpm的数据库文件中程序包之间的依赖关系数据, 生成对应的依赖关系和所需文件在本地的存放位置的说明文件(.xml格式), 存放在本地的repodata目录下供Client端取用cilent端通过yum命令安装软件时发现缺少某些依赖性程序包, Client会根据本地的配置文件(/etc/yum.repos.d/*.repo)找到指定的Server端, 从Server端repo目录下获取说明文件xxx.xml后存储在本地/var/cache/yum中方便以后读取, 通过xxx.xml文件查找到需要安装的依赖性程序包在Server端的存放位置, 再进入Server端yum库中的指定repository容器中获取所需程序包, 下载完成后在本地实现安装。
    虽然yum是你在联网后就能直接使用,不过如果系统的站点镜像没选择好,会导致连接速度非常慢!所以,这时候就需要我们去手动修改yum的设置文档了。
    如你连接到CentOS的镜像站点(http://ftp.twaren.net/Linux/CentOS/7.3.1611/)后,就会发现里面有一堆链接,那些链接就是这个yum服务器所提供的容器了,包括centosplus、extras、fasttrack、os、updates等容器,最好认的就是os(系统默认的软件)与updates(软件升级版本)。
    在yum服务器的容器里面,最重要的一个目录就是那个“repodata”,该目录是分析RPM软件后所产生的软件依赖数据放置处。因此,当你找到容器所在网址时,最重要的就是该网址下面一定要有一个名为“repodata”的目录存在,那就是容器的网址了。
    使用命令:yum repolist all可以查看容器列表只有当最右边的status为enabled该容器才算激活。具体容器配置文件说明以及rpm,yum使用手册可自行查资料