RPM及YUM工具介绍及使用(下)

YUM工具

YUM工作原理

YUM工具的出现就是为了解决rpm工具不能够自动解决软件包之间的依赖关系这一难题的。它的工作原理大致如下:
YUM透过分析RPM的标头资料,根据各软件的相关性找出软件所依赖的软件列表,然后去下载速度最快的yum仓库中下载所有相关RPM软件包,然后完成相应软件的安装。同时yum工具和rpm工具一样,也可以提供对软件包的查询,安装、升级和卸载操作。

YUM工具的使用

前面已经说过,yum工具是需要用到yum仓库的,那里面保存的有各种rpm包文件,rpm包软件之间的依赖关系等相关信息。所以,我们首先从建立yum仓库开始。

建立yum仓库

  • 查看系统已有的yum仓库情况

[root@test1 packages]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c7-media: 
repo id                                                                     repo name                                                                            status
c7-media                                                                    CentOS-7 - Media                                                                     9,007
repolist: 9,007


以上显示的仅是系统中已经启用的yum仓库,只有一个repo id为c7-media的仓库, 使用yum repolist all则可以查看系统中配置的所有yum仓库,包含未启用的, 如下所示:

[root@test1 packages]# yum repolist all
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c7-media: 
repo id                                                                     repo name                                                                    status
C7.1.1503-updates/x86_64                                                    CentOS-7.1.1503 - Updates                                                    disabled
base-debuginfo/x86_64                                                       CentOS-7 - Debuginfo                                                         disabled
base-source/7                                                               CentOS-7 - Base Sources                                                      disabled
c7-media                                                                    CentOS-7 - Media                                                             enabled: 9,007
repolist: 9,007
(输出有省略)

  • 修改系统中yum客户端的配置文件建立自定义的yum仓库
    大多数情况下,CentOS7自带的yum客户端配置文件中定义的各个仓库,在中国网络环境中连接都非常慢,所以这里我直接将其配置文件/etc/yum.repo.d/CentOS-Base.repo文件中的baseurl分别修改成了对应不同仓库的URL。这里使用的是国内阿里云的开源镜像站点作为URL。要使用repodata这一目录所在的位置作为baseurl。

[base]   #代表yum仓库的名字,一定要有中括号括起来,不能有相同的两个仓库名字
name=CentOS-$releasever - Base #说明这个软件仓库的主机名称,意义不大
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #mirrorlist是yum自动去探测的,可以不用管
baseurl=http://mirrors.aliyun.com/centos/7.2.1511/os/x86_64/ #这里就是repodata目录所在的位置,可以是http,ftp,本地文件都 可以
enable=1  #配置是否启用这一yum仓库,1表示启用,0gf表示不启用,默认为1
gpgcheck=1  #指定是否检查rpm软件包中的数字签名,1表示检查,0表示不检查
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #指定数字签名公钥文件所在的位置

#released updates 
[updates]
name=CentOS-$releasever - Updates
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://mirrors.aliyun.com/centos/7.2.1511/updates/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://mirrors.aliyun.com/centos/7.2.1511/extras/x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

在完成 以上修改系后,可以进行一次本地yum缓存数据的清理工作,以便可以正常使用yum进行软件更新等操作,清理本地yum缓存的指令:yum clean all,将会清理掉之前yum所下载的全部rpm软件包及文件头信息。

  • 使用系统光盘建立本地yum仓库
    创建yum仓库,我们也可以在/etc/yum.repo.d/下新建一个名为:reponame.repo的文件,reponame为自定义的仓库配置文件名。
    使用系统光盘(iso镜像文件)建立本地yum仓库的方法:

  • 将光盘镜像挂载至系统某目录下

    [root@test1 yum.repos.d]# mkdir /media/cdrom/
    [root@test1 yum.repos.d]# mount /dev/cdrom /media/cdrom
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@test1 yum.repos.d]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    ...
    /dev/sr0                 7.3G  7.3G     0 100% /media/cdrom
    [root@test1 yum.repos.d]# ls -F /media/cdrom
    CentOS_BuildTag  EFI/  EULA  GPL  images/  isolinux/  LiveOS/  Packages/  repodata/  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL

    配置文件(CentOS-Media.repo)在CentOS 7自带的即有,只需要启用它即可,配置文件中还介绍了直接通过指令禁用其它仓库而只启用这一仓库的方法:yum --disablerepo=* --enablerepo=c7-media COMMAND

    [root@test1 yum.repos.d]#  cat /etc/yum.repos.d/CentOS-Media.repo 
    # CentOS-Media.repo
    #
    #  This repo can be used with mounted DVD media, verify the mount point for
    #  CentOS-7.  You can use this repo and yum to install items directly off the
    #  DVD ISO that we release.
    #
    # To use this repo, put in your DVD and use it with the other repos too:
    #  yum --enablerepo=c7-media [command]
    #  
    # or for ONLY the media repo, do this:
    #
    #  yum --disablerepo=\* --enablerepo=c7-media [command]
    [c7-media]
    name=CentOS-$releasever - Media
    baseurl=file:///media/CentOS/
            file:///media/cdrom/     #此即为光盘yum仓库的URL
            file:///media/cdrecorder/
    gpgcheck=1
    enabled=1   #启用这一yum仓库。
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS7
  • 验证光盘yum仓库的可用性
    默认情况下,系统会先去找base这一配置中的仓库,而且当其连接不上时,不会继续查找c7-media这个仓库,所以需要人为干预将base 中的repo禁用,只启用c7-media这一仓库。使用指令:yum --disablerepo=* --enablerepo=c7-media install tftp 后面还可以跟上-y这一选项,让其自动确认是否安装。安装过程中即可看到tftp软件包是从c7-media这个仓库中获取的。
    yum --disablerepo=* --enablerepo=c7-media这一指令也适用于要从指定的yum仓库安装某特定软件的情况。

