部署YUM软件仓库

        最近课程版本更新了 ,正好来把知识再系统下,希望能对大家有些帮助。
        yum前身是 YUP(Yellow dog Updater,Yellow dog Linux 软件更新器),最初是由TSS公司使用Python语言开发而成,后经杜克大学的linux开发队伍进行改进,命名为YUM(Yellow dogUpdater,Medified)。借助YUM软件仓库可以完成安装、卸载、自动升级rpm软件包等任务。能够自动查找并解决rpm包之间的依赖关系,而不需要管理员手工逐个的去安装每一个rpm包,使管理员在维护大量Linux服务器时更加轻松自如。特别是在本地网络中拥有大量Linux服务器时,可以自己构建一台YUM源服务器来缓解软件包安装、升级等对Internet的依赖。
        要使用 YUM机制来更新系统和软件,就需要一个包含了各种rpm软件包的软件仓库,我们又称之为源服务器,在客户端中只需要指定服务器的地址等信息,就可以通过源服务器来进行安装或更近软件了。
        1.准备网络安装源(服务器端)
         YUM软件仓库通常借助于 http或ftp协议来发布,这样就可以面向网络中所有客户机提供软件源服务。(在我们的课程体系中以RHEL6为主,在此实验演示以Centos6.3为例。Centos可以说是RHEL的社区版,在内容上都是一致的 )
         其实在 Centos中可以直接将本地光盘中的文件当作软件仓库来使用。例如:首先将光盘挂载到相关目录下:      
        
        之后编辑 /etc/yum.repos.d/CentOS-Media.rep   

        当然,这种方法仅限于本机使用,如需要让其他客户机使用服务器来进行更新或安装就需要服务器发布。为了便于客户端查询软件包、获取依赖关系等信息,在软件仓库中需要提供仓库数据(Repodata),其中收集了目录下所有rpm包的头部信息 。在CentOs系统的安装光盘中,已针对软件目录Packages/建立好了Repodata数据,只需要简单地将整个光盘中的内容通过http或者ftp进行发布。

      1)安装并启动vsftpd服务
     2)在/var/ftp下创建centos目录并将光盘所有内容复制过去(需要有足够空间,建议大于5G)    
        对于用户自己搜集的非系统光盘中自带的软件包(必须包括存在依赖关系的所有安装文件),也可以放在相应目录下,但是需要手动创建repodata数据文件。repodata文件的创建需要使用光盘中自带的createrepo工具。例如,将自己收集到的rpm安装文件放在/var/ftp/other目录下,然后为其创建repodata数据即可。
    1)安装createrepo工具:
2)进入rpm包存放的目录,然后利用createrepo以光盘中现有的repodata为模板生成repodata数据。   

 

         到此,YUM服务器端的配置就算完成,在确认vsftpd服务启动后,就可以为客户端提供软件更新和安装服务了。

        2.YUM客户端的配置

         在服务端配置完成后,客户端需要指定至少一个可用的软件仓库(即服务器端),然后才能使用yum工具来下载、安装或更新、删除等操作。yum工具使用的软件仓库信息存放在/etc/yum.repos.d/目录下扩展名为.repo的文件中,以上述服务器端配置为例,客户端典型的配置如下所示:
         
 
        在上述操作中,centos.repo是自己手工创建的,在/etc/yum.repos.d目录下还有其他可用的.repo文件,建议将其他的文件删除。并且在配置文件中”enabled=1”为默认项,是可以省略的,gpgcheck是用来检查软件包是否是官方发布,如无需求可省略。
到此客户端设置完成,然后就可以利用yum工具来进行软件包的管理了。
3.使用YUM工具管理软件包
1)查询
   yum list—查询软件包列表
   直接执行yum list 可以获取当前系统中的软件安装情况,包括已安装和未安装的。

   如执行“yum list installed”则只列出已安装的包

   如执行“yum list available”则只列出未安装的包

   如执行“yum list updates”则只列出可升级的安装包
   yum info—查询软件包的描述信息
 
       当需要查询某个软件包的描述信息时,可执行yum info 软件包名. 例如,查看软件包vsftpd的信息

       2)安装、升级、卸载软件包
       使用yum工具的子命令install、update可以完成软件包的安装和升级操作,在执行时会自动检查并解决软件包之间的依赖关系,期间会提示用户按y确认安装或升级,若希望自动确认,需在yum 命令后加“-y”选项。示例:(截图省略部分信息)   

        当需要卸载软件包时,只需要将install选项替换为remove。在卸载软件时一样会自动分析并解决依赖关系。示例:    

         总结:在linux系统中,软件包一般是按类别分组的,比如桌面环境、开发工具等这样的软件组。在使用yum工具进行软件包管理时,可结合子命令groupinstall、groupupdate、groupremove选项来针对软件分组进行安装、升级、卸载操作。