yum(Yellow dog Updater Modified的简称),yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是文件服务器, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等。正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。自己本身也可以做yum服务器,本身可以根据光盘镜像做yum服务器。
yum源有两种常见配置方式:一种是无网络情况下,使用本地磁盘挂载的方式;另外一种是在有网络的环境中通过管理工具直接下载(一种是通过 yum-config-manager 下载,另一种是到 /etc/yum.repos.d/ 目录中使用 wget 下载)。
yum-config-manager 命令是对资源库( /etc/yum.repos.d/ 下的文件)进行增删改查,推荐使用 yum-config-manager 命令进行改动 ,系统默认没有安装这个命令,这个命令在 yum-utils 包里,可以通过以下命令进行安装。
# yum 源管理工具安装
yum install -y yum-utils # 非root用户需要加 sudo 执行
# yum-config-manager 常用命令
yum-config-manager --add-repo=** # 添加镜像仓库
yum-config-manager --enable centosplus # 启用仓库,centosplus是源标识,配置在repo文件[centosplus]中
yum-config-manager --disable centosplus # 禁用仓库,centosplus是源标识,配置在repo文件[centosplus]中
# 示例:添加阿里云 docker 镜像仓库
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 接下来进入 /etc/yum.repos.d/ 目录中,找到刚添加的仓库,查看源标识,执行--enable/--disable
# 到 /etc/yum.repos.d/ 目录中
wget http://mirrors.aliyun.com/repo/Centos-7.repo # 阿里的源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # 163的源
# 注:在yum.repo.d文件夹中存在多个*.repo文件,会整合到一个文件中,
# 如果包含相同的源标识,会被覆盖(覆盖规则:后面覆盖前面)。
yum repolist # 查看所有可用源
yum repolist [all|enable|disable] # 查看所有repo及其状态(当前是否启用,启用的会将其标识为 enable, 后面有个0表示启用了,但连不上网)
# 配置完 yum 源需要执行以下两条命令
yum clean all # 清除系统所有的yum缓存
yum makecache # 生成yum缓存,新配置的 yum 源生效
# 配置本地镜像源有两种方式:
# 1)、使用 yum-config-manager 添加;
# 2)、手动在 /etc/yum.repo.d/ 目录下创建*.repo文件
# =================================================================
mkdir /mnt/cdrom # 创建用于挂载光盘的目录
mount CentOS-7-x86_64-Everything-1511.iso /mnt/cdrom/ # 将光盘挂载镜像源
umount /mnt/cdrom # 卸载
# 1、自动配置本地仓库
yum-config-manager --add-repo=file:///mnt/cdrom
# 2、创建本地镜像文件 vim myRepo.repo
[c7-media] # 源标识,用于区别各个不同的repository,必填,所有配置文件中的各个源标识不能重复,必须唯一(不然会被覆盖)
name=CentOS-$releasever - Media # 源名称,可以不填,但是会有提示
baseurl=file:///mnt/cdrom # 可以有多个地址。必填,url支持的协议有 http:// ftp:// file://三种
gpgcheck=1 # 是否开启校验,在yum.conf中已经定义它默认值为1
enabled=1 # 是否禁用此yum源,默认为1,如果设置为0(enabled=0)表示取消对c7-media的引用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# ====================== .repo 文件中引用的变量 ==============================
# 1、$releasever 变量
yum中的变量 $releasever 是由 /etc/yum.conf 中的 distroverpkg 定义的。centos-release为一个rpm包,
所谓 "distroverpkg=centos-release" 的意思是将 $releasever 设置为 centos-release 这个RPM包的版本号(通过命令查看:rpm -qi centos-release)
# 2、$basearch 变量
通过 arch 命令查看(x86_64)
# CentOS-Base.repo
[base] # 源标识,用于区别各个不同的repository,必填,所有配置文件中的各个源标识不能重复,必须唯一(不然会被覆盖)
name=CentOS-$releasever - Base - mirrors.aliyun.com # 源名称,可以不填,但是会有提示
#mirrorlist=* 镜像站点,这个可以注释掉
failovermethod=priority|roundrobin # 多个url时,roundrobin表示随机选择,priority表示从第一个开始依次选择
# 可以有多个地址。必填,url支持的协议有 http:// ftp:// file://三种,
#baseUrl必须指向 yum服务器上的repository的repodata文件夹,因为这个文件夹上保存着rpm文件安装时需要的依赖信息
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
enabled=1 # 是否禁用此yum源,默认为1,如果设置为0(enabled=0)表示禁用
gpgcheck=1 # 是否开启校验,在yum.conf中已经定义它默认值为1(默认开启)
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#如果开启yum源包校验,则需要导入RPM公钥,此处只是在系统没有导入rpm公钥时候进行安装
#这里相当于rpm --import http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
enabled=1 # 是否禁用此yum源,默认为1,如果设置为0(enabled=0)表示禁用
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/
enabled=1 # 是否禁用此yum源,默认为1,如果设置为0(enabled=0)表示禁用
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
网络yum源基本都是基础的yum源,有些软件不一定能在其找得到,而epel源是一个扩展源,里面有很多软件,所以需要安装epel扩展源。
yum install -y epel-release # 非 root 用户需要加 sudo
经过以上配置,就可以使用 yum 源进行软件安装了,常用 yum 命令有
yum check-update # 检查可更新的软件有哪些
yum -y update # 更新yum源所有软件包(添加pack_name参数,更新指定程序包package)
yum -y install # 不加-y则会询问是否安装,想自动安装不进行交互,则加-y
yum install -y 软件名称 --downloadonly --downloaddir=/xx/xxx/xx/ #只下载软件但不安装
yum remove # 卸载程序包,此卸载命令对yum或rpm安装的包生效,如果是编译安装的,则不受yum控制
yum upgrade/downgrade # 升级/降级指定程序包package
yum list 软件名 # 检查软件安装列表
yum search 软件名 # 搜索包含 软件名 字符串的软件包
本人是一个从小白自学计算机技术,对运维、后端、各种中间件技术、大数据等有一定的学习心得,想获取相关资料(pdf版本)或者希望共同学习,关注微信公众号:it自学社团。后台回复相应技术名称/技术点即可获得。(本人学习宗旨:学会了就要免费分享)