YUM(Yellowdog Update Modifier):是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum是一个前端程序,所以它必须依赖一个yum客户端,repository,顾名思义,是一个软件的仓库,也叫做yum源,它可以是http或ftp站点, 也可以是本地软件池,每一个repository中存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)。repodata中包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是通过这些信息,才能自动化地完成余下的任务。

yum客户端(yum源):通过yum的配置文件定义其细节内容。

配置文件:

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

Linux程序包管理(yum)_yum 

/etc/yum.repos.d/*.repo:

通常一个.repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用

配置文件中各项参数的定义:
        [repositoryID]
        name=Some name for this repository
        baseurl=url://path/to/repository/
        enabled={1|0}
        gpgcheck={1|0}
        gpgkey=URL
        enablegroups={1|0}
        failovermethod={roundrobin|priority}   (
priority:按优先级排序,roundrobin,意为随机挑选)  默认为:roundrobin

        cost=        默认为1000

Linux程序包管理(yum)_yum_02

yum命令的用法:

使用格式:yum [options] [command] [package ...]

命令行选项(命令行的优先度要高于配置文件):

        --nogpgcheck:禁止进行gpg check;
        -y: 自动回答为“yes”;
        -q:静默模式;
        --disablerepo=repoidglob:临时禁用此处指定的repo;
        --enablerepo=repoidglob:临时启用此处指定的repo;
        --noplugins:禁用所有插件;

常用command

显示仓库列表:repolist [all|enabled|disabled]
显示程序包:list
     # yum list [all | glob_exp1] [glob_exp2] [...]
     # yum list {available|installed|updates} [glob_exp1] [...]
安装程序包:install package1 [package2] [...]
        reinstall package1 [package2] [...]  (重新安装)
升级程序包:update [package1] [package2] [...]

降级程序包:downgrade package1 [package2] [...]
检查可用升级:check-update
卸载程序包:remove | erase package1 [package2] [...]
查看程序包information: info [...]
查看指定的特性(可以是某文件)是由哪个程序包所提供:provides | whatprovides feature1 [feature2] [...]
清理本地缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:makecache
搜索:以指定的关键字搜索程序包名及summary信息;
     search string1 [string2] [...]
查看指定包所依赖的capabilities:
     deplist package1 [package2] [...]
查看yum事务历史:
 history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包:
        * localinstall rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use install)
        * localupdate rpmfile1 [rpmfile2] [...]
           (maintained for legacy reasons only - use update)
包组管理的相关命令:
        * groupinstall group1 [group2] [...]
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]
        * groupremove group1 [group2] [...]
        * groupinfo group1 [...]


创建yum仓库:
命令:createrepo [options] <directory>

演示过程

1.

Linux程序包管理(yum)_yum_03

Linux程序包管理(yum)_yum_04

Linux程序包管理(yum)_yum_05

2.Linux程序包管理(yum)_yum_06


3.Linux程序包管理(yum)_yum_07


4.

Linux程序包管理(yum)_yum_08

至此,创建本地仓库完成。


使用光盘当作本地yum仓库:
        (1)挂载光盘至某目录,例如/media/cdrom
            # mount -r -t iso9660 /dev/cdrom /media/cdrom
        (2)创建配置文件 (同上)

yum的repo配置文件中可用的变量:
        $releasever: 当前OS的发行版的主版本号;
        $arch: 平台;
        $basearch:基础平台;
        $YUM0-$YUM9
示例:http://http://mirror.centos.org/centos/$releasever/updates/$basearch/

yum仓库文件服务器的地址类型:ftp://

                                                           http://
                                                           nfs://
                                                           
file:///