一、为什么有RPM包管理还需要YUM(YUM为RPM的前端管理工具)

        为了重复利用既有的软件功能,因此很多软件都会以函式库的方式释出部分功能,以方便其他软件的呼叫应用。此外,为了节省使用者的数据量,目前的 distributions 在释出软件时, 都会将软件的内容分为一般使用与开发使用 (development) 两大类。所以你才会常常看到有类似 pam-x.x.rpm 与 pam-devel-x.x.rpm 之类的档名啊!而默认情况下,大部分的 software-devel-x.x.rpm 都不会安装,因为终端用户大部分不会去开发软件嘛!

        因为有上述的现象,因此 RPM 软件文件就会有所谓的属性相依的问题产生 (其实所有的软件管理几乎都有这方面的情况存在)。 那有没有办法解决啊?前面不是谈到 RPM 软件文件内部会记录相依属性的数据吗?那想一想,要是我将这些相依属性的软件先列表, 在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的相依软件就一口气同时安装起来, 那不就解决了相依属性的问题了吗?由此。就有了YUM机制的由来!

wKiom1XluSGgVo5zAAC93jqEA8E725.jpg                           

二、YUM的简介

        YUM,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke 开发团队进行改进,遂有此名。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http 或ftp 站点,也可以是本地软件池,但必须包含rpm 的header,header 包括了rpm 包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些header 并加以分析,才能自动化地完成余下的任务。

        YUM的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。

        YUM主要功能是更方便的添加/删除/更新RPM 包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。

        YUM可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。


三、YUM源的配置

        yum repository: 存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata)。当你要找仓库所在网址时, 最重要的就是该网址底下一定要有个名为repodata(该目录就是分析 RPM 软件后所产生的软件属性相依数据放置处)的目录存在!那就是仓库的URL网址了!

    配置文件(可以通过man yum.conf查看配置文件的格式和详细选项):

        /etc/yum.conf:为所有仓库提供公共配置

            main 部分定义了全局配置选项,整个yum 配置文件应该只有一个main。

[root@localhost yum.repos.d]# vim /etc/yum.conf 

