yum安装过程简介

    yum安装程序时需要连接远程服务器提供的程序包仓库,yum会请求远程服务器发送RPM文件,放置在本地的cache中,然后yum分析有没有要安装的程序包,并尝试的依赖关系分析 ,分析完依赖关系后,yum会分析本地已经安装的依赖文件,把剩余没有安装的依赖文件列出来,并把自己当做客户端访问远程服务器,在远程服务器上下载依赖文件,下载完成后yum会先安装被依赖的文件,最后安装程序包,安装完成以后删除本地缓存中的程序包,但元数据文件(放置在特定目录:repodate)会被保留,以便下次安装程序查询,如果服务器上面的程序包没有发生改变,那么yum cache中的元数据还将有效,如果服务器上的程序包生改变,那么服务器上面的一块专门记录校验的程序包的文件将发生改变,yum上的元数据与服务器上的校验文件对比发现不一致,则重新下载服务器上的程序包。但有时候可能yum不能够连接到远程服务器,这样的话就要手动配置yum的安装的策略了。

yum仓库创建

    yum其实rpm的前端管理工具。yum安装支持的服务器有FTPHTTPNFS,要想yum安装程序必须保证主机已经安装了yum这个程序所有仓库的公共配置或与仓库无关的配置存放在/etc/yum.config,仓库指向信息存放在/etc/yum.repos.d/*.repo这个文件里面可能指向多个仓库,yum会选择最优路径。

 下面就来介绍一下这些配置文件里面的数据都代表着什么

cat/etc/yum.config(部分截图)wKiom1Z6wgaw50NjAAFfAUpmTNo318.png

        关于仓库配置参数有以下这些常用参数

            [repositoryID]:有以下两个参数需要填写

                  name:仓库的名字,尽可能取与文件相关的名字

                  baseurl:指向仓库的访问路径,可指明多个url

            mirrorlist:以镜像指明urlyum需支持此插件

            enabled={1|0}:是否启用此仓库,默认启用,1为启用,0为禁用

            gpgcheck={1|0}:对此仓库内的文件安装前是否检测完整信息和来源合法性

            gpgkey=URL:指明秘钥文件访问路径

            enablegroups={1|0}:是否允许基于组在此仓库批量管理程序包

            failovermethod={roundrobin|priority}:故障转移方法默认roundrobin意味随机挑选

            cost=开销大小默认为1000

    yum包的名字和存放都按照者某个规范,将路径相应的位置换成变量可以根据不同的操作系统,不同的硬件平台,自行随之改变下载文件的路径,实现一个路径可在多种不同的用户使用。

yumrepo配置文件中可用的变量:

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

            $arch:平台

            $basearch:基础平台

            $YUM0-$YUM9 :可自定义变量

    参照以上参数就可以新建仓库了,但是新建仓库不能与已有仓库同名,简单的yum仓库建立如下

[root@localhost yum.repos.d]#vim /etc/yum.repos.d/CentOS-Base.repo

wKioL1Z6wpjxYfPwAAARX_cqHgY193.png


        编辑如上即可这个一个简单的yum仓库就建好了,这里的baseurl也可以指向本地的仓库,用file:///就可以了,这里的$relaserver表示OS发行版本$basearch表示基础平台。

可以用下面的命令查看

wKiom1Z6wtPQ9sbcAAApUQ4NJTk759.png

使用光盘只做yum

[root@localhost~]# mount /dev/cdrom /media/       首先将光盘挂载到本地

wKiom1Z6wvnyhNc2AAApPOdXL4Y156.png

[root@localhost~]# cd /etc/yum.repos.d/local.repo  新建一个本地仓库源指向,做以下编辑即可。

wKioL1Z6wyqiVmLvAAANDwxz5BE719.png

制作本地yum仓库

        首先得安装createrepo这个程序,这个命令一般情况下默认选项也够用,就不多做介绍,直接yum install createrrepo.这里我就将光盘上的RPM文件拷贝到本地做yum源仓库了,这些rpm包你也可以通过其他更多方式获得。

[root@localhost Packages]# mkdir -p /yum/repo

[root@localhost Packages]# cp/media/Packages/*.rpm /yum/repo/

wKiom1Z6w1rSCEp2AAAZXe6HuUw635.png

wKioL1Z6w22QNT3uAABOjP_STBE490.png

这样一个yum仓库就算做好了。生成的repdata文件里面的文件分别的记载了主makedata数据,rpm包名,依赖关系,安装生成数据等。repomd.xml存放了上面几个文件的指纹信息。

yumyum [options] [command] [package ...]

     command is one of:

      * install package1 [package2] [...]安装程序包,一次可安装多个,并指明版本

      * update [package1] [package2] [...]升级程序包,一次可升级多个

      * check-update检查可用升级程序

      * distribution-synchronization [package1][package2] [...]

      * remove | erase package1 [package2][...]卸载程序包,依赖程序包也将被卸载

      * list [...]显示仓库中程序包支持glob风格通配符

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

显示仓库中所有的程序包或以glob搜索方式查看

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

显示在仓库中未安装的已安装的可升级的,可用glob搜索查看

      * info [...]查看程序包的详细信息

      * provides | whatprovides feature1[feature2] [...]查看某文件是有哪个包提供的

      * clean [ packages | metadata |expire-cache | rpmdb | plugins | all ]清理本地缓存,可选择清理。

      * makecache构建缓存。

      * search string1 [string2] [...]根据关键字搜索程序包

      * reinstall package1 [package2] [...]重新安装,即覆盖安装

      * downgrade package1 [package2] [...]程序包降级

      * deplist package1 [package2] [...]查看指定包的依赖关系

      * repolist [all|enabled|disabled]显示仓库列表

      * version [ all | installed | available |group-* | nogroups* | grouplist | groupinfo ]可打印RPMDB的详细信息

      * groupinstall group1 [group2] [...]安装包组

      * groupupdate group1 [group2] [...]升级包组

      * grouplist [hidden] [groupwildcard][...]查看包组

      * groupremove group1 [group2] [...]移除包组

      * groupinfo group1 [...]查看包组详细信息

      * history[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]可以查看yum每次启用的相关事物历史,但不包括查看

yum命令行选项

      --nogpgcheck:禁止进行gpg check检查

      -y:自动回答为“yes

      -q:静默模式,

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

      --disablerepo=repoidglob:临时启动此处指定repo

      --noplugins:禁用所有插件

     yum虽然能解决依赖关系,但是当一次安装被意味终止时,下次再想安装,yum将不能判断依赖关系,所以以后终将是要被DNF所代替的,但者并不意味着yum就不用学习了解,毕竟现在yum还是主流。