Linux软件包管理神器-->YUM

  1. 云栖社区>
  2. 博客>
  3. 正文

Linux软件包管理神器-->YUM

科技小能手 2017-11-12 14:49:00 浏览419
展开阅读全文

##########################################

AUTHOR:          Honway_Liu
DATE:                 2012-02-24
##########################################
 
一、什么是YUM
二、为什么要使用YUM
三、怎样使用YUM
四、YUM的组成及工作原理
五、YUM的配置
六、YUM的简单使用
##########################################
 

一、什么是YUM

         YUM是“Yellow dog Updater, Modified”的缩写,可执行程序名为yumYUM是一个在FedoraRedHat以及SUSECentOS中的Shell前端软件包管理器。在红帽企业版Linux 5中引入YUM的重要原因之一,便是YUM能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装,便于管理大量系统的更新问题。
 

二、为什么要使用YUM

         使用yum来安装软件包,要比使用rpm命令安装软件包方便的太多太多了。最主要的一点,我想还是因为yum可以自动的解决依赖关系吧。使用过linux安装二进制软件包的人应该都遇到过rpm包之间的依赖关系,特别是循环依赖,真的是很让人头疼,有时候为了安装一个软件包,不得不浪费一整天的时间。yum自动解决依赖关系,为我们缩短了安装软件包所使用的时间,提高了工作效率,像这样一个堪称尤物的家伙,怎么能让人不爱呢。yum也可以使用一条命令来直接升级系统上所有要升级的软件包,你说,不爱她你爱谁呢。
 

三、怎样使用YUM

         yum的使用其实很简单,我们只需要把yum软件包安装好,然后改下yum源配置文件就可以了,就可以从别人的yum源上自动下载软件包,然后自动安装。不过本文章的意义不是在于教你改配置文件,然后安装yum包,然后再利用yum命令来安装软件包,而是要自己动手,自己做YUM源,自己使用自己的YUM源,充分的理解YUM的工作原理。
 

