yum (Yellowdog Update Modifier)  程序包管理器的前端工具

    是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包.


yum客户端安装软件等操作实现原理:
            1、配置文件:指定各可用的yum仓库;
            2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;
            3、分析元数据:根据具体操作请求完成元数据分析, 可能包括检查依赖关系、文件列表等信息;
            4、执行具体操作:


客户端配置文件指定对应服务器访问方式如下几种:
            ftp   ftp://server/path/to/repo
            http  http://server/path/to/repo
            nfs   nfs://server/nfs_path
            file  file:///path/to/repository


要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
   主配置 /etc/yum.conf
   仓库配置 /etc/yum.repos.d/*.repo

配置文件格式:由两段组成,类似windows的ini配置文件
        [main] :主配置段
        [repo] :仓库配置段


配置文件格式,文件 存放于/etc/yum.repos.d/ 并以repo结尾的文件

    [repo_id]

    name=repo_name   显示的名称,可以是任意的字符串

    baseurl=url             软件路径可以是网络上的,也可以是本地的

    gpgcheck={0|1}       是否启用包来源合法性验证

    enabled={0|1}          是否启用仓库

    gpgkey=公钥文件(可以在本地,也可是服务器端路径)

    cost=1000 仓库开销,用来做优先级,默认不指定就是1000 数值越小,优先级越大


示例以光盘为rpm源配置仓库

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
vim /etc/yum.repos.d/cdrom.repo
[base-cdrom]
name=cdrom_repo
baseurl=file:///mnt/cdrom/                       # 一般为repodata所在的目录,这里面有rpm包的元数据 
gpgcheck=1
enabled=1
gpgkey=file://mnt/cdrom/RPM-GPG-KEY-CentOS-6


保存退出,yum repolist 可以查看是否配置成功


yum 命令使用:

格式:

    

yum的各命令:


    安装

        install package_name ...: 安装指定的程序包
        reinstall package_name ...: 重新安装指定的程序包   
        groupinstall "group_name":安装指定的包组

                # yum install httpd

   查找

        repolist [all|enabled|disabled]: 列出所有可用yum repo
        list [all|installed|available]: 列出rpm包
        info package_name: 列出包的描述信息
        grouplist: 列出所有包组
        groupinfo "package_group_name":显示包组信息       


    升级
            check-update: 检查可升级的包
            update package_name ...: 升级指定的程序包

                如现在的版本:x-1.2.1, x-1.2.2, x-1.2.3
                    要升级到指定版本需指定版本号:yum update x-1.2.2 
    降级   downgrade package_name:


    删除
            erase|remove  package_name ...:  删除己安装的包,会连依赖的包一起删除  
            groupremove "group_name": 卸载指定的包组

    查询
            whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的 

  #  yum provides */ifcofnig   # 这样可以查询ifconfig这个命令由哪个包提供的

    清除元仓库数据

            clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理缓存





    安装本地包:(yum 安装本地的rpm包依旧会检查软件来源合法性的,无法通过的不予安装。需要安装则要禁止检查。)
        install /path/to/package_file
            手动禁止检查来源及完整性:--nogpgcheck
                yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck



yum配置文件中可用的四个宏:
    $releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;
    $arch: 系统架构
    $basearch: 系统基本架构,如i686,i586等的基本架构为i386;
    $YUM0-9: 在系统中定义的环境变量,可以在yum中使用;

获取当前系统相应宏替换结果的办法:
        # python
        Python 2.6.6 (r266:84292, Nov 22 2013, 12:16:22)
        [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import yum,pprint
        >>> yb = yum.YumBase()
        >>> pprint.pprint(yb.conf.yumvar,width=1)
        Loaded plugins: fastestmirror, refresh-packagekit
        {'arch': 'ia32e',
         'basearch': 'x86_64',
         'releasever': '6',
         'uuid': 'ea249181-2f82-4c40-8c42-d51b3fce319a'}
        >>> quit()


     三个跟开发相关的包组:
            Desktop Platform Development:有图形程序时需安装此组;
            Server Platform Development
            Development Tools