YUM管理


yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。(yum是有python写的前端工具,底层安装包,卸载包都是使用rpm来实现的,yum是一个工具来帮助解决rpm依赖关系的)

 

yum工作原理


当我们执行 yum install httpd -y ,yum会先访问本地缓存(1)如果有直接安装(2)如果没有,则通过元数据找到该软件包,通过该软件内部数据库的提示,找到相应的依赖包,然后继续查找元数据中是否有这些依赖包,如果没有会提示依赖包没有镜像提供。如果httpd软件包和依赖包都找到了,就根据配置文件中的url去下载。(总结就是先去本地缓存里面找,如果找到了直接安装,如果没有通过网络去yum服务器repodata文件里面找包名,根据URL去远程服务器上拿下这些包,如果有依赖性继续找包,远程服务器继续下载)

repodata存放数据库信息,根据这里面的信息找到依赖包,然后通过packages的URL下载。

Linux yum配置网络以及本地源_centos

Packages和repodata,Packages这个目录是yum安装时的rpm包。

repodata目录里面包含了一个以 .xml结尾的文件,这个文件是yum索引文件,包含了rpm包的一些信息,比如依赖关系这些的。通过它用yum安装才能在自动解决。

Linux yum配置网络以及本地源_依赖包_02

Linux yum配置网络以及本地源_依赖包_03

Linux yum配置网络以及本地源_配置文件_04

 

yum配置文件


什么是yum.conf文件:yum.conf文件是用来存储yum配置信息的文件,虽然yum.conf文件通常都比较简洁,却是yum软件管理器的重要组成部分。

[root@localhost ~]# rpm -qc yum  --查看yum的配置文件位置

/etc/logrotate.d/yum

/etc/yum.conf

/etc/yum/version-groups.conf

 

[root@localhost ~]# vim /etc/yum.conf  --yum配置文件

[main]

cachedir=/var/cache/yum/$basearch/$releasever  --cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。

keepcache=1  --安装好软件包之后,会将软件包保存,不会删除(安卓Linux手机安装了软件,软件包会自动删除,相当于该值为0)

debuglevel=2

logfile=/var/log/yum.log  --logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新

exactarch=1

obsoletes=1

gpgcheck=1  --gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的

plugins=1   --是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。使用yum简化系统软件更新的工作,为了保证更新的持续进行,通常都会提供多个mirror(镜像)地址供下载使用,但由于存在地域问题,从不同的镜像下载速度差异很大。选择从适合的镜像下载软件包,会极大的影响更新速度。可使用一个叫fastestmirror的插件,让yum在更新时先根据ping值进行判断,然后从最快响应的地址下载

installonly_limit=3  --允许保留多少个内核包

 

repo文件


将yum的要配置的仓库信息文件,以.repo结尾的文件放在/etc/yum.repos.d目录下面。

什么是repo文件:repo文件是yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。

 

[serverid]  --serverid是用于区别各个不同的repository,必须有一个独一无二的名称,对于yum repolist的repo id

name=Some name for this server  --name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates,对于yum repolist的repo name

baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:

baseurl=url://server1/path/to/repository/,其中url支持的协议有 http:// ftp:// file://三种

gpgcheck:有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的

gpgkey:校验key,如果设置了gpgcheck为1,则需要提供校验key

 

配置网络源


Linux yum配置网络以及本地源_centos_05

[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo --这个是获取163yum源

[root@localhost yum.repos.d]# wget  /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  --这个是获取阿里云的源

 

# 安装163的yum源:

wget -O /etc/yum.repos.d/CentOS7-Base-163.repo  http://mirrors.163.com/.help/CentOS7-Base-163.repo

# 安装阿里云的yum源:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

[root@localhost yum.repos.d]# yum repolist

Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile

repo id                                                                   repo name                                                                              status

base/7/x86_64                                                             CentOS-7 - Base - 163.com                                                              10,097

extras/7/x86_64                                                           CentOS-7 - Extras - 163.com                                                               323

updates/7/x86_64                                                          CentOS-7 - Updates - 163.com    

 

配置本地源


mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

vim /etc/yum.repos.d/centos-7-local.repo

[local]

name=centos-releasever-local

baseurl=file:///mnt/cdrom

gpgcheck=0  --表示对从这个源下载的rpm包不进行校验;