四、YUM的组成及工作原理

         yum由两部分组成,一部分是yum源(或称之为yum仓库|其实就是软件包仓库),另一部分就是yum的客户端,说白了就是安装好yum软件,可以使用yum命令的客户机。
 
    当我们使用yum命令来安装一个软件包的时候,yum会根据yum的配置文件(/etc/yum.repos.d/*.repo)来查找yum源,然后下载yum源上的数据文件缓存到本地,以便再次查询的时候,提高查询速度。只有第一次才会下载缓存文件。完成之后,如果要安装的软件包在软件仓库里,那么就开始根据服务器上依赖关系文件里面的定义,看是不是有依赖其它软件包,如果有,会提示用户有依赖关系,是不是要安装,用户回答y的时候,开始自动解决依赖关系直到完成软件包的安装。如果没依赖关系,也会提示用户,找到了要安装的软件包,是不是现在安装,如果用户输入y,则开始安装,如果直接回车,默认是不安装的。一个yum命令,会开启一个yum事务,所以,如果你正在执行yum命令,然后别人登录到了你在的服务器,这时候他是不能执行yum命令的,这时候的yum进程是被锁定的,只有当你的yum命令执行完成后,事务结束,别人才可以使用yum命令。

五、YUM的配置

5.1      配置客户端

         客户端的配置为两步,一是安装软件包,二是改配置文件

 
 
我的机器上安装了以上软件包,直接使用rpm -ivh就可以安装了,安装完成后,这一步就算是完成了


5.1.2 更改配置文件


yum的配置文件有两部分:主配置文件和yum源配置文件
    主配置文件
[root@Honway ~]# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum                 缓存目录
keepcache=0             是否保存缓存
debuglevel=2   调试级别
logfile=/var/log/yum.log 日志文件
distroverpkg=redhat-release
tolerant=1        允许出错(如果有多个软件包,当有某个包已经安装的时候,是否继续,1表示允许)
exactarch=1    
obsoletes=1
gpgcheck=1      安装的时候,是不是检测检测软件包的签名信息
plugins=1 启用插件功能
 
 
 
 
 
      

再来看一下yum怎么指定yum源的,文件位于/etc/yum.repos.d/目录下,在这个目录中所有以.repo结尾的文件,都会被yum认为是yumyum源配置文件。其写法如下

[id]
name=custmed yum repository
baseurl=ftp://192.168.0.254/pub/Server
gpgcheck=0[0禁用|1启用]
enabled=0[0禁用|1启用] (默认开启,该项可不写)
 
 
其中id就是一个名字,可以随便写。
name是对id的一个描述信息。
baseurl这里有三种写法,也代表了yum支持的三种协议,远程协议有ftp://http://,本地yum源的file:/// 是三条斜线
gpgcheck是不是检测签名的
enabled是不是启用这一项,一个yum.repo配置文件中,可以写多项,每一项的都是以[id]开始的,每一个[id]都可以认为是一个独立的段

5.2      配置YUM源(YUM仓库|YUM服务器端)

         要配置YUM源,我们要使用一个命令,叫做createrepo,这个软件包需要安装,在系统光盘Server目录中(RHEL5)直接使用rpm -ivh命令安装即可。
    安装完成后,就可以开始创建yum源了。为了演示效果,我这里拷贝一下光盘VT目录,对VT进行创建YUM源。


直接使用命令createrepo 后面跟要对哪些软件包进行创建(这里指的是软件包所在的目录名),创建完成后,就会在该目录出现一个目录,叫repodate



repodate目录: yum源的元数据文件目录
    primary.xml.gz  yum源中定义所有rpm文件及其彼此间的依赖关系,还包含了每一个rpm包中的文件名
    filelists.xml.gz: yum源中每一个包中文件的文件相关信息;
    other.xml.gz:   额外信息,比如changelog
    repomd.xml  校验码和时间戳
    comps-rhel5-server-core.xml 软件包的分组信息;(除非有分组,否则不会出现,有时候分组需要自己手动创建)
这样,一个YUM源就算是创建完成了,是不是很EASY啊,创建完成后,我们还可以接着对其它的软件包进行创建,可以对Server目录或者其它目录进行创建,也可以对我们自己制作的RPM包进行创建,把要创建YUM源的所有软件包放到一个目录里面,然后使用createrepo后面跟软件包所在的目录就可以了。
到这里,我们就算是创建完YUM源了我们改一下yum客户端配置文件,就可以直接使用了,因为客户端和服务端是在同一台机器上,所以我们可以不用FTPHTTP服务,直接使用file:///

六、YUM的简单使用

yum [options] [command] [package ...]
 command is one of:
        * install package1 [package2] [...]
        * update [package1] [package2] [...]
        * check-update
        * upgrade [package1] [package2] [...]
        * remove | erase package1 [package2] [...]
        * list [...]
                            all | installed | available | updates
        * info [...]
        * provides | whatprovides feature1 [feature2] [...]         查询指定的文件是由哪个软件包提供的
        * clean [ packages | headers | metadata | dbcache | all ]     清除缓存
        * makecache
        * groupinstall group1 [group2] [...] 安装指定的软件包组
        * groupupdate group1 [group2] [...]
        * grouplist [hidden] [groupwildcard] [...]         显示软件包组
        * groupremove group1 [group2] [...]                删除指定的包组
        * groupinfo group1 [...]                      查询指定包组的信息
        * search string1 [string2] [...]
        * shell [filename]
        * resolvedep dep1 [dep2] [...]
        * localinstall rpmfile1 [rpmfile2] [...]        安装下载好的rpm文件
        * localupdate rpmfile1 [rpmfile2] [...]               升级下载到本地的rpm
        * reinstall package1 [package2] [...]        重装软件包,不删除原来的.
        * downgrade package1 [package2] [...]  降级软件包
        * deplist package1 [package2] [...]
        * repolist [all|enabled|disabled]              显示yum
        * help [command]             显示指定软件包的help信息
         以上是从man yum里面弄出来的,只对一些常见的进行了解释,其它的,自己翻译自己理解吧,呵呵。
 
下面贴下自己的yum源配置文件。
[Server]
name=Server
baseurl=http://192.168.0.254/pub/Server
gpgcheck=0
enabled=1
 
[VT]
name=VT
baseurl=http://192.168.0.254/pub/VT
gpgcheck=0
enabled=1
 
[Cluster]
name=Cluster
baseurl=http://192.168.0.254/pub/Cluster
gpgeheck=0
 
[ClusterStorage]
name=ClusterStorage
baseurl=ftp://192.168.0.254/pub/ClusterStorage
gpgcheck=0
enabled=1


本文转自 gm100861 51CTO博客,原文链接:http://blog.51cto.com/gm100861/788535

网友评论

登录后评论
0/500
评论
科技小能手
+ 关注