YUM介绍:RPM前端工具,在将rpm包依赖关系做成数据库的前提下,自动查找依赖关系,并从某个仓库(repository)下载到所需要的安装包并在本地完成安装;在客户端,用yum可以安装在本地配置文件中可以找到的仓库,通过仓库的元数据(仓库(repository)中的rpm包的rpm信息被抽取出来,制作成yum仓库的元数据),可以知道仓库中有哪些软件包,以及对应的安装依赖关系。****例如:如果要安装ZZ依赖XY,查到本地已经安装Y,则yum只需要从仓库(repository)中下载ZX安装即可;;;根据本地rpm数据库中的数据,以及仓库(repository)中元数据判断要下载那些rpm包来安装,然后等待下载完成后自动调用rpm命令来安装这些下载下来的rpm包。

 

 

使用yum命令安装软件的流程:

yun  client先将仓库元数据下载至本地,在本地缓存下来,以后再通过yum安装rpm包时,就不用再连接远程仓库获取元数据了,可以在本地完成分析,需要用到那个软件包,他就联系对应仓库下载软件包,缓存仓库(repository)元数据的目的就是为了加速。

 

 

Yum仓库的实现方式有如下几种:

1)  ftp://

2)  http://

3)  在本地某个目录,例如file:///yum (注:file//为协议格式,/yum为仓库的路径)

 

实现yum的步骤(yum 仓库(repository)与yum client):

1)  配置好yum的仓库(repository),对应的[主机]路径下,存放着我们需要的rpm包,这些rpm包要有包含他们元数据的文件。***createrepo命令自动抽取rpm包元数据并生成元数据文件(一堆压缩后的xml文档,存放在.repo|.repofile|repodata目录下),这个隐藏目录存放的位置,就是yum仓库(repository)的位置。

2)  我们针对某个目录创建(来createrepo)元数据文件(repodata目录),通常就是yum仓库(repository)所在目录。

