CentOS7下yum源的配置与使用

浏览次数:1514 关键词 ( yum  )

YUM:Yellowdog Updater Modified  

 

 

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。(bing 词典)

 

    yum可以检测软件间的依赖性,并提示用户解决,将发布的软件放到yum server,然后分析这些软件的依赖关系,然后将软件相关性记录成列表。当客户端有软件安装请求时,yum客户端在yum服务器上下载记录列表,然后通 过列表信息与本机rpm数据库已安装软件数据对比,明确软件的依赖关系,能够判断出那些软件需要安装。

    列表信息保存在yum客户端的/var/cache/yum中,每次yum启动都会通过校验码与yum服务器同步更新列表信息。

    使用yum需要有yum repositories,用来存放软件列表信息和软件包。yum repositories可以是http站点,ftp站点,本地站点

    路径格式

       ftp://hostname/PATH/TO/REPO   REPO指repodata所在路径的父目录
         http://hostname/PATH/TO/REPO  
         file:///PATH/TO/REPO     

 



yum配置

  •  /etc/yum.conf 全局配置,对所有仓库都适用的配置

[root@localhost ~]# cat /etc/yum.conf  [main] #yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum cachedir=/var/cache/yum/$basearch/$releasever   #安装完成后是否保留软件包,0为不保留(默认为0),1为保留 keepcache=0   #Debug 信息输出等级,范围为0-10,缺省为2 debuglevel=2   #yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。 logfile=/var/log/yum.log   #有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包 exactarch=1   #允许更新陈旧的RPM包 obsoletes=1   #是否启用插件,默认1为允许,0表示不允许。 plugins=1   #允许保留多少个内核包 installonly_limit=5   #bug管理 bugtracker_url=   #指定一个软件包,yum会根据这个包判断你的发行版本, #默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。 distroverpkg=centos-release
  • /etc/yum.repos.d/*.repo 一个文件通常用于一个或一组功能相近或相关的仓库

[root@localhost yum.repos.d]# cat CentOS-Base.repo  [base] #[REPO_ID] 用于区别各个不同的repository,唯一性     name=CentOS-$releasever - Base name, #name 是对repository的描述,支持像$releasever $basearch这样的变量;   mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #mirrorlist指定一个镜像服务器的地址列表,将$releasever和$basearch替换成自己对应的版本和架构, #例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。   #baseurl=   enabled = 1  #这个选项表示这个repo中定义的源是启用的,0为禁用    gpgcheck=1 #启用gpg的校验,确定rpm包的来源安全和完整性 0为禁止   gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #定义用于校验的gpg密钥   #cost= #cost开销,默认是1000,开销越大,优先使用级越低。 .....

注意:[REPO_ID]中不能有空格,否则报错

 

定义仓库指向可用变量:
     $releasever: 引用当前系统的主版本号;从[main]部分的distroverpkg获取;

     $basearch: 当前系统的基本架构;i386, i486, i586, i686: i386

    例如:http://mirror.centos.org/centos/$releasever/os/$basearch/

示例:配置aliyun的yum源

[root@localhost yum.repos.d]# vim CentOS-aliyun.repo   1 [aliyun]   2 name=CentOS-$releasever-aliyun   3 baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/   4 enabled=1   5 gpgcheck=1   6 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7     #列出可用yum repository 发现阿里云已经在列表中  [root@localhost yum.repos.d]# yum repolist enabled Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile  * base: mirrors.skyshe.cn  * extras: mirrors.cqu.edu.cn  * updates: mirrors.pubyun.com repo id                   repo name                            status aliyun                    CentOS-7-aliyun                      8,652 base/7/x86_64             CentOS-7 - Base                      8,652 extras/7/x86_64           CentOS-7 - Extras                     181 updates/7/x86_64          CentOS-7 - Updates                   1,480

 


yum命令:

语法:yum [options] [command] [package ...]

选项:

安装: install package1 [package2] [...]

  [root@localhost ~]# yum install php

卸载:remove | erase package1 [package2] [...] 卸载指定包

 

  [root@localhost ~]# yum remove php

           autoremove [package1] [...]   同时卸载相关依赖包

升级:update [package1] [package2] [...]

          check-update 检测已安装包的更新信息

#检查已安装包的可用更新 [root@localhost ~]# yum check-update ...... NetworkManager.x86_64           1:1.0.0-16.git20150121.b4ea599c.el7_1            updates NetworkManager-adsl.x86_64      1:1.0.0-16.git20150121.b4ea599c.el7_1            updates NetworkManager-libnm.x86_64     1:1.0.0-16.git20150121.b4ea599c.el7_1            updates NetworkManager-tui.x86_64       1:1.0.0-16.git20150121.b4ea599c.el7_1            updates bind-libs-lite.x86_64           32:9.9.4-18.el7_1.5                              updates ......   #更新指定包 [root@localhost ~]# yum update sqlite #更新全部包 [root@localhost ~]# yum update

 重新安装:reinstall package1 [package2] [...]

#重新安装相同版本的软件包 [root@localhost ~]# yum reinstall net-tools

降级安装:downgrade package1 [package2] [...]

  [root@localhost packages]# yum downgrade package

  

 查询:info [...]

 

#查询资源库中指定包的相关信息 [root@localhost ~]# yum info php ...... Available Packages Name        : php Arch        : x86_64 Version     : 5.4.16 Release     : 36.el7_1 Size        : 1.4 M Repo        : updates/7/x86_64 Summary     : PHP scripting language for creating dynamic web sites ...... #查询资源库中所有可以安装或更新的rpm包的信息 [root@localhost ~]# yum info  #查询资源库中所有可以更新的rpm包的信息 [root@localhost ~]# yum info updates #查询已经安装的所有的rpm包的信息 [root@localhost ~]# yum info installed #列出已经安装的但是不包含在资源库中的rpm包的信息 [root@localhost ~]# yum info extras

rpm包列表:list [...]

#列出资源库中所有可以安装或更新的rpm包 [root@localhost ~]# yum list  #列出资源库中特定的可以安装或更新以及已经安装的rpm包 [root@localhost ~]# yum list zip [root@localhost ~]# yum list zip* #注:可以在rpm包名中使用匹配符,如列出所有以zip开头的rpm包 #列出资源库中所有可以更新的rpm包 [root@localhost ~]# yum list updates #列出已经安装的所有的rpm包 [root@localhost ~]# yum list installed #列出已经安装的但是不包含在资源库中的rpm包 [root@localhost ~]# yum list extras

搜索rpm包:search string1 [string2] [...]

#搜索匹配特定字符的rpm包 #search KEYWORD [root@localhost ~]# yum search php #注:在rpm包名,包描述等中搜索   #搜索有包含特定文件名的rpm包 #provides /PATH/TO/SOMEFILE [root@localhost ~]# yum provides php

 

 


清理缓存:clean [ packages | headers | metadata | expire-cache | rpmdb | plugins | all ]

 

  #清除暂存中rpm包文件 [root@localhost ~]# yum clean packages #清除暂存中rpm头文件 [root@localhost ~]# yum clean headers #清除暂存中包文件 [root@localhost ~]# yum clean metadata  #清除暂存中过期数据 [root@localhost ~]# yum clean expire-cache

创建缓存:makecache [fast]

  [root@localhost packages]# yum makecache

包组:groups [...]

  #包组列表 [root@localhost packages]# yum grouplist ....... Available Groups:    Compatibility Libraries    Console Internet Tools    Development Tools    Graphical Administration Tools    Legacy UNIX Compatibility    Scientific Support    Security Tools   #包组信息 [root@localhost packages]# yum group info  "Security Tools"   #安装包组 [root@localhost packages]# yum group install  "Security Tools"   #卸载包组 [root@localhost packages]# yum group remove "Security Tools"

 


仓库命令:

#repolist [all|enabled|disabled] 列出全部/可用/不可用仓库   [root@localhost ~]# yum repolist enabled ...... repo id                                      repo name                                      status aliyun/7/x86_64                              CentOS-7-aliyun                                8,652 base/7/x86_64                                CentOS-7 - Base                                8,652 extras/7/x86_64                              CentOS-7 - Extras                                181 updates/7/x86_64                             CentOS-7 - Updates                             1,480 repolist: 18,965   #repoinfo [all|enabled|disabled] 列出全部/可用/不可用仓库信息   [root@localhost ~]# yum repoinfo enabled ...... Repo-id      : aliyun/7/x86_64 Repo-name    : CentOS-7-aliyun Repo-revision: 1427842153 Repo-updated : Wed Apr  1 06:50:46 2015 Repo-pkgs    : 8,652 Repo-size    : 6.3 G Repo-baseurl : http://mirrors.aliyun.com/centos/7/os/x86_64/ Repo-expire  : 21,600 second(s) (last: Thu Sep 17 09:22:44 2015) Repo-filename: /etc/yum.repos.d/CentOS-aliyun.repo ......

 



使用光盘作为本地库:

    1 挂载光盘至某目录

    2 定义仓库,使用file:///指明访问路径

示例:

  #挂载光盘 [root@localhost cdrom]# mount -r /dev/cdrom /mnt/cdrom/   #定义仓库 [root@localhost yum.repos.d]# vim centos-local-ISO.repo  [centos7-ISO] name=centos-local-iso baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0 cost=100   #查看可用repository root@localhost yum.repos.d]# yum repolist enabled ...... repo id               repo name                                      status centos7-ISO           centos-local-iso                                 325 aliyun/7/x86_64       CentOS-7-aliyun                                8,652 ......

 

 


创建本地仓库:
    1 安装createrepo工具

  [root@localhost ~]# yum install createrepo

    2  建立repository资源,建立header文件

#createrepo /PATH/TO/RPMFILES/ [root@localhost ~]# createrepo packages/ Spawning worker 0 with 2 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete   #生成repodata文件   [root@localhost ~]# ls packages/ 2048-cli-0.9-4.git20141214.723738c.el7.x86_64.rpm      repodata openstack-ceilometer-alarm-2014.2.2-1.fc22.noarch.rpm

     3 可以在/etc/yum.repos.d目录下定义本地repository

[root@localhost yum.repos.d]# cat local.repo  [localrepo] name=local-repo baseurl=file:///root/packages gpgcheck=0 enabled=1

 



DNF包管理器前端管理工具:

后续更新。

 

 

如有错误,敬请指正!

谢谢!