[main]
cachedir=/var/cache/yum/$basearch/$releasever
#yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum
keepcache=0
#安装完成后是否保留软件包,0为不保留(默认为0),1为保留
debuglevel=2
#Debug 信息输出等级,范围为0-10,缺省为2
logfile=/var/log/yum.log
#yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新
exactarch=1
#有1和0两个选项,默认1则yum 只会安装和系统架构匹配的软件包
obsoletes=1
#这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包
gpgcheck=1
#是否检查包的完整性,默认为1,检查包的完整性
plugins=1
#是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件
installonly_limit=5
#一次最大安装的包数
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
#bug追踪URL
distroverpkg=centos-release
#指定一个软件包,yum 会根据这个包判断你的发行版本,默认是centos-release,也可以是安装的任何针对自己发行版的rpm 包


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

        etc/yum.repos.d/*.repo:为仓库的指向提供配置

            repository 部分定义了每个源/服务器的具体配置,可以有一到多个。

仓库指向的定义(一般我们不会去修改全局配置文件,而是在yum.repos.d中创建特定的仓库配置):

    [repositoryID]

    name=Some name for this repository

    baseurl=url://path/to/repository/

    baseur2=url://path/to/repository/

    baseur3=url://path/to/repository/

    enabled={1|0}(是否启用)

    gpgcheck={1|0}(是否检查包的完整性)

    gpgkey=URL(指明包的密钥文件)

    enablegroups={1|0}(是否支持在此仓库上使用组来批量管理包)

    failovermethod={roundrobin|priority}(当有故障时,多个镜像的挑选方式)

        默认为:roundrobin,意为随机挑选;priority,从第一个开始挑选,然后往下挑选

    cost=1000(仓库开销数值。默认为1000)


配置一个指向 http://mirrors.aliyun.com/centos/7.1.1503/extras/x86_64/ 阿里云镜像的yum源

这里根据你的Centos版本选择不同的yum源,这里以Centos 7.1作为讲解

[root@localhost yum.repos.d]# pwd
/etc/yum.repos.d
[root@localhost yum.repos.d]# vim Centos-wlw.repo

[base]
name=Base Repo on mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7.1.1503/extras/x86_64/
gpgcheck=0
#这里我们自己定义了一个名为Centos-wlw的yum源

定义好yum源后我们通过yum repolist查看可用源,这里我们可以看到有8619个包可用

[root@localhost yum.repos.d]# yum repolist
已加载插件:aliases, auto-update-debuginfo, changelog, fastestmirror, filter-data, fs-snapshot, keys, langpacks, list-data, local, merge-conf, post-transaction-actions, priorities,
          : protectbase, ps, remove-with-leaves, rpm-warm-cache, show-leaves, tmprepo, tsflags, upgrade-helper, verify, versionlock
Loading mirror speeds from cached hostfile
0 packages excluded due to repository protections
源标识                                                       源名称                                                                                                           状态
base                                                         Base Repo on mirrors.aliyun.com                                                                                  8,691
repolist: 8,691


配置一个光盘镜像的yum源。这里我们关闭了阿里云的yum包。

[root@localhost yum.repos.d]# vim Centos-wlw.repo 

[base]
name=Base Repo on mirrors.aliyun.com
baseurl=http://mirrors.aliyun.com/centos/7.1.1503/extras/x86_64/
gpgcheck=0
enabled=0

[locate_cdrom]
name=Locate Repo on cdrom
baseurl=file:/mnt
gpgcheck=1
gpgkey=file:/mnt/RPM-GPG-KEY-CentOS-7

定义好yum源后我们通过yum repolist查看可用源,这里由于我们第一次访问此yum源。会下载yum源中的repodata元数据

[root@localhost yum.repos.d]# yum repolist
已加载插件:aliases, auto-update-debuginfo, changelog, fastestmirror, filter-data, fs-snapshot, keys, langpacks, list-data, local, merge-conf, post-transaction-actions, priorities,
          : protectbase, ps, remove-with-leaves, rpm-warm-cache, show-leaves, tmprepo, tsflags, upgrade-helper, verify, versionlock
locate                                                                                                                                                      | 3.6 kB  00:00:00     
(1/2): locate_cdrom/primary_db                                                                                                                                    | 5.1 MB  00:00:00     
(2/2): locate_cdrom/group_gz                                                                                                                                      | 154 kB  00:00:00     
Loading mirror speeds from cached hostfile
0 packages excluded due to repository protections
源标识                                                       源名称                                                                                                           状态
locate                                                       Locate Repo on cdrom                                                                                             8,652
repolist: 8,652

其他国内yum源列表如下:

1. 企业贡献:

阿里云开源镜像站:http://mirrors.aliyun.com/

搜狐开源镜像站:http://mirrors.sohu.com/

网易开源镜像站:http://mirrors.163.com/

2. 大学教学:
北京理工大学:http://mirror.bit.edu.cn 
厦门大学:http://mirrors.xmu.edu.cn/


四、YUM的常用命令

yum [options] [command] [package ...]


显示仓库列表:

    repolist [all|enabled(默认)|disabled]

[root@localhost yum.repos.d]# yum repolist all
已加载插件:aliases, auto-update-debuginfo, changelog, fastestmirror, filter-
          : data, fs-snapshot, keys, langpacks, list-data, local, merge-
          : conf, post-transaction-actions, priorities, protectbase, ps,
          : remove-with-leaves, rpm-warm-cache, show-leaves, tmprepo,
          : tsflags, upgrade-helper, verify, versionlock
Loading mirror speeds from cached hostfile
0 packages excluded due to repository protections
源标识                      源名称                           状态
C7.0.1406-base/x86_64       CentOS-7.0.1406 - Base           禁用
C7.0.1406-centosplus/x86_64 CentOS-7.0.1406 - CentOSPlus     禁用
C7.0.1406-extras/x86_64     CentOS-7.0.1406 - Extras         禁用
C7.0.1406-fasttrack/x86_64  CentOS-7.0.1406 - CentOSPlus     禁用
C7.0.1406-updates/x86_64    CentOS-7.0.1406 - Updates        禁用
_local                      Automatic local repo. (manged by 启用:    39
base                        Base Repo on mirrors.aliyun.com  禁用
base-debuginfo/x86_64       CentOS-7 - Debuginfo             禁用
base-source/7               CentOS-7 - Base Sources          禁用
centosplus-source/7         CentOS-7 - Plus Sources          禁用
cr/7/x86_64                 CentOS-7 - cr                    禁用
extras-source/7             CentOS-7 - Extras Sources        禁用
fasttrack/7/x86_64          CentOS-7 - fasttrack             禁用
locate_cdrom                Locate Repo on cdrom             启用: 8,652
updates-source/7            CentOS-7 - Updates Sources       禁用
repolist: 8,691
#这里可以看出我们启用了我们上面自己定义的locate_cdrom源。其他源出于禁止状态


显示程序包:

    list {all(默认)|available|installed|updates} [glob_exp1] [...]

[root@localhost yum.repos.d]# yum list
hostname.x86_64                          3.13-3.el7                 @anaconda
#这里的@anaconda代表系统安装完自动安装了的包
lftp.x86_64                              4.4.8-3.el7                @locate_cdrom
#这里的@locate_cdrom代表我们利用locate_cdrom源安装的包
SDL-devel.i686                           1.2.15-11.el7              locate_cdrom
#这里的locate_cdrom前面没有@符号。代表的是locate_cdrom源没有被安装的包



    安装程序包:

        install package1 [package2] [...]

        reinstall package1 [package2] [...]  (重新安装)

[root@localhost yum.repos.d]# yum isntall lftp
0 packages excluded due to repository protections
正在解决依赖关系
Skipping filters plugin, no data
--> 正在检查事务
---> 软件包 lftp.x86_64.0.4.4.8-3.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

===================================================================================================================================================================================
 Package                               架构                                    版本                                            源                                             大小
===================================================================================================================================================================================
正在安装:
 lftp                                  x86_64                                  4.4.8-3.el7                                     locate_cdrom                                  749 k

事务概要
===================================================================================================================================================================================
安装  1 软件包

总下载量:749 k
安装大小:2.4 M
Is this ok [y/d/N]: 
Exiting on user command
您的事务已保存,请执行:
 yum load-transaction /tmp/yum_save_tx.2015-09-01.21-16.drDX2K.yumtx 重新执行该事务

这里需要注意,如果我们直接回车或者输入n都会退出安装。需要输入y然后按回车才能安装。在Centos 7中这里有为你把你这次没有安装的事务保存到/tmp/临时目录中。下次你想重新安装的时候可以直接输入上面的命令

[root@localhost ~]# yum load-transaction /tmp/yum_save_tx.2015-09-01.21-16.drDX2K.yumtx
0 packages excluded due to repository protections
正在解决依赖关系
--> 正在检查事务
--> 解决依赖关系完成

依赖关系解决

===================================================================================================================================================================================
 Package                               架构                                    版本                                            源                                             大小
===================================================================================================================================================================================
正在安装:
 lftp                                  x86_64                                  4.4.8-3.el7                                     locate_cdrom                                  749 k

事务概要
===================================================================================================================================================================================
安装  1 软件包

总下载量:749 k
安装大小:2.4 M
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : lftp-4.4.8-3.el7.x86_64                                                                                                                                        1/1
  验证中      : lftp-4.4.8-3.el7.x86_64                                                                                                                                       1/1
已安装:
  lftp.x86_64 0:4.4.8-3.el7                                                                                                                                                      
完毕!
New leaves:
  lftp.x86_64

    

    升级程序包:

        update [package1] [package2] [...]

        downgrade package1 [package2] [...] (降级)


    检查可用升级:

        check-update


    卸载程序包:

        remove | erase package1 [package2] [...]

[root@localhost ~]# yum remove libstdc++-devel
正在解决依赖关系
--> 正在检查事务
---> 软件包 libstdc++-devel.x86_64.0.4.8.3-9.el7 将被 删除
--> 正在处理依赖关系 libstdc++-devel = 4.8.3-9.el7,它被软件包 gcc-c++-4.8.3-9.el7.x86_64 需要
--> 正在检查事务
---> 软件包 gcc-c++.x86_64.0.4.8.3-9.el7 将被 删除
--> 解决依赖关系完成
_local                                                                                                                                                      | 2.9 kB  00:00:00     
_local/primary_db                                                                                                                                           |  41 kB  00:00:00     

依赖关系解决

===================================================================================================================================================================================
 Package                                       架构                                 版本                                         源                                           大小
===================================================================================================================================================================================
正在删除:
 libstdc++-devel                               x86_64                               4.8.3-9.el7                                  @locate_cdrom                               8.0 M
为依赖而移除:
 gcc-c++                                       x86_64                               4.8.3-9.el7                                  @locate_cdrom                                16 M

事务概要
===================================================================================================================================================================================
移除  1 软件包 (+1 依赖软件包)

安装大小:24 M
是否继续?[y/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在删除    : gcc-c++-4.8.3-9.el7.x86_64                                                                                                                                    1/2 
  正在删除    : libstdc++-devel-4.8.3-9.el7.x86_64                                                                                                                          2/2 
  验证中      : gcc-c++-4.8.3-9.el7.x86_64                                                                                                                                     1/2
  验证中      : libstdc++-devel-4.8.3-9.el7.x86_64                                                                                                                             2/2
删除:
  libstdc++-devel.x86_64 0:4.8.3-9.el7                                                                                                                                            
作为依赖被删除:
  gcc-c++.x86_64 0:4.8.3-9.el7                                                                                                                                                    
完毕!
New leaves:
  gcc.x86_64
#卸载的时候需要特别注意。卸载的包中如果给其他包依赖。也会同时卸载依赖此包的其他包


   查看程序包information:

        info [...]

[root@localhost ~]# yum info bash
已安装的软件包
名称    :bash
架构    :x86_64
版本    :4.2.46
发布    :12.el7
大小    :3.5 M
源    :installed
来自源:anaconda
简介    : The GNU Bourne Again shell
网址    :http://www.gnu.org/software/bash
协议    : GPLv3+
描述    : The GNU Bourne Again shell (Bash) is a shell or command language
         : interpreter that is compatible with the Bourne shell (sh). Bash
         : incorporates useful features from the Korn shell (ksh) and the C shell
         : (csh). Most sh scripts can be run by bash without modification.


    查看指定的特性(可以是某文件)是由哪个程序包所提供:

    provides | whatprovides feature1 [feature2] [...]

[root@localhost ~]# yum provides lftp
lftp-4.4.8-3.el7.i686 : A sophisticated file transfer program
源    :locate_cdrom

lftp-4.4.8-3.el7.x86_64 : A sophisticated file transfer program
源    :_local

lftp-4.4.8-3.el7.x86_64 : A sophisticated file transfer program
源    :locate_cdrom


    清理本地缓存:

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

[root@localhost ~]# yum clean all
已加载插件:aliases, auto-update-debuginfo, changelog, fastestmirror, filter-data, fs-snapshot, keys, langpacks, list-data, local, merge-conf, post-transaction-actions, priorities,
          : protectbase, ps, remove-with-leaves, rpm-warm-cache, show-leaves, tmprepo, tsflags, upgrade-helper, verify, versionlock
正在清理软件源: _local base_aliyun locate_cdrom
Cleaning up everything
Cleaning up list of fastest mirrors
[root@wlw packages]# ls /var/cache/yum/x86_64/6/cdrom/
gen  packages
#可以看到缓存目录中的所有相关数据和元数据信息已经删除

        

    构建缓存:

        makecache

[root@wlw packages]# yum makecache
Loaded plugins: fastestmirror, refresh-packagekit, security
Determining fastest mirrors
cdrom                                          | 4.0 kB     00:00 ... 
cdrom/group_gz                                 | 219 kB     00:00 ... 
cdrom/filelists_db                             | 6.2 MB     00:00 ... 
cdrom/primary_db                               | 4.6 MB     00:00 ... 
cdrom/other_db                                 | 2.8 MB     00:00 ... 
Metadata Cache Created
[root@wlw packages]# ls /var/cache/yum/x86_64/6/cdrom/
40eeab440905d20a31dd7db33fa8724fba260bcb1047fb6488027b85c22876d2-filelists.sqlite
486d3ee62873814293a1be370640ae9c71863a35c7299eb76739e03369ad0c3f-c6-x86_64-comps.xml.gz
bd821d6fb163fc5508b3caa407480faa51a2223e6f475da95675b84c716d6474-other.sqlite
c11b211333eadda7b2e2d0f7fa8ffbf70a1d32d5182babbb43b90427578e2891-primary.sqlite
cachecookie
gen
packages
repomd.xml


    搜索:

        search string1 [string2] [...]以指定的关键字搜索程序包名及summary信息;

[root@wlw packages]# yum search ifconfig
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
========================= Matched: ifconfig ==========================
net-tools.x86_64 : Basic networking tools
#可以看到ifconfig命令是由net-tools包提供的



    查看指定包所依赖的capabilities:

        deplist package1 [package2] [...]


    查看yum事务历史:

        history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

[root@localhost ~]# yum history
ID     | 命令行                   | 日期和时间       | 操作           | 变更数 
-------------------------------------------------------------------------------
    23 | remove libstdc++-devel   | 2015-09-01 21:31 | Erase          |    2   
    22 | install gcc-c++.x86_64   | 2015-09-01 21:30 | Install        |    2   
    21 | reinstall gcc            | 2015-09-01 21:28 | Reinstall      |    1   
    20 | remove lftp              | 2015-09-01 21:27 | Erase          |    1   
    19 | load-transaction /tmp/yu | 2015-09-01 21:21 | Install        |    1   
    18 | remove lftp              | 2015-09-01 21:16 | Erase          |    1   
    17 | reinstall lftp           | 2015-09-01 21:15 | Reinstall      |    1   
    16 | install lftp             | 2015-09-01 21:10 | Install        |    1   
    15 | remove lftp              | 2015-09-01 21:10 | Erase          |    1   
    14 | remove htop              | 2015-09-01 21:08 | Erase          |    1   
    13 | reinstall gcc            | 2015-09-01 13:15 | Reinstall      |    1   
    12 | install gcc              | 2015-09-01 13:10 | Install        |    1   
    11 | remove gcc               | 2015-09-01 13:10 | Erase          |    1   
    10 | install gcc              | 2015-09-01 12:49 | Install        |    7   
     9 | install libzip           | 2015-09-01 12:44 | Install        |    1   
     8 | install htop             | 2015-09-01 12:09 | Install        |    1   
     7 | install lftp             | 2015-08-31 22:32 | Install        |    1   
     6 | install lvm*             | 2015-08-27 21:36 | I, U           |   38   
     5 | install yum-3.4.3-125.el | 2015-08-27 21:32 | I, U           |   52 E<
     4 | install vim              | 2015-08-25 18:47 | Install        |   31 > 
history list


    包组管理的相关命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]


 五、YUM的常用命令选项 

     yum的命令行选项:

    --nogpgcheck:禁止进行gpg check;

    -y: 自动回答为“yes”;

    -q:静默模式(在写脚本的时候可能会用到)

    --disablerepo=repoidglob:临时禁用此处指定的repo;

    --enablerepo=repoidglob:临时启用此处指定的repo;

    --noplugins:禁用所有插件;


        为什么yum的repo配置文件需要用到变量呢,有时候因为别人的需求。我们把我们自己repo配置文件放到网络上供网友下载参考。但是有部分网友不太明白里面代表的意思。不会修改。那问题就出现了,比如我们的repo配置文件是Centos 7的X86_64的。而网友的是Centos 6的i386的。那么yum源就会出错导致配置文件无法使用。由此。repo配置文件为我们提供了变量解决此问题!

    yum的repo配置文件中可用的变量:

    $releasever: 当前OS的发行版的主版本号;

    $arch: 平台;

    $basearch:基础平台;

    $YUM0-$YUM9

这个时候我们就可以把yum源配置为一下格式(变量会根据系统配置而改变为对应的值):

    http://mirrors.aliyun.com/centos/$releasever/$basearch/os


六、手动创建yum仓库

        这里我们我们需要先安装createrepo包来为我们提供创建yum仓库服务

①、安装createrepo包

[root@localhost ~]# yum install createrepo
正在解决依赖关系
Skipping filters plugin, no data
--> 正在检查事务
---> 软件包 createrepo.noarch.0.0.9.9-23.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

========================================================================
 Package         架构        版本               源                 大小
========================================================================
正在安装:
 createrepo      noarch      0.9.9-23.el7       locate_cdrom       92 k

事务概要
========================================================================
安装  1 软件包

总下载量:92 k
安装大小:298 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : createrepo-0.9.9-23.el7.noarch                      1/1 
  验证中      : createrepo-0.9.9-23.el7.noarch                      1/1 

已安装:
  createrepo.noarch 0:0.9.9-23.el7                                      

完毕!
New leaves:
  createrepo.noarch

②、首先在本地创建一个存放rpm包的目录,这里我创建了/yum/loca_repo/目录作为存放rpm包的目录

[root@localhost ~]# mkdir -p /yum/loca_repo/

③、把需要提供的rpm包存放到目录中。供别人链接我们的yum源提供的rpm包,这里测试我们就cp了几个包过来

[root@localhost Packages]# cp /mnt/Packages/gcc* /yum/loca_repo/
[root@localhost Packages]# cd /yum/loca_repo/
[root@localhost loca_repo]# pwd
/yum/loca_repo
[root@localhost loca_repo]# ls
gcc-4.8.3-9.el7.x86_64.rpm
gcc-c++-4.8.3-9.el7.x86_64.rpm
gcc-gfortran-4.8.3-9.el7.x86_64.rpm
gcc-gnat-4.8.3-9.el7.x86_64.rpm
gcc-go-4.8.3-9.el7.x86_64.rpm
gcc-objc-4.8.3-9.el7.x86_64.rpm
gcc-objc++-4.8.3-9.el7.x86_64.rpm
gcc-plugin-devel-4.8.3-9.el7.x86_64.rpm

④、使用createrepo指令创建本地repo

[root@localhost loca_repo]# createrepo /yum/loca_repo/
Spawning worker 0 with 8 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost loca_repo]# pwd
/yum/loca_repo
[root@localhost loca_repo]# ls
gcc-4.8.3-9.el7.x86_64.rpm
gcc-c++-4.8.3-9.el7.x86_64.rpm
gcc-gfortran-4.8.3-9.el7.x86_64.rpm
gcc-gnat-4.8.3-9.el7.x86_64.rpm
gcc-go-4.8.3-9.el7.x86_64.rpm
gcc-objc-4.8.3-9.el7.x86_64.rpm
gcc-objc++-4.8.3-9.el7.x86_64.rpm
gcc-plugin-devel-4.8.3-9.el7.x86_64.rpm
repodata

这里我们可以看到生产了repodata目录。该目录就是分析 RPM 软件后所产生的软件属性相依数据放置处

⑤、此时我们只需要配置repo配置文件,然后安装即可

vim /etc/yum.repos.d/Centos-wlw.repo 
[loca_repo]
name=loca repo
baseurl=file:/yum/loca_repo/
gpgcheck=0
enable=1
[root@localhost loca_repo]# yum clean
^[[6~已加载插件:aliases, auto-update-debuginfo, changelog, fastestmirror, filter-
          : data, fs-snapshot, keys, langpacks, list-data, merge-conf,
          : post-transaction-actions, priorities, protectbase, ps,
          : remove-with-leaves, rpm-warm-cache, show-leaves, tsflags,
          : upgrade-helper, verify, versionlock
错误:清理命令需要参数:headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
[root@localhost loca_repo]# ^C
[root@localhost loca_repo]# yum clean all
loca_repo                                        | 2.9 kB     00:00     
loca_repo/primary_db                               | 7.0 kB   00:00     
Determining fastest mirrors
0 packages excluded due to repository protections
源标识                            源名称                            状态
loca_repo                         loca repo                         8
repolist: 8
看吧,这里已经显示我们配置的loca_repo源了,并且有8包,即为我们copy过去的包了