软件包管理器之二——YUM介绍及使用

一、前言

    之前我们介绍了RPM的应用(详细请查看http://www.178linux.com/archives/6383),发觉RPM安装软件有一个很繁琐的问题,那就是包与包之间的依赖关系,如果想正常安装和使用软件程序,就必须根据要求一步一步的解决软件之间的依赖关系。那么如果程序使用的包很多,将会很消耗使用人的时间和精力。那么有没有办法解决这一问题呢?

    在RPM中我们介绍了RPM软件会记录软件之间的安装信息,其中也包括了软件之间的依赖属性。那么如果我们在安装前就分析这个列表,那么在安装时就能根据软件之间的关系将所需的软件一次性安装起来,这样就能解决这一问题,这就是 YUM 的机制。


二、yum的介绍

    yum(Yellow dog Updater Modified)是CentOS中属于RPM前段软件包管理器,能从指定的服务器中下载RPM包,并自动分析和处理RPM包之间的依赖关系,最后将依次所依赖的软件包都安装了,而无需繁琐的一个一个安装。


三、yum repository:yum仓库

    yum仓库的组成部分

        3.1、数据

            包含所有的软件包文件

        3.2、元数据

            指的是数据文件:包括每个包的包名、版本信息、各包所包含的文件列表、包与包之间的依赖关系、包的分组信息

小扩展:元数据是怎么来的呢? 
    使用createrepo工具,能够简洁的快速的将我们所指定的存放大量RPM包的目录,里面所有的RPM包信息都读出来,分析他的依赖关系并生成元数据。所以createrepo可以理解为它是制作yum元数据的工具。     在光盘里其实也有这个元数据,路径在光盘中的 [root@www mnt]# cd repodata/ 里,然后是以 sqlite文件后缀
    备注:centos5 是以 xml 后缀,centos6、7是以sqlite数据库的方式存储的

四、yum的配置文件介绍

    yum的配置文件有2中 : 主配置文件 + 仓库配置文件

    4.1、主配置文件路径  /etc/yum.conf

    [main]    
    cachedir=/var/cache/yum/$basearch/$releasever     #下载RPM包的缓存目录
    keepcache=0                                       #RPM缓存的程序包安装完成后是否保存,0表示不保存,1表示保存
    buglevel=2                                        #调试级别 取值范围 0 - 10,默认值为2    
    logfile=/var/log/yum.log                          #yum相关日志存放路径
    exactarch=1                                       #是否要平台完全匹配才能安装
    obsoletes=1                                       #需不需要检查已过期的仓库
    gpgcheck=1                                        #是否检查包的完整性和合法性
    plugins=1                                         #是否允许支持yum的插件功能,0 表示不允许 ,1表示允许,建议允许,一般会用yum-fastestmirror这个插件           
    installonly_limit=5                               #允许保留多少个内核包
    bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
    distroverpkg=centos-release                       #指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm 包

    4.2、仓库配置文件路径 /etc/yum.repos.d/*.repo  

        仓库文件可以有多个,而且一个或几个相关的仓库的配置信息也可保存为一个文件,并且所以的仓库文件名都以 .repo结尾

[REPOID]             #容器名字,必须是唯一的
name=                #some name for this repository仓库的名字,仅作一个标识
baseurl=             #指定真正仓库所在的路径,可以指多个仓库
                        #例如:baseurl=file:///media/cdrom
                        #      ftp://172.168.1.1/path    #备注第二行不能顶格写,否则会出错
mirrorlist=          #列出容器可以使用站点,如果不想使用,可以再前面加 # 注释
enabled= {0 | 1}     #指是否启用这个仓库,0表示不启用,1表示启用
gpgcheck= {0 | 1}    #是否要检测软件包的合法性,0表示不检测,1表示不检查
gpgkey=              #软件包的公钥文件所在路径,例如:gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6
cost=                #仓库优先级,比如一个软件包在多个仓库都有,那应该选择哪个安装呢?就是根据这个优先级,默认是100,数字越小表示越优先使用

         备注:默认各仓库的用法:

            base库:通常为系统发行版所提供的程序包(就是光盘)

            updates库:存放更新包

            extra库:存放额外包

            epel库:epel库文件

               库本身有优先级的,但是仅是在客户端有,服务器端是没有优先级的

     小贴士:yum可支持多个协议,包括 ftp、http、nfs和本地文件共享服务

        所以仓库配置文件中的 baseurl 一项可以有多个写法,下面是各写法的格式

            1)ftp

                格式:ftp://server/path/to/repository

            2)http

                格式:http://server/path/to/repository

            3)nfs

                格式:nft://server/nfs_path

            4)本地文件共享服务 

                格式:file:///path/to/repository


五、yum安装步骤

yum 安装步骤.png



六、yum命令的使用

    6.1、yum查询功能

        yum [option] [需要查询的信息][参数]

            -y:默认yum需要是交互模式,-y表示自动提供yes响应

            search:搜索某个软件名或关键字

            list:列出所有yum所管理的软件包和名称

            info:同上,也类似rpm -qai

            provides:查找该命令是由软件安装生成的,类似rpm -df的功能

            repolist:列出所有可用的repo 

例如:
[root@localhost ~]# yum provides bash

yum provides.png

[root@localhost ~]# yum repolist

yum repolist.png

    6.2、安装、升级、降级、卸载功能

        yum [option] [需要查询的信息][参数]

            install:后面接需要安装的软件

            reinstall:后面接需要重新安装的软件

            update:后面接需要升级到的软件

            check-update:检查可用的升级包

            downgrade:后面接需要降级到的版本

            remove:卸载软件

            erase:功能同上,卸载

例如:
[root@localhost yum.repos.d]#  yum install zlib-static

yum install.png

    6.3、和软件组相关的功能

        yum [组功能] [软件组]

            grouplist:列出所有可使用的组列表

            groupinfo:后面接group name,可用了解该group内含所有组的名称

            groupinstall:安装整组的软件

            groupremove:删除某个组的软件 

例如:
[root@localhost yum.repos.d]# yum grouplist
#所有的包组未一一列举,若想安装某组可使用groupinstall直接安装
Installed Groups:            #已经安装的软件组
   Additional Development
   Base
   Console internet tools
   Development tools
Installed Language Groups:   #已经安装的语言组
   Arabic Support [ar]
   Armenian Support [hy]
   Georgian Support [ka]
Available Groups:            #有效软件组包文件
   Backup Client    
   Backup Server
Available Language Groups:   #有效的语言组包文件
   Afrikaans Support [af]
   Albanian Support [sq]

    6.4、清理缓存

        yum clean { all | package | headers }

            all:将所有的数据删除,包括元数据和软件文件

            package:将所有已下载的软件文件删除

            headers:删除所有下载的元数据文件

例如
[root@localhost yum.repos.d]# yum clean all     #这样将会清除所有的已下载的元数据和软件文件
Loaded plugins: fastestmirror, security
Cleaning repos: base extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

七、知识小结

    7.1、yum是RPM包的前端工具,主要解决了程序包的依赖关系

    7.2、需要了解yum的配置文件

           主配置文件 /etc/yum.conf  和 仓库配置文件 /etc/yum.repos.d/*.repo  

        7.3、yum按住功能的流程

        7.4、yum的命令

            安装、卸载、更新、程序组、清理缓存、查询等功能

原创文章,作者:螃蟹,如若转载,请注明出处:http://www.178linux.com/6445

赞 (0)
螃蟹螃蟹
上一篇 2015-07-21 21:55
下一篇 2015-07-23 17:48

相关推荐

  • Linux基础命令

    Linux基础命令 大家都知道Linux是由许许多多的小程序组成的,而这些小程序是怎么启动的呢?在Linux中这些小程序大多是靠命令来启动运行的 命令(COMMAND):请求内核将某个二进制程序运行为一个进程的过程就是命令 程序由命令运行之后就会形成一个有生命周期的‘进程’,一个静态的二进制程序运行为一个动态的进程是由命令发起的. 在Linux中命令可分为两…

    Linux干货 2016-11-02
  • Linux逻辑卷LVM实现

    Linux逻辑卷LVM实现 背景: 在学习Linux中,学习到了逻辑卷LVM,发现LVM是个十分好用的一个技术,可以多个硬盘合并在一起使用,同时还可以动态的增加和减少。在这里将Linux逻辑卷的具体实现记录下来。 介绍: 逻辑卷LVM:Logica Volum Manager,它是Linux环境下对磁盘分区进行管理的一种机制,普通的磁盘分区管理方式在逻辑分区…

    2017-08-12
  • 编译安装MariaDB源码包

        因为MySQL的发展趋势不甚乐观,MariaDB已替代MySQL被CentOS 7做为默认组件,如果想在CentOS 6中使用最新的MariaDB,则需要我们手动安装,其安装方式有三种:     1、RPM包安装     2、二进制…

    Linux干货 2015-06-08
  • 初识linux内核编译

    编译内核前提:        1、准备开发环境。        2、获取目标主机上硬件设备的相关信息。        3、获取目标主机系统功能的相关信息,例如要启用的文件系统。 &…

    Linux干货 2016-09-13
  • rsyslog配置详解,结合mysql+loganalyzer展现

        环境:Centos7.2 前言:系统日日夜夜不停地运行着,有这么一个守护进程,兢兢业业地不断记录它运行产生的日志,有不起眼的闲言碎语,值得管理员撇一眼的系统报错,也默默地接收来自进程的严厉警告,甚至在内核崩溃前夕,同样不遗余力记录着当时发生的情形。他是无言的记录者,没有特别的修辞,但他的记录的文字却掷地有声。本…

    系统运维 2016-10-25
  • 第二十六天 iptables 初识

      Iptables是位于用户空间,是linux系统上的防火墙管理配置规则的工具,主要用于添加、删除、管理netfilter的规则,   Netfilter是位于内核中真正的防火墙,由5个钩子组成,也叫五个规则链。 Netfilter的作用:起到过滤封包,转换与映射IP地址和端口,拆分和修改封包内容,追踪封包等功能 Iptabl…

    Linux干货 2016-07-02

评论列表(3条)

  • stanley
    stanley 2015-07-21 22:00

    螃蟹的文章越来越专业了,文章写法也自成一派

    • 螃蟹
      螃蟹 2015-07-22 18:06

      @stanley:谢谢老师,我会继续努力的

  • wenjia0411
    wenjia0411 2015-08-05 13:42

    很好的分享