一、简介

    YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,以解决软件安装或卸载与升级的问题。

二、yum配置文件

    1.主配置文件:

        /etc/yum.conf,为所有仓库提供公共配置;

        /etc/yum.repos.d/*.repo,为仓库的指向提供配置;


    2.各仓库指向的定义:       

        directive=VALUE,例如: name=base

            注意:文件以.repo结尾,每个repo配置文件中可以配置一至多个仓库;

        [main]:提供公共配置信息;


    仓库配置:

         [repositoryID]   

            ##必须唯一

        

        name=Some name for this repository  

        ##当前仓库描述信息,可以不写

       

        baseurl=url://path/to/repository/ 

            ##指明仓库的访问路径,通常为一个文件服务器上输出的某仓库;

            ##url支持的类型:

                ftp://

                http://

                file:///

                

        enabled={1|0}

        ##仓库是否可被使用,默认不写代表使用;1:是;0:否;

       

        gpgcheck={1|0}

        ##是否对程序包做校验;

       

        gpgkey=URL

        ##指明gpgkey文件路径;

       

        enablegroups={1|0}

        ##是否使用仓库组

       

        failovermethod={roundrobin|priority}

        ##设置多个仓库时,需要指明优先使用那个仓库安装包;默认为:roundrobin:意为随机挑选

        ;priority:优先级;

       

        cost= 

       ##指明当前仓库的访问开销,默认为1000;


三、yum命令使用

    语法:yum [options] [command] [package ...]

    1.yum仓库列表

        yum repolist:列出已经配置的所有可用仓库;

        yum repolist [all|enabled|disabled];


    2.yum查看程序包

        yum list:列出所有程序包;

        yum list [all | glob_exp1] [glob_exp2][...]

        yum list {available|installed|updates}[glob_exp1] [...]


    3.yum安装程序包

        yum install package1 [package2] [...]

        yum reinstall package1 [package2][...](重新安装)

        注意:

            1.只需要提供包名;

            2.如果某包在不同仓库中有多个不同的版本,默认会安装最新版本;

            3.如果要安装指定版本:yum install package-version...


    4.yum升级程序包

        yum update [package1] [package2] [...]

        yum downgrade package1 [package2] [...](降级)


    5.yum检查有哪些可用升级

        yum check-update


    6.yum卸载程序包

         yum remove | erase package1 [package2] [...]

         注意:所有依赖于正卸载的程序包的程序包会被一并卸载;


    7.yum查询程序包的相关简要信息information

         yum info package...


    8.查看指定的特性(可以是某文件)是由哪个程序包所提供:

      yum provides |whatprovides feature1 [feature2] [...]

      eg:yum provides /bin/cat


9.清理本地缓存

    yum clean [packages | metadata |expire-cache | rpmdb | plugins | all]


10.构建缓存

    yum makecache


11.yum搜索

    yum search string1 [string2] [...]:以指定的关键字搜索程序包名及summary信息


12.yum查看指定包所依赖的capabilities

    yum deplist package1 [package2] [...]


13.查看yum事务历史

    history [info|list|packages-list|packages-info| summary|addon-info|redo|undo|rollback|new|sync|stats] 

    yum history(查看历史信息

    yum history info 6 (查看第6条历史信息)

    yum history undo 6 (撤销第六条信息执行的操作)

    日志文件:/var/log/yum.log


14.安装或升级本地的程序包文件

     yum install rpmfile1 [rpmfile2] [...]

        yum update rpmfile1 [rpmfile2] [...] 


    15.包组管理的相关命令

        yum grouplist [hidden] [groupwildcard] [...](列出所有包组)

        yum groupinfo group1 [...](显示指定包组详情)

        yum groupinstall group1 [group2] [...](安装包组)

        yum groupremove group1 [group2] [...](卸载包组)

        yum groupupdate group1 [group2] [...](升级包组)


    16.yum的命令行选项

        - -nogpgcheck:禁止做包校验

        -y: 自动回答为“yes”

        -q:静默模式

        - -disablerepo=repoidglob:临时禁用此处指定的repo

        - -enablerepo=repoidglob:临时启用此处指定的repo

        - -noplugins:禁用所有插件


    17.yum的repo配置文件中有一些内置的变量,用于保存当前平台的相关信息,常用变量有

        (1)$releasever: 当前OS的发行版的主版本号;

        (2)$arch: 平台,i386,i486,i586,x86_64等;

        (3)$basearch:基础平台;i386;

        (4)$YUM0-$YUM9:自定义变量;    

               示例:

                http://mirrors.aliyun.com/centos/$releasever/$basearch/

                http://mirrors.sohu.com/centos/7/x86_64

                http://mirrors.163.com/centos/6/i384   

     

四、制作本地yum源

    使用本地yum源有两种方式,第一种直接使用光盘镜像,不过此种方法仅限本机使用;第二种创建本地yum仓库,然后使用http或者ftp等方式向外部提供yum仓库。

    (1)使用发行版光盘作为yum仓库:   

     步骤:
      ①挂载光盘到指定挂载点:例如:/mnt/cdrom;
           # mount /dev/sr0 /mnt/cdrom
           
      ②创建yum仓库配置文件,以.repo作为后缀名,例如:CentOS-Base.repo
            [sr0]
            name=centos 7 base
            baseurl=file:///mnt/cdrom/
            gpgcheck=1
            gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
            enabled=1(不写默认值为1)
            
      ③清楚本地缓存:yum clean all
      
      ④查看可用的yum仓库:yum repolist


    (2)创建本地yum仓库

        语法:createrepo [option] <directory>

      步骤:
        ①createrepo命令默认是没有安装的,可以使用rpm或yum事先安装好createrepo程序包;
        
        ②创建好yum仓库目录;例如/testdir/repodb/,这个目录用来存放rpm程序包文件;仓库的访
        问路径;
        
        ③确定yum仓库输出方式:
            本地输出:提供一个放置rpm包的本地路径,file:///的形式;
            网络输出:提供一个文件服务器,配置好ftp服务或http服务;
                ftp服务:
                    安装程序包:vsftpd
                    文件存放路径:/var/ftp/pub
                    启动服务:service vsftpsd restart
                http服务:
                     安装程序包:httpd
                    文件存放路径:/var/www/html
                    启动服务:service httpd restart
                    
       ④在准备好的目录放置rpm程序包文件;
           #可以通过cp命令将光盘中的程序包拷贝到此输出目录中
           
       ⑤cd进入到此目录,运行createrepo .命令,会生成一个repodata目录;
            #把当前目录作为yum仓库数据所在地;
            #至此就完成了yum仓库的创建;
            注意:仓库指向的路径为repodata目录所在的父目录;


    (3)测试创建的yum仓库是否可用   

        ①在/etc/yum.repos.d/目录下创建一个以.repo结尾的配置文件,例如my.repo,内容如下:
            [myrepo]
            name=my repo base
            baseurl=file:///testdir/repodb/
             gpgcheck=0
             
        ②清除缓存
            yum clean all:清理缓存
            yum makecache:构建缓存
            
        ③查看可用仓库
            yum repolist
            
        ④安装程序包
            yum -y install httpd