3)  客户端(主配置文件/etc/yum.conf)yum  install | reinstall |remove   rpm包基名(yum对程序包管理要依赖于仓库才能完成,需要通过配置文件告诉yum 仓库(repository的位置,可以编辑主配置文件或者配置文件/etc/yum.repos.d/*.repo,配置文件/etc/yum.repos.d/*.repo被视为主配置文件的一部分)。

 

 

下面介绍yum客户端主配置文件/etc/yum.conf:

[main]        #此配置文件格式是分段配置,section[repository_id]定义仓库,section[main]是特

#殊的,除了它以外每一个中括号括起来就是一个仓库的名称,main是为后面每一个仓库提#供默认的配置;同一yum客户端可以有多个仓库,但是全局配置[main]只有一个,也可以#在主配置文件中写上仓库名称定义它,也可以在/etc/yum.repos.d/下新建一个*.repo文件,#并在里面定义仓库。

Cachedir=/….PATH…(告诉yum将什么目录当成缓存目录)

Keepcache=0            (通过yum仓库下载到本地的rpm包是否在安装后删除,还是长期保存)

Debuglevel=2(调试级别)(运行过程中是否显示错误信息,级别越高显示的越详细)

Logfile=/..PATH..(日志文件位置,使用yum执行了什么操作会保存在日志中以供以后检索)

Exactarch=1     (1表示下载软件包时必须和本地硬件平台精确匹配;0反之)

Gpgcheck=1     (gpg用于验证软件包的来源合法性以及完整性,这里表示每次安装一个软件包是是否要自动完成来源合法性的检测,1yes)

 

 

定义yum仓库的配置文件详解:

如果希望定义一个yum仓库,可以在/etc/yum.repos.d/下创建一个以.repo为后缀名的配置文件,每一个.repo文件由[repository_id]以及下面跟的几个指令组成:常用指令如下:

Name=……(仓库的描述信息,无意义,但不可以缺少这个值,中间可以有空格)

Baseurl=……(告诉yum这个仓库可以通过什么路径访问,一般ftp://;http://;file://

Enabled={0|1}(是否启用此仓库,没写enabled指令都是默认启用的,1为启用,0为不启用)

Gpgcheck={0|1}(是否启用gpg校验,没写gpgcheck指令默认为启用,1,为启用,0为不启

#用,如果为1,要告诉yum用于gpg校验的key文件路径,可在本地也可在远程主机上)

Gpgkey=/….PATH….

Cost=1000(在几个yum仓库中优先选哪个,cost值越低越优先使用)

*)[repository_id]可以随便取名,主要是本机唯一的,不与其他repository_id冲突即可。

 

示例:

[base]

Name=centos

Baseurl=http://172…(这个路径下必须直接能够找到repodata目录!!)

Enabled=1

Gpgcheck=0

这样就完成了一个yum仓库的定义,配置好yum仓库后本地就可以通过yum命令来安装程序了。

 

Yum命令介绍:

Yum subcommand:

         List[all|installed|available|updates(可更新的包)|extras(本地不属于任何yum仓库的包)|recent(新添加进仓库的包)] #支持globbing,例如#yum list all  bind*#all指所有包,installed指已安装的包,available指可安装的包。

 

         Repolist[all|enabled|disabled]查看当前可使用的yum仓库,默认采用enabled选项

 

*yum有包组的概念,可以安装/卸载一整个包组,如果包组名中间有空格的话需要用引号引起来。

 

         Grouplist(显示已安装/可安装的包组)

         Groupinfo  “包组名(查看包组信息:描述、必须装的包、默认装的包、可选装的包)

 

 

 

 

 

*yum仓库元数据缓存到本地可以加速yum操作,但缺点是如果yum仓库更新的话,yum无法反映出之后的更新,因此在必要时要清空本地的缓存,管理缓存的选项如下:

 

         Clean  [packages(清空本地缓存的包)|metadata(清空本地缓存的元数据)|all(清空所有数据)]

Makecache(手动建立元数据缓存)#yum  makecache

安装子命令:

         Install  packagename….(可以有多个包,用空格隔开)(可以用globbig

                   -y(自动回答为yes)

Reinstall  packagename(重新安装软件包)

升级子命令:

         Update packagename

         Update-to  packagename-version(指定升级到哪个版本)

         Check-update(检查一下本地有哪一些可以升级的软件包)

卸载子命令:

         Remove   packagename(用yum命令卸载包,依赖此包的软件也将一并被卸载)

查询某文件可以有那个rpm包来提供:

         Provides  /path/to/somefiles  #例:yum provides/etc/fstab(次包已安装)

                                                                           例:yumprovides /etc/named.cong(此包未安装)

搜索rpm

         Search      关键字#yum  search init

安装包组:

         Groupinstall  包组名(可以跟多个包组名,如果包组名中间有空格的话需要用引号引起来)

*******我们的开发环境(把下面几个包组安装好以后,我们就可以手动编译其他程序了,或制作源码rpm包为2进制rpm包了)

Rhel5/centos5上面安装:

1Development Tools (2)Server Platform Development (3)Develogmentlibraries

Rhel6/centos6上面安装:

1Development Tools (2)Server Platform Development (3)Desktop PlatformDevelopment

#yum groupinstall  “..” “..” “..”

 

         Groupupdate          包组名#包组更新

         Groupremove           包组名#包组卸载

         Downgrade               包组名#包组降级

使用yum安装升级本地rpm包(好处:可以通过yum仓库自动解决安装升级过程中发生的依赖关系问题,自动下载安装依赖的库,rpm包等等,rhel5localinstall|localupdate),rhel6install|update))

语法格式:yum  localinstall|localupdate|install|update  /path/XXXX.rpm

其他yum命令:

                   History(查看本机用户前几次使用yum操作的历史记录)

                   Version(为rpmdb提供的一个版本)

--nogpgcheck(此选项可跳过gpg检测,在命令行上指定的选项可以覆盖配置文件中的选项)

创建yum仓库

  • 用系统安装光盘来创建一个本地的yum仓库:

安装光盘本身就是一个yum仓库,将光盘挂载在系统上,光盘的那个挂载点就可以直接当做yum仓库来使用。

示例如下:

#yum clean all

#mount /dev/cdrom /media/cdrom

#vi /etc/yum.repos.d/base.repo(创建一个以.repo后缀结尾的文件就行,文件名自己取,只要不和其他repo文件重名即可,改baseurl)

baseurl=file:///media/cdrom      :x(保存退出)

#yum  makecache

#yum  repolist

 

**  .repo文件创建实例:

#vi /etc/yum.repos.d/mybase.repo

[centos6]                              #这是仓库名,可以随便取,不与其他仓库名重复即可。

name=centos 6.4 x86_64 #=”号前后不能有空格

baseurl=http://172…/x86_64/ #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0

enable=1                                        #可以不写这一行,默认为1.

cost=1000                                               #优先级

 

[cdrom_centos6]                                   #这是仓库名,可以随便取,不与其他仓库名重复即可。

name=centos base repo                    #=”号前后不能有空格

baseurl=file:///media/cdrom #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0

enable=1                                        #可以不写这一行,默认为1.

cost=2000                                               #优先级

:x(保存退出)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 创建连接到互联网上yum源的yum仓库

步骤:查看互联网上的yum源的包含repodata目录的目录如:

http://centos.ustc.edu.cn/centos/5/os/i386/   或者

http://centos.ustc.edu.cn/centos/5/os/x86_64/

baseurl的值设置为上面的网址即可。

问题:1)如果新的版本出现,旧版本的目录就空了,如rhel6.4àrhel6.5

            2)要批量给自己的服务器配置yum仓库,但是有的服务器是rhel5,有的服务器是rhel6,有的服务器是32位操作系统,有的服务器是64位操作系统。

解决方案:在定义baseurl选项时,可以使用yum的内置变量,它在/etc/yum.repos.d/下有样例文件CentOS-Base.repo

#less CentOS-Base.repo(下面介绍yum的内置变量)

$releasever:检查并替换为当前系统的主要发行版本号,它不包括次版本(rhel6.5,为6

$basearch: 检查并替换为当前系统的硬件平台(cpu架构),x86_64i386,这个值可以用命令uname  -m 来显示;此变量会将ix86x[3456])统统替换为i386

例:baseurl=http://mirror.sohu.com/centos/$releasever/os/$basearch/

这个路径不论有的服务器是rhel5,有的服务器是rhel6,有的服务器是32位操作系统,有的服务器是64位操作系统。都可以使用!!!

4)  制作yum仓库

#yum install createrepocreaterepo:为1yum仓库创建元数据)

使用方法:

#mkdir /yum

#mv xen-4.1/   /yum

#cd /yum

#createrepo /yum/xen-4.1

#cd /yum/xen-4.1/repodata;ls

其中:

xxx.filelists.xxx当前yum仓库内所有rpm包的文件列表,yumprovides命令依赖此文件。

xxx.primary.xxx:包含当前yum仓库内所有rpm包的文件列表以及rpm包之间的依赖关系。

xxx.other.xxx: 包含当前yum仓库内所有rpm包的changelog(改变日志),用命令来查询:

rpm  -q  --changelog  包名,可以在制作rpm包时修改它的changelog

repomod.xml:记录上面3个文件的时间戳,每次用createrepo命令创建repodata目录都会更新这个文件。

***:我们使用yum命令安装程序时,它会拿缓存在本地的repomod.xml中的时间戳与远程yum仓库中的repomod.xml中的时间戳做比较,若远程时间戳较新,它会自动更新元数据,并自动下载与安装软件包。

***:使用自建的yum仓库:

#vi /etc/yum.repos.d/xen.repo

[xen-4.1]                               #这是仓库名,可以随便取,不与其他仓库名重复即可。

name= xen-4.1 x86_64               #=”号前后不能有空格

baseurl=file:///yum/xen-4.1 #这个是远程的服务器上已http方式提供的yum仓库源

gpgcheck=0                                   #可以不写这一行,只要在主配置文件中将这一项设置为0

enable=1                                        #可以不写这一行,默认为1.          

:x(保存退出)

#yum  repolist   #yum install xen

5)  yum缓存位置:/var/cache/yum

 

*)如果我们学习了网络服务器httpftp后,将这些yum源一导出,也可作为网络yum源!