zoukankan      html  css  js  c++  java
  • yum在线升级

    RPM优点

    由於 RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载。 所以 RPM 有以下的优点:

    • RPM 内含已经编译过的程序与配置档等数据,可以让使用者免除重新编译的困扰;
    • RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安装;
    • RPM 文件本身提供软件版本资讯、相依属性软件名称、软件用途说明、软件所含文件等资讯,便於了解软件;
    • RPM 管理的方式使用数据库记录 RPM 文件的相关参数,便於升级、移除、查询与验证。

    为什么 RPM 在使用上很方便呢?我们前面提过, RPM 这个软件管理员所处理的软件,是由软件提供者在特定的 Linux 作业平台上面将该软件编译完成并且打包好。那使用者只要拿到这个打包好的软件, 然后将里头的文件放置到应该要摆放的目录,不就完成安装罗?对啦!就是这样!

    为什么要用yum?

    但是有没有想过,我们在前一章里面提过的,有些软件是有相关性的,例如要安装网络卡驱动程序,就得要有 kernel source 与 gcc 及 make 等软件。那么我们的 RPM 软件是否一定可以安装完成呢?如果该软件安装之后,却找不到他相关的前驱软件, 那不是挺麻烦的吗?因为安装好的软件也无法使用啊!

    为了解决这种具有相关性的软件之间的问题 (就是所谓的软件相依属性),RPM 就在提供打包的软件时,同时加入一些信息登录的功能,这些信息包括软件的版本、 打包软件者、相依属性的其他软件、本软件的功能说明、本软件的所有文件记录等等,然后在 Linux 系统上面亦创建一个 RPM 软件数据库,如此一来,当你要安装某个以 RPM 型态提供的软件时,在安装的过程中, RPM 会去检验一下数据库里面是否已经存在相关的软件了, 如果数据库显示不存在,那么这个 RPM 文件『默认』就不能安装。呵呵!没有错,这个就是 RPM 类型的文件最为人所诟病的『软件的属性相依』问题啦!


    小标题的图示RPM 属性相依的克服方式: YUM 线上升级

    为了重复利用既有的软件功能,因此很多软件都会以函式库的方式发布部分功能,以方便其他软件的呼叫应用, 例如 PAM 模块的验证功能。此外,为了节省使用者的数据量,目前的 distributions 在释出软件时, 都会将软件的内容分为一般使用与开发使用 (development) 两大类。所以你才会常常看到有类似 pam-x.x.rpm 与 pam-devel-x.x.rpm 之类的档名啊!而默认情况下,大部分的 software-devel-x.x.rpm 都不会安装,因为终端用户大部分不会去开发软件嘛!

    因为有上述的现象,因此 RPM 软件文件就会有所谓的属性相依的问题产生 (其实所有的软件管理几乎都有这方面的情况存在)。 那有没有办法解决啊?前面不是谈到 RPM 软件文件内部会记录相依属性的数据吗?那想一想,要是我将这些相依属性的软件先列表, 在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的相依软件就一口气同时安装起来, 那不就解决了相依属性的问题了吗?有没有这种机制啊?有啊!那就是 YUM 机制的由来!

    CentOS 先将发布的软件放置到 YUM 服务器内,然后分析这些软件的相依属性问题,将软件内的记录资讯写下来 (header)。 然后再将这些资讯分析后记录成软件相关性的清单列表。这些列表数据与软件所在的位置可以称呼为容器 (repository)。 当用户端有软件安装的需求时,用户端主机会主动的向网络上面的 yum 服务器的容器网址下载清单列表, 然后透过清单列表的数据与本机 RPM 数据库已存在的软件数据相比较,就能够一口气安装所有需要的具有相依属性的软件了。 整个流程可以简单的如下图说明:

    YUM 使用的流程示意图
    图 1.5.1、YUM 使用的流程示意图

    当用户端有升级、安装的需求时, 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 这个容器内容而已,其他的容器内容请自行查阅罗!上面的数据需要注意的是:

      • [base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不晓得该到哪里去找容器相关软件清单文件。

      • name:只是说明一下这个容器的意义而已,重要性不高!

      • mirrorlist=:列出这个容器可以使用的映射站台,如果不想使用,可以注解到这行;

      • baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum 程序自行去捉映射站台, baseurl 则是指定固定的一个容器网址!我们刚刚找到的网址放到这里来啦!

      • enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 喔!

      • gpgcheck=1:还记得 RPM 的数码签章吗?这就是指定是否需要查阅 RPM 文件内的数码签章!

      • gpgkey=:就是数码签章的公钥档所在位置!使用默认值即可                
           
    列出目前 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/ # 有多个配置档,所以你会发现还有其他的容器存在。
  • 相关阅读:
    用ADO方式连接Excel
    RTX51 tiny系统容易混淆的问题
    学用NHibernate(一)
    Firefox兼容性
    使用WebClient后的Response编码的问题
    学用ASP.NET2.0
    安装CS2.0 Beta2 到SQL2005+Asp.Net2.0下
    AJAXSLT 的bug修正(2)
    Asp.Net开发小技巧
    URL重写,友好的URL
  • 原文地址:https://www.cnblogs.com/chenfei0801/p/3639433.html
Copyright © 2011-2022 走看看