目录
一、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 ***
#列出/查询已安装的软件
yum list installed
yum list installed | 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博客