yum和repo详细解析

目录

一、rpm、yum、repo

二、repo文件详细解析

三、常用命令

四、更改epel.repo为清华源

一、rpm、yum、repo

RPM
RPM(Red-hat Package Manager),是一个由红帽最早开发出来的包管理器,目前已经是大多数Linux发行的默认包管理器。RPM管理的包都是以.rpm结尾,其中存储了该软件的安装压缩包,以及一些额外信息,例如所依赖的其余的包还有安装,升级,卸载时候执行的一些脚本。

看起来很美好,想要安装软件的时候下载一个官方的.rpm文件,然后用RPM安装一下即可。但是事实往往没这么顺利。一个包在安装的时候往往依赖于很多的其它的包,如果这些被依赖的包没有被安装会造成很多意想不到的麻烦。RPM的一大缺点,就是它可以检测这些被依赖的包有没有被安装,但是假如有包没有安装它不会自动去进行安装。

于是需要一种新的工具来弥补这个缺点,这个新工具在Centos中就是Yum。

Yum
Yum(Yellowdog Updater Modified),也是包管理工具,只适用于红帽和Centos发行版本。比起RPM来,Yum的优势在于可以自动检测依赖,并且对于不存在的依赖会自动去进行安装。

所以通常是用Yum来进行包的操作,例如查看,安装,更新,删除等等。

但是又有了另一个问题,RPM包里面只是写了依赖包的名字,Yum怎么知道去哪下载这些包呢?如果能有一个仓库,里面放着成千上万的包给Yum去选择,这个问题也就迎刃而解了。

是的,很多的公司和团体都维护着这样的仓库,这些仓库就叫做repository,简称repo。

Repo
Repo就像是一个大仓库,每个repo里面包含着很多的.rpm文件,但是一个repo不可能把这个世界所有的.rpm包都包括进去,往往是某个特定目的的包集合放在一个repo里面,例如centos需要的基础包做一个repo,额外特性的包再放一个repo,mysql维护自己的repo,docker维护自己的repo,等等。所以我们往往一台机器上要配置好几个repo的地址供yum去查询和选择,而且安装新软件的时候可能还需要新安装他们自己维护的repo来使用。

下面我们就来详细看看怎么在本地配置repo。

repo文件详解
centos中存放repo文件的路径在/etc/yum.repos.d/,每个文件都以.repo结尾,每个文件中可能包含一个或多个repo的信息。
 

二、repo文件详细解析

[root@k8s-master yum.repos.d]# cat /etc/yum.repos.d/CentOS-Base.repo 
[base]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[base] - 这是repo的id,必须要在该文件中独一无二才可以。一个repo文件中可以有多个repo。

name=xxx - 这是repo的描述信息,这其中带入了一个变量,在我这里就是7

mirrorlist=xxx - 这个url打开后是一个地址列表,yum会依次去各个地址尝试下载想安装的包,如果所有地址遍历完依然下载失败,则会向用户抛出错误,epel.repo就包含mirrors.bfsu.edu.cn、mirrors.tuna.tsinghua.edu.cn等等源。

gpgcheck=1 - gpgcheck是官方镜像特有的一种密钥校验方法,1表示要校验

gpgkey=xxx - 本地存放的用于gpgcheck的公钥,用浏览器访问链接可以查看

enable=1 - 1表示启用,0表示弃用。

三、常用命令

#查看所有repo,展示所有repo源,包含enable和disable的。
yum repolist all
yum repolist | grep ****

#清除缓存,通常在卸载或更新服务时候会使用,防止重新安装老版本。
yum clean all  =  (= yum clean packages; yum clean oldheaders)

#将yum安装的包保存在缓存中,remove后且在断网情况下还能yum成功,但实际yum安装中,
会自动将文件保存在缓存中,所以这条命令其实没什么用,但最好还是在安装完成后使用该命令。
yum makcache

#升级所有包同时也升级软件和系统内核
yum -y update

#只升级所有包,不升级软件和系统内核
yum -y upgrade

#卸载服务或应用
yum remove -y ***

#列出任何可更新的软件清单
yum check-update

#安装任何更新软件
yum update ***

#仅安装指定的软件
yum install ***

#仅更新指定的软件
yum update ***

#列出任何可安裝的软件清单
yum list
yum list | grep ***

 可以看到该repo文件有三个repo源

#查看阿里云的CentOS-Base.repo
[root@k8s-master yum.repos.d]# cat CentOS-Base.repo 
[base]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-$releasever
enabled=1
failovermethod=priority
baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7

yum repolist | grep CentOS

最右边的数字表示该repo中rpm文件的个数

将id为[extras]的repo的enable属性设为0

 yum repolist | grep CentOS

再次查看,刚刚设置为0的[extras]已经不显示了。

四、更改epel.repo为清华源

yum install epel-release

当前tuna已经在epel的官方镜像列表里,所以不需要做任何修改,mirrorlist机制就能让你的服务器就近使用tuna的镜像。如果你想强制你的服务器使用tuna的镜像,可以修改/etc/yum.repos.d/epel.repo,将mirrorlist和metalink开头的行注释掉。

接下来,取消注释这个文件里baseurl开头的行,并将其中的http://download.fedoraproject.org/pub替换成https://mirrors.tuna.tsinghua.edu.cn。

更改前

更改后

参考:

rpm,repo和yum的区别和使用详解(centos7安装和升级mysql举例)_centos yum repo_T型人小付的博客-CSDN博客

猜你喜欢

转载自blog.csdn.net/weixin_48878440/article/details/130646246