YUM工具的使用

  1. 查询
    指令: yum [list|info|search|provides|whatprovides] [关键字]
    list list后面需要跟上软件名称作为关键字,查询其安装情况,不跟关键字列出当前各仓库的所有软件包,类似于rpm -qa
    info info后面同样需要跟上软件名称作为关键字,查询软件包的详细信息,不跟关键字列出当前仓库的所有软件包的详细信息。类似 于rpm -qai
    search search后面跟上任意关键字,查找yum仓库中所有包含此关键字的软件包的信息,介绍软件包的大致功能。
    provides|whatprovides 根据后面跟的文件名,查找yum仓库中哪些软件包可以提供此功能。类似 于rpm -qf

  2. 安装、升级
    指令:yum [install|update] 软件名
    installinstall后面跟上需要安装的软件名称即可安装相应的软件。
    update update后面跟上需要升级的软件,如果不跟上需要升级的软件名称,会将整个系统都进行升级。

  3. 卸载
    指令: yum remove 软件名
    软件卸载的过程中,yum会自动解决好依赖软件的卸载工作。

总结

yum工具能够自动解决软件间的依赖关系,比rpm工具更好用,但rpm工具的使用是软件包管理的基础,在极端情况下,可能还是需要使用rpm工具去逐个安装有依赖关系的软件。

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

(0)
N24_lantianN24_lantian
上一篇 2016-12-26 22:26
下一篇 2016-12-27 12:01

相关推荐

  • iptables

    iptables Firewall:防火墙 隔离工具;Packets Filter Firewall;工作于主机或网络的边缘,对经由的报文根据预先定义的规则(匹配条件)进行检测,对于能够被规则匹配到的报文实行某预定义的处理机制的一套组件; 分类: 硬件防火墙:在硬件级别实现部分功能的防火墙;另一个部分功能基于软件实现; 软件防火墙:应用软件处理逻辑运行于通用…

    Linux干货 2016-11-07
  • Bash Shell语法之三函数简介

     Bash Shell语法之三函数简介 一、什么是Bash函数 像其他编程语言一样,Shell 也支持函数。Shell函数必须先定义后使用。函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。 二、Bash函数定义格式 [ function ] fun () {     &nb…

    Linux干货 2015-05-11
  • 计算机的组成、Linux主流三大版本的区别、Linux的哲学思想、Linux的使用格式及命令的使用简略说明,以及如何查看命令帮助、FHS目录机构

    计算机的组成极其功能? 按功能来说计算机是由运算器、控制器、I/O系统(输入、输出系统)、存储器五部分组成。 运算器:即中央处理器(CPU)作为五大部分中心的主脑,对数据进行逻辑运算或算数运算。 控制器:主要是指内存设备,将读取到的数据临时保存在内存中这个过程被成为寻址。在cpu中也有属于自己的控制器称之为CPU的寄存器来进行多指令的行。 I/O系统:输入系…

    2017-12-03
  • N25 – Week6 作业

    春节过去了,我们又开学了,又可以写博客,做作业了,好开心. 下面是第6周的博客作业: 请详细总结vim编辑器的使用并完成以下练习题: 1. 复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc/sysinit文件中的以至少一个空白字符开头的行的行首加#; [root@dhcp-10-129-6-166 ~]# …

    Linux干货 2017-02-13
  • Linux哲学思想

    一切皆文件     这是第一知首先会想到的,所以在linux中的所谓文件夹也是文件,如果你用vi /tmp,也会发现其实里面是有内容的,对于文件而言,它的data block存放的是文件的内容,对于文件夹,它的data block存放的是文件的inode及对应的文件名。从结构上看它们是一致的。当然其它的诸如设备,管道等…

    Linux干货 2016-10-30
  • BIND在生产环境中的创建

    一、实验:BIND二级域的搭建(均以yum安装bind),从实验图中可以看出需要五台虚拟机进行测试 一、准备五台虚拟机 二、配置root服务器 1、YUM安装bind的程序 2、配置bind的主配置文件 3、配置区域文件 4、为了实验的方便进行,把防火墙和SElinux关闭,并留意区域文件的属主属组 5、检查named的主配置文件和区域文件是否语法错误,并启…

    Linux干货 2016-10-05