Yum 

       我们在使用linux的时候经常会用到的一款工具就是yum,因为yum为我们管理软件包、软件提供了很方便的使用方法。而在yum出现之前,从事linux工作的学者,很头疼的一件事就是如何安装linux软件包,我们知道使用rpm安装软件包的时候往往会有依赖关系困扰我们,这些依赖关系往往是很麻烦的,如果我们忽略(--nodeps)依赖关系来安装软件包,可能会造正软件的不可用!(我的老师曾经在没有yum的年代为处理依赖关系就要花费大量时间)

下面我就讲解一下我对yum的理解

       在讲yum时,不得不提rpm,我们知道在我们的linux系统上能够安装的软件包有3种:1基于rpmyum命令安装包 2我们手动编译安装源代码包(如我们编译内核、c,c++,perl等程序)3就是一些绿色安装包。rpmrpm is package manager)是redhat公司生产,最后被大多数linux发行商所采用的包管理器。后来为了解决安装过程中包依赖关系从而开发了yum.但是有一点大家一定要明白,yum不是rpm的替代品,yum是就相当于rpm的前端,就如同我们使用shell来调用系统内核一样,yum是基于rpm的,是rpm的一个外壳。

        Yum(yellow dog update manager)是一种基于C/S模式的体系,也就是说要想使用yum就必须有: yum源和yum终端

        yumyum源就是一堆包含了各种rpm软件包和定义这些软件包依赖关系的文件组成。根据经验,可以作为yum源的目录通常是有一个名叫repodata的目录,在该目录中有一些以压缩格式后缀名(这种描述不正确,linux中的文件是不分后缀名的)有xml的文件,这些文件包含了使不同平台、不同系统可以相互使用并且确定了依赖关系内容。我们的yum终端连到yum源有3中方法 1.通过http协议 (国内通常是使用,http://mirrors.sohu.com做的,这种方法网上很多,这里我就不讲了)2通过ftp协议(在局域网中做yum源,如公司内部,这里需要配置FTP服务,我这里也就不讲了) 3本地yum文件

(我主要讲讲本地yum源配置,方便大家的学习,使用)

      我们系统中定义yum的有两个文件 1 /etc/yum.repos.d/*.repo 注意是任何一个以 .repo结尾的文件(一定是以.repo结尾的文件,前面名字无所谓,这个文件很重要)2 /etc/yum.conf (这个文件不常用)   

  在具体配置yum源前我想还是先给大家讲讲/etc/yum.repos.d/*.repo文件

 

       Server  这是核心的

       Cluster  集群的    这是做集群yum的时候用到的

       ClusterStorage   集群存储的

       VT         虚拟化的

 

        4个都是yum源,并且都是独立配置使用的,我们这里就以Server核心的来做。注意我们这4个都是可以做yum源的,虽然我们常常都写在server.repo这个文件中,但是不一定都用的着,如果要没有这个文件,我们就需要手动创建一个是没有这个文件。和server.repo在同一个目录下的是一个rhel-debuginfo-repo的文件,这个文件是是和我们系统内核有关的文件,默认是禁用的,形同虚设的。

      

为了演示方便我使用虚拟机给大家做一个本地的yum Server为例

       步骤:

       1.   将我们从网上下载的iso镜像文件挂载上

          ]#mount  /dev/cdrom   /media/cdrom

       2.

            在我们的linux iso镜像中也有Server Cluster ClusterStorage VT

          4个目录,我们要做什么样的yum源就要将这些目录就是要

          分别对应到server.repo文件中那个yum源定义

          ]#cp /media/cdrom/Server   /tmp/Server

       3.

          /etc/yum.repos.d/server.repo中写入

           [base]    yum源的名字,名字是随意的,只要和别人不一样

           name=local Server yum  yum源的名称的描述信息

           baseurl=file:///tmp/Server  我们使用的是本地连接注意格式,这个

    很重要  用来指定yum源的位置,这取决于我们的repodata目录的位置,如我们的Server中就包含了一个repodata的目录

           enabled=0  表示这个yum源是开启的

           gpgcheck=0 表示我们是使用的ftphttp做的yum源会对yum源中的rpm

包进行检查

 

注意:如果这个文件中还有其他的yum源指向,即使我们用不到我们也要将其格式写对,并且baseurl的指向要存在且正确,否则我们的yum还是不能用,这里我的其他yum是配置正确的,且存在。

    4。只要我们的yum源配正确了,我们yum终端的使用就不会用太大问题了

 

      yum终端:(这些都是常用的,没有用的我都不写)

        1     yum list {all | installed | avaliable | update | obselete }

                    查看本地    所有的  已经安装的  还没有安装的 可更新

  可废弃的 rpm软件包 ,更为有用的是支持globing

        2

              yum clean all 手动清空yum在本地生成的缓存,我们在使用yum install的时候 是从yum源中找到软件包并将其放到内存缓存区中使用的

        3   yum install 交互式安装, 后面跟包名

                   eg: yum install mysqlserver

             yum -y install 非交互式安装

        4   yum remove mysqlserver  移除软件包

        5   yum update mysqlserver   升级软件包

        6   yum info mysqlserver   查询软件包的信息

        7   yum grouplist    显示yun源中所有的软件包租

        8   yum groupinstall "Development Tools" "Development Libraries"

                                        将一个软件包租安装下来

        9   localinstall=rpm -i 直接安装本地的软件包非yum源中的包

                           这样可以帮助我们解决rpm安装本地软件包的依赖关系

        10 yum -nogpgcheck install mysql  忽略数字签名的安装

 

  最后再给大家说一点,如果我们在第一次配好yum源后使用时出现

 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key

 ID 37017186 Public key for nano-1.3.12-1.1.i386.rpm is not installed

错误时,我们需要将密钥导入系统中,至于这是什么机制,这就是另一个话题了,不过我们只要在/etc/pki/rpm-gpg/,执行]#rpm --import RPM-GPG-KEY-redhat-release命令就行了。

 

 

 谢谢大家的阅读,如我写的有错误,请与我留言,让我们一起进步!