YUM:Yellowdog Update Modifier
- 是rpm的前端程序
- 解决软件包之间的依赖关系
YUM 工作原理:
服务器
yum服务器主要存放的就是rpm软件包和软件包的元数据信息。
- Packages:存放的是rpm软件包
- repodata:存放的是软件包之间元数据信息和以来关系
客户端
通过编写好配置文件来访问服务器实现对软件包的相关操作。
客户端的工作流程:
- 连接到服务器
- 下载repodata文件,并从中检索对应信息
- 根据检索到的信息对软件包进行操作,结束后会删除下载的rpm包,但是repodata文件会保存下来。
YUM客户端配置
客户端配置文件
yum客户端有两个配置文件,其中一个不用修改。
/etc/yum.conf #为所有仓库提供公共配置 一般不用修改
/etc/yum.repos.d/*.repo: #为每个仓库的提供配置文件 需要编写的配置文件
说明:
- 配置文件需要以.repo作为文件的后缀
- 配置文件中至少包含以下四个部分
仓库的唯一标识: []
仓库的描述信息:name=
仓库的地址:baseurl= #可以指定多个yum服务器的地址
是否开启gpg校验:gogcheck=0|1
说明:
- 不指定enabled=1,默认enabled=1,标识启用这个仓库
- 仓库的地址路径:
能看到repodata的路径,比如/a/b/c/repodata/xxx 则路径就是:/a/b/c/
baseurl支持一下四种格式:
- file:// 使用本地路径,比如挂载本地光盘作为yum源
- http:// 使用网络地址
- https://
- ftp://
#yum仓库指向的路径一定必须是repodata目录所在目录
注意:yum仓库指向的路径一定必须是repodata目录所在目录
说明:
阿里云提供了写好的CentOS和ubuntu的仓库文件下载链接,可以通 https://developer.aliyun.com/mirror/ 来下载相关的源
说明:
镜像中的仓库:
- CentOS8的镜像中有两个yum仓库,AppStream和BaseOS
- CentOS7的镜像中将所有的软件包都放在一个仓库中
互联网上的仓库:
- epel仓库:全称叫 Extra Packages for Enterprise Linux,不存在于光盘中,而是在互联网上。存放了一些常用的软件
- extras仓库:可以通过这个来生成epel源(epel-release这个软件就在extras仓库中)
yum中自带的变量
$releasever: 当前系统的发行版本。OS的主版本号,如:8,7,6
$arch: CPU架构,变量的值通过 uname 命令得出,如:aarch64, i586, i686,x86_64等
$basearch:CPU的架构,系统基础平台;i386, x86_64
$contentdir:表示目录,比如:centos-8,centos-7
$YUM0-$YUM9:自定义变量
国内的镜像站点
#阿里云
https://mirrors.aliyun.com
#腾讯云
https://mirrors.cloud.tencent.com
#华为云
https://repo.huaweicloud.com/centos
#清华大学
https://mirrors.tuna.tsinghua.edu.cn
范例:为CentOS 8 配置仓库
#为CentOS 8 配置 yum 的系统和EPEL源仓库
[appstream]
name=AppStream
baseurl=file:///mnt/misc/AppStream
gpgcheck=0
enabled=1
[baseos]
name=BaseOS
baseurl=file:///mnt/misc/BaseOS
gpgcheck=0
enabled=1
[epel]
name=EPEL
baseurl=http://mirrors.aliyun.com/epel/$releasever/Everything/$arch/
http://mirrors.cloud.tencent.com/epel/$releasever/Everything/$arch/
http://repo.huaweicloud.com/epel/$releasever/Everything/$arch/
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$arch/
gpgcheck=0
enabled=1
[extras]
name=extras
baseurl=http://repo.huaweicloud.com/centos/$releasever/extras/$arch/os/
http://mirrors.aliyun.com/centos-vault/$releasever/extras/$arch/os/
gpgcheck=0
enabled=1
启用和禁用仓库
- 1.在配置文件中指定: enabled=0|1 #0表示禁用,1表示启用。 默认enabld=1
- 2.通过命令的方式: yum-config-manager --disable或者 --enable 仓库的唯一标识符
yum相关命令使用说明
-y:自动安装,不用手动输入yes
--showduplicates #这个参数可以列出软件包的所有版本,不加这个参数默认列出最新版本
显示仓库列表:repolist
yum repolist [all|enabled|disabled]
yum repolist #查询本地配置了多少个yum源的信息(默认显示启用的仓库)
yum repolist all #显示系统中所有的仓库
#选项:
-v: 显示yum源的详细信息
显示软件包信息:
yum list # 列出当前仓库中所有的程序包
yum list available #只列出没有装好的程序包
yum list installed # 只列出装好了的程序包
yum list package #查看指定的包是否存在yum源中
yum info package #查看软件包的相关信息
安装程序包: install
yum install package
yum -y install --downloadonly --downloaddir=xxx packagename #只下载不安装
#downloaddir:下载的软件包的保存路径
yum groupinsatall group #安装软件包组
卸载程序包:remove
yum remove package_name #移除指定的软件包
升级程序包:update
yum update #全部更新
yum update package #更新指定的软件包
查询:provides
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
例如:yum privodes */gzip
范例:
通过名字获取没有安装的包的信息(比如包的信息)
解决方法:yum provides | whatprovides */filename #写通配符解决
使用rpm -ql 只能查询列出所有已经被安装的rpm package
(有的时候不一定能查到,因为没有写路径)
仓库缓存
清除缓存:clean all
清除目录/var/cache/yum/缓存
yum clean all #清除所有的仓库缓存
构建缓存: makecache
yum makecache #构建仓库的缓存
安装升级本地软件包: localinstall
yum localinstall|install rpmfile1 #安装本地的软件包
yum localupdate|update rpmfile1 #升级本地的软件包
Original: https://www.cnblogs.com/heyongshen/p/16397145.html
Author: 背对背依靠
Title: Linux yum的实现和配置