yum是管理工具,用于解决软件包安装时软件包依赖关系。yum底层依然是rpm包。yum有两层:一层yum仓库,里面都是rpm软件包;一层是元数据---repodate(createrepo工具可以生成repodate元数据),yum本身是无法创建yum仓库和repodate的,在A端建立yum仓库和repodate的情况下使用createrepo生成repodate元数据,接着在B端配置文件/etc/yum.repos.d/*.repo,最后B端yum工具可以通过*.repo文件的baseurl获得一个A端的location,这时候yum download repodate数据到本地,解压,获得一个如同书籍索引一样的东西,这样安装rpm包的时候就可以自动的解决rpm包依赖关系。yum使用的协议一般有三种:远程服务器协议类:ftp和http,本地端协议:file协议
引用参考:
yum的工作原理以及如何建立yum仓库
https://blog.51cto.com/chenshengsheng/2106956
A.服务端
将所有需要用到的rpm包存放于某个目录之下,该目录可以是远程的(采用ftp和http协议),也可以是本地的(采用file协议)。
目录建立好了之后,使用createrpo命令来提取目录下所有rpm包的元数据和依赖关系,生成一些xml格式的文件,这些xml文件会
存放在repodata目录下,至此,服务器端的repository就建立好了。注意repodata所在的位置,就是yum仓库的位(主要针对红帽6,
红帽5的repository会分成4个目录,每个目录下都有一个repodata)。
B. 客户端
客户端的配置非常简单,只需要使用yum及其子命令install、reinstall或remove即可。不过使用yum及其子命令之前, 需要编辑配置文件,以告知yum命令仓库repository在什么地方。这个配置文件为:/etc/yum.conf。此外/etc/yum.repos.d/*.repo 都被视为/etc/yum/conf的组成部分。
阿里CentOS 8 yum源:
yum源B端位置:/etc/yum.repos.d/ 同时yum源以.repo文件结尾,所以需要将上面的CentOS-8.repo文件放置在/etc/yum.repos.d/目录下。这就是获取A端rpm包和repodate的location。
当你download CentOS-8.repo的时候,就可以通过yum clean all 清除缓存,再yum makecache建立缓存,最后可以直接安装了,只要A端的rpm包够全。这实质上是A端的配置完全由第三方提供好了配置,拿来主义。
A端配置:
createrepo -v /softwore在目录/softwore下建立repodate元数据,同时rpm包只有teamviewer一个,这时候的repodate里面的依赖关系等等仅仅是teamviewer这一个包的依赖关系。
这里就是配置B端的/etc/yum.repos.d/*.repo文件,baseurl指向本地目录/softwore,因为前期在/softwore目下createrepo生成了teamviewer的repodate依赖关系,这里因为yum库(/softwore)缺少相应的teamviewer依赖包,所以这里安装提示缺少依赖包。
如果A端有足够的rpm包,就可以建立repodate,再将A端配置成一个web服务器,这样只要在遥远地方的B端能访问到A端,就完全可以在B端配置repo文件指向A端,获取rpm包
yum list 显示已经安装和可以安装的所有软件包(即yum仓库的rpm包)
rpm -qa查询系统未安装xz工具,yum list 却显示出现了xz软件包
yum list installed 显示已安装的软件包
yum list updates 显示可升级软件包
然后yum update coreutils-8.30-8 指定升级coreutils到指定版本,如果不指定则升级到最新版本
yum history 显示安装历史
yum history info package 显示所有关于软件包package 安装卸载信息
yum history info 11 则仅仅显示id 11安装卸载信息
yum info package 显示安装包信息
yum provides package 显示该文件是从来自哪一个工具
rm命令是从coreutils软件包里安装过来的,如果rm -vf /usr/bin/rm 怎么办?可以yum install core。。。重新安装
yum是基于rpm底层的。