Loading... <p>一、简介</p> <p> yum( 全称为:Yellow dog Updater, Modified),是红帽(RedHat)家族(RedHat、Fedora、CentOS)中的前端shell的软件包管理器,主要基于对RPM包的管理,能够根据配置文件(类似于svn资源库配置文件)从指定的服务器自动下载RPM包进行安装,其最大的优势就是可以解决令人头疼的软件包依赖问题,它在安装软件包时会自动把相关依赖包也进行安装(卸载)操作,从而解决了在手动安装程序包的同时还要单独安装相关依赖包的问题。</p> <p> yum依赖于基于C/S架构的文件服务器,这些文件服务器用来存放yum在安装程序包时所依赖的各种程序包,它的运作流程是先通过配置文件(支持多仓库指向,并自动寻找各个仓库中最新版本的包或优先级最高版本的包)或者参数命令的方式通过文件传输协议找到该仓库服务器进行查询,仓库服务器找到后会通过下载协议把相关文件包下载到本地的缓存(含元数据和程序包)目录中,并且进行安装操作,之后再删除相关缓存。由于yum命令是开发运维过程中非常常用重要的一个命令,因此我们一定要熟练用好它。</p> <p> yum支持的常见的服务如下:</p> <p> <strong>ftp服务</strong></p> <p><strong> http服务</strong></p> <p><strong> 本地文件目录</strong></p> <p><strong> NFS服务</strong></p> <p> yum缓存分为两种:</p> <p> (1)数据:程序包</p> <p> (2)元数据:repodata(请求的安装包及依赖包的名称、大小、版本、依赖关系等属性)</p> <p> 注意:仓库指向的路径就是repodata目录所在的父目录</p> <p> 执行流程为:第一次访问仓库时请求仓库服务器的元数据并下载到本地缓存目录中,然后检索下载安装包及其相关依赖包并进行安装,安装完成后最后再删除缓存目录中的这些安装包,保留元数据。之后再次下载安装包会先去仓库服务器查询元数据的校验码,并和本地元数据校验码进行比较,如果校验码相同,则直接忽略;如果不同就重新下载元数据并对本地缓存目录中的元数据进行覆盖,从而完成缓存有效性验证。</p> <p>二、用法详解</p> <p> (1)配置文件说明:包含仓库位置路径、缓存大小、缓存路径及相关各种配置信息;每个yum命令行可以指向多个仓库,仓库间可以有优先级等相关配置;有如下两部分组成:</p> <p> a.主配置文件:<strong>/etc/yum.conf </strong>(为各仓库指向提供公共配置信息,遵循windows上ini文件的语法格式)</p> <p> yum.conf文件中的<strong>[main]</strong>段提供公共配置,详情见下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160753-5.png" title="1442718708209874.png" alt="blob.png" /></p> <p> b.各仓库的定义:<strong>/etc/yum.repos.d/*.repo </strong>(必须以repo结尾的文件才有效,每个repo文件中可以配置一至多个仓库)</p> <p>默认情况下只需配置name、baseurl及gpgcheck=0就可以(默认gpgcheck=1)</p> <p> <strong>[repositoryid]</strong>对于当前系统的yum来讲,此repositoryid用于惟一标识此repository指向,因此,其必须惟一,详情见下图:<img src="//cto.wang/usr/uploads/2016/07/20160703160753-17-1.png" title="1442721072528750.png" alt="blob.png" /></p> <p>补充说明:cost属性指明当前repository的访问开销,默认为1000;</p> <p>查看yum缓存路径如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160753-95.png" title="1442723147825340.png" alt="blob.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160753-24.png" title="1442723515571765.png" alt="blob.png" /></p> <p><strong>仓库管理:</strong></p> <ol class=" list-paddingleft-2"> <li> <p>列出当前yum所有可用仓库,命令格式:repolist [all|enabled|disabled]<span class="Apple-tab-span"> </span></p> </li> </ol> <p>输入命令:yum repolist (等价于yum repolist enabled),效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160753-94.png" title="1442723454363793.png" alt="blob.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160753-84.png" title="1442724205391349.png" alt="blob.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160754-15.png" title="1442724334437174.png" alt="blob.png" /></p> <p><strong>缓存管理:</strong></p> <p>2.清理yum缓存,命令格式:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]</p> <p>清理yum缓存中包的数据,输入命令:yum clean packages ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-100.png" title="1442724700593609.png" alt="blob.png" /></p> <p>清理yum缓存中的元数据,输入命令:yum clean metadata ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-57.png" title="1442724786178318.png" alt="blob.png" /></p> <p>清理yum缓存中过期的数据,输入命令:yum clean expire-cache ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-91.png" title="1442724950344123.png" alt="blob.png" /></p> <p>清理yum缓存中rmp数据库中的数据,输入命令:yum clean rpmdb ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-1.png" title="1442725041897626.png" alt="blob.png" /></p> <p>清理yum缓存中的插件数据,输入命令:yum clean plugins ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-60.png" title="1442725150216636.png" alt="blob.png" /></p> <p>清理yum缓存中所有的数据,输入命令:yum clean all ,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-69.png" title="1442724614411338.png" alt="blob.png" /></p> <p></p> <p>3.yum缓存创建,makecache自动连接至每一个可用仓库,下载其元数据,将其创建为缓存</p> <p>输入命令:yum makecache,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-15-1.png" title="1442725769853113.png" alt="blob.png" /><strong>程序包查看:</strong></p> <p>4.yum程序包查看,输出格式为:“包名+平台+版本号-发行号+提供仓库(从哪个仓库中安装在当前系统中的)”,命令格式:</p> <p>yum list [all | glob_exp1] [glob_exp2] […]</p> <p>yum list {available(可安装尚未安装)|updates(可升级)|installed(已安装)|extras(仓库中没有但系统中安装的包)|obsoletes(已废弃的)|recent(刚加进仓库的新包)} [glob_exp1] […]</p> <p>grouplist [hidden] [groupwildcard] […]</p> <p>查看mysql开头的程序包,输入命令:yum list mysql*,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-67.png" title="1442726290740403.png" alt="blob.png" /></p> <p>查看yum中可安装尚未安装的程序包,输入命令:yum list available,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160754-82.png" title="1442728911634276.png" alt="blob.png" /></p> <p></p> <p>查看yum中可升级的程序包,输入命令:yum list updates,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160755-34.png" title="1442729002985763.png" alt="blob.png" /></p> <p>查看yum中已安装的程序包,输入命令:yum list installed,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160755-57.png" title="1442729122161563.png" alt="blob.png" /></p> <p>查看yum中仓库里没有但系统中安装的程序包,输入命令:yum list extras,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160755-89.png" title="1442729333771366.png" alt="blob.png" /></p> <p></p> <p>查看yum中已废弃的程序包,输入命令:yum list obsoletes,效果如下图:</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160755-68.png" title="1442729412194148.png" alt="blob.png" /></p> <p></p> <p>查看yum中刚加进仓库的新程序包,输入命令:yum list recent,效果如下图:</p> <p><img src="/upload/f5ednfrx1i0.png" title="1442729494620779.png" alt="blob.png" /></p> <p>查看yum中所有可用的程序包组,输入命令:yum grouplist,效果如下图:</p> <p><img src="/upload/3duvqza5xff.png" title="1442729979368151.png" alt="blob.png" /></p> <p><strong>程序包安装:</strong></p> <p>5.yum程序包安装,只需提供包名即可安装,命令格式:install package1 [package2] […],支持多个包同时安装。</p> <p></p> <p>如果某包有在不同仓库中有多个不同版本,默认会安装最新版本;</p> <p>如果要安装指定版本:install PACKAGE-VERSION …</p> <p>安装php程序包,输入命令:yum install php,效果如下图:<img src="/upload/gzun544fbhe.png" title="1442730482607765.png" alt="blob.png" /></p> <p>安装php-mysql程序包并自动确认(加-y参数),输入命令:yum -y install php-mysql,效果如下图:<img src="/upload/3mdg05wopmq.png" title="1442730796421701.png" alt="blob.png" /></p> <p></p> <p><strong>程序包重新(覆盖)安装:</strong></p> <p>命令格式:reinstall package1 [package2] […]</p> <p>重新安装php-mysql程序包,输入命令:yum reinstall php-mysql,效果如下图:</p> <p><img src="/upload/bp5mgxiet33.png" title="1442731156529006.png" alt="blob.png" /></p> <p><strong>程序包升级</strong></p> <p>命令格式:update [package1] [package2] […]</p> <p>yum升级java程序包,输入命令:yum update java,效果如下图:<img src="/upload/gsnvl3grgug.png" title="1442731914192096.png" alt="blob.png" /></p> <p><strong>程序包降级</strong></p> <p>命令格式:downgrade [package1] [package2] […]</p> <p>yum降级java程序包,输入命令:yum downgrade java,效果如下图:</p> <p><img src="/upload/g54aynhjx4q.png" title="1442731838251295.png" alt="blob.png" /></p> <p></p> <p><span style="color:#7030a0"><strong>检查程序包有哪些可用升级</strong></span></p> <p>命令格式:check update</p> <p>yum检查程序包有哪些可以用升级,输入命令:yum check-update,效果如下图:<img src="/upload/hi0flxmmnfo.png" title="1442732593126145.png" alt="blob.png" /></p> <p><span style="color:#7030a0"><strong>卸载程序包</strong></span></p> <p>卸载安装包的依赖包会把安装包也卸载,但卸载安装包不会卸载其关联的依赖包,所有依赖于正卸载的程序包的程序包会被一并卸载,命令格式:remove | erase package1 [package2] […]</p> <p>yum卸载php安装包,输入命令:yum remove php,效果如下图:</p> <p><img src="/upload/hbmrpo4jtdm.png" title="1442732948598850.png" alt="blob.png" /></p> <p>yum卸载php-common安装包,输入命令:yum remove php-common,效果如下图:</p> <p><img src="/upload/s15mz3jfrg3.png" title="1442733084800625.png" alt="blob.png" /></p> <p>yum卸载php-mysql安装包,输入命令:yum erase php-mysql,效果如下图:<img src="/upload/ooo3rsw100q.png" title="1442733453217606.png" alt="blob.png" /></p> <p></p> <p><span style="color:#7030a0"><strong>程序包查询</strong></span></p> <p>查询程序的相关简要信息:info PACKAGE …</p> <p>在包名和sumary信息中搜索指定的关键字:search KEYWORD …</p> <p>查询指定文件由哪个程序包安装生成:provides|whatprovides /PATH/TO/SOMEFILE</p> <p>yum查询php安装包信息,输入命令:yum info php,效果如下图:<img src="/upload/irlmy0ql2wx.png" title="1442734066434352.png" alt="blob.png" /></p> <p>yum搜索mysql(搜索结果只要在程序包名称和描述信息包含mysql关键字就会被显示出来),输入命令:yum search mysql,效果如下图:<img src="/upload/c2jw4gskwdm.png" title="1442734346677565.png" alt="blob.png" /></p> <p>yum查询/etc/fstab是由哪个安装包生成的,输入命令:yum provides /etc/fstab或者yum whatprovides /etc/fstab,效果如下图:</p> <p><img src="/upload/odmz1pljyww.png" title="1442734693122492.png" alt="blob.png" /></p> <p></p> <p><strong>安装/升级本地的程序包文件</strong></p> <p>注意:红帽7不支持localinstall和localupdate,红帽6和7都直接使用install和update安装即可</p> <p>用于安装仓库中并不存在的程序包文件,这些程序包有可能又依赖于仓库中的某些程序包。</p> <p>安装本地程序包命令格式:localinstall rpmfile1 [rpmfile2] […]</p> <p>升级本地程序包命令格式:localupdate rpmfile1 [rpmfile2] […]</p> <p>yum安装本地php-common-5.3.3-40.el6_6.x86_64.rpm程序包,输入命令:yum localinstall php-common-5.3.3-40.el6_6.x86_64.rpm ,效果如下图:</p> <p><img src="/upload/zulss2etamv.png" title="1442735307780945.png" alt="blob.png" /></p> <p></p> <p><strong>程序包组管理</strong></p> <p>列出所有包组:grouplist</p> <p>显示指定包组详情:groupinfo group1 […]</p> <p>安装:groupinstall group1 [group2] […]</p> <p>卸载:groupremove group1 [group2] […]</p> <p>升级:groupupdate group1 [group2] […]</p> <p>注意:红帽7不支持groupinstall、groupremove和groupupdate,红帽6和7都可直接用install、remove或update来管理包组</p> <p>方法为:<strong>install </strong>+ <strong>@</strong> + <strong>包组名</strong>,如yum install @"Ruby 支持"</p> <p>yum查看Eclipse包组信息,输入命令:yum groupinfo Eclipse,效果如下图:</p> <p><img src="/upload/qbrbst2qc0o.png" title="1442735749243388.png" alt="blob.png" />yum安装Ruby支持包组,输入命令:yum groupinstall "Ruby 支持" 或 yum install @"Ruby 支持"(此处必须加双引号,不然无效),效果如下图:<img src="/upload/aug1c2hveqc.png" title="1442736088680376.png" alt="blob.png" /></p> <p>yum卸载Ruby支持包组,输入命令:yum groupremove "Ruby 支持"或 yum remove @"Ruby 支持"(此处必须加双引号,不然无效),效果如下图:<img src="/upload/d5mvhgn3ja4.png" title="1442736186200181.png" alt="blob.png" /></p> <p>yum升级Ruby支持包组,输入命令:yum groupupdate "Ruby 支持"或yum update @"Ruby 支持"(此处必须加双引号,不然无效),效果如下图:</p> <p><img src="/upload/p3u04mn4fpp.png" title="1442736275745784.png" alt="blob.png" /></p> <p><strong>yum命令的可用选项:</strong></p> <p>-y: 自动回答为“yes”</p> <p>–disablerepo=: 临时禁用在配置文件中配置并启用的某repository;</p> <p>–enablerepo=: 临时启用指定的某repo;</p> <p>–nogpgcheck: 禁止做包校验;</p> <p></p> <p><strong>yum内置变量:</strong></p> <p>用于保存当前平台的相信息;</p> <p>(1) $raleasever: 当前OS发行版的主版本号;</p> <p> <span class="Apple-tab-span"> </span>例如,对CentOS 6.6 x86_64,主版本号为6;</p> <p>(2) $arch:平台 如:i386, i486,i586</p> <p>(3) $basearch: 基础平台, 例如i686, i586, i486以及i386的基础平台同为i386;</p> <p>(4) $YUM0-$YUM9</p> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信