RPM优势数据库
由於 RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,而且还可以进行数据库的记载。 因此 RPM 有如下的优势:centos
为何 RPM 在使用上很方便呢?咱们前面提过, RPM 这个软件管理员所处理的软件,是由软件提供者在特定的 Linux 做业平台上面将该软件编译完成而且打包好。那使用者只要拿到这个打包好的软件, 而后将里头的文件放置到应该要摆放的目录,不就完成安装罗?对啦!就是这样!服务器
为何要用yum?网络
可是有没有想过,咱们在前一章里面提过的,有些软件是有相关性的,例如要安装网络卡驱动程序,就得要有 kernel source 与 gcc 及 make 等软件。那么咱们的 RPM 软件是否必定能够安装完成呢?若是该软件安装以后,却找不到他相关的前驱软件, 那不是挺麻烦的吗?由于安装好的软件也没法使用啊!ide
为了解决这种具备相关性的软件之间的问题 (就是所谓的软件相依属性),RPM 就在提供打包的软件时,同时加入一些信息登陆的功能,这些信息包括软件的版本、 打包软件者、相依属性的其余软件、本软件的功能说明、本软件的全部文件记录等等,而后在 Linux 系统上面亦建立一个 RPM 软件数据库,如此一来,当你要安装某个以 RPM 型态提供的软件时,在安装的过程当中, RPM 会去检验一下数据库里面是否已经存在相关的软件了, 若是数据库显示不存在,那么这个 RPM 文件『默认』就不能安装。呵呵!没有错,这个就是 RPM 类型的文件最为人所诟病的『软件的属性相依』问题啦!url
为了重复利用既有的软件功能,所以不少软件都会以函式库的方式发布部分功能,以方便其余软件的呼叫应用, 例如 PAM 模块的验证功能。此外,为了节省使用者的数据量,目前的 distributions 在释出软件时, 都会将软件的内容分为通常使用与开发使用 (development) 两大类。因此你才会经常看到有相似 pam-x.x.rpm 与 pam-devel-x.x.rpm 之类的档名啊!而默认状况下,大部分的 software-devel-x.x.rpm 都不会安装,由于终端用户大部分不会去开发软件嘛!操作系统
由于有上述的现象,所以 RPM 软件文件就会有所谓的属性相依的问题产生 (其实全部的软件管理几乎都有这方面的状况存在)。 那有没有办法解决啊?前面不是谈到 RPM 软件文件内部会记录相依属性的数据吗?那想想,要是我将这些相依属性的软件先列表, 在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的相依软件就一口气同时安装起来, 那不就解决了相依属性的问题了吗?有没有这种机制啊?有啊!那就是 YUM 机制的由来!server
CentOS 先将发布的软件放置到 YUM 服务器内,而后分析这些软件的相依属性问题,将软件内的记录资讯写下来 (header)。 而后再将这些资讯分析后记录成软件相关性的清单列表。这些列表数据与软件所在的位置能够称呼为容器 (repository)。 当用户端有软件安装的需求时,用户端主机会主动的向网络上面的 yum 服务器的容器网址下载清单列表, 而后透过清单列表的数据与本机 RPM 数据库已存在的软件数据相比较,就可以一口气安装全部须要的具备相依属性的软件了。 整个流程能够简单的以下图说明:ip
当用户端有升级、安装的需求时, yum 会向容器要求清单的升级,等到清单升级到本机的 /var/cache/yum 里面后, 等一下升级时就会用这个本机清单与本机的 RPM 数据库进行比较,这样就知道该下载什么软件。接下来 yum 会跑到容器服务器 (yum server) 下载所须要的软件,而后再透过 RPM 的机制开始安装软件啦!这就是整个流程!
yum在线升级机制
1. 利用yum进行查询、安装、升级与删除功能
查询功能:yum [list|info|search|provides|whatprovides] 参数
[root@www ~]# yum [option] [查询工做项目] [相关参数]
选项与参数: [option]:主要的选项,包括有: -y :当 yum 要等待使用者输入时,这个选项能够自动提供 yes 的回应; --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径 [查询工做项目] [相关参数]:这方面的参数有: search :搜寻某个软件名称或者是描述 (description) 的重要关键字; list :列出目前 yum 所管理的全部的软件名称与版本,有点相似 rpm -qa; info :同上,不过有点相似 rpm -qai 的运行结果; provides:从文件去搜寻软件!相似 rpm -qf 的功能!
eg: yum info mdadm 找出mdadm这个软件的功能
yum list updates 列出当前yum server上可供本机进行升级的软件有哪些
yum provides passwd 列出提供passwd这个文件的软件有哪些
安装/升级功能:yum[install|update] 软件
[root@www ~]# yum [option] [查询工做项目] [相关参数]
选项与参数: install :后面接要安装的软件! update :后面接要升级的软件,若要整个系统都升级,就直接 update 便可
删除功能:yum [remove]软件
yum的设置文件
[root@www ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
|
如上所示,仅列出 base 这个容器内容而已,其余的容器内容请自行查阅罗!上面的数据须要注意的是:
列出目前 yum server 所使用的容器有哪些?
[root@www ~]# yum repolist all
repo id repo name status
addons CentOS-5 - Addons enabled
base CentOS-5 - Base enabled
c5-media CentOS-5 - Media disabled
centosplus CentOS-5 - Plus disabled
extras CentOS-5 - Extras enabled
updates CentOS-5 - Updates enabled
# 上面最右边有写 enabled 才是有启动的!由於 /etc/yum.repos.d/ # 有多个配置档,因此你会发现还有其余的容器存在。