" 目录:RHCA+ -> 6 软件仓库 -> 35 yum源配置(软件仓库) "
yum,英文全称Yellow dog Updater, Modified,专门为自动解决包的依赖关系而存在的软件包管理器
C/S架构
yum在服务器端存放所有RPM包,并将各个包之间的依赖关系记录在文件中;当管理员使用yum安装RPM包时,yum会先从服务器端下载包的依赖性文件,通过分析此文件从服务器端一次性下载所有相关的RPM包并进行安装
yum源:存放RPM软件安装包的文件夹;本质:源代码和安装规则的集合;目的:降低安装难度;访问方式:http、ftp、file
yum与dnf(yum v4)软件仓库的配置文件是通用的;建议在RHEL 8中使用dnf作为软件的安装命令,它效率更高,支持多线程同时安装,解决了yum分析不准确、内存占用高等问题
使用时将yum替换成dnf即可;例:dnf install 软件包名称
yum源配置文件在/etc/yum.repos.d/目录下,文件扩展名:*.repo;只有此扩展名才能作为yum源,所以想让其失效可以添加个额外的扩展名
若需要自己创建yum源;可在存放软件包服务器上安装createrepo软件,执行# createrepo 软件包目录 进行创建

|-----------|------------------------------------------------------------------------|
| 动作 | 作用 |
| clean | all:清除所有仓库缓存 packages:清理RPM包 headers:head信息 metadata:元数据文件 dbcache:库缓存 |
| makecache | 生成仓库缓存 |
零、安装工具
root@wuzuniao \~# rpm -q yum #查询yum是否安装
yum-3.4.3-118.el7.noarch
root@wuzuniao \~#
一、网络yum源
需要所配置的服务器通过网络能访问到配置的源
root@wuzuniao \~# cd /etc/yum.repos.d/
root@wuzuniao yum.repos.d# ll #默认有CentOS-Base.repo文件,要提前做好备份;这里只做演示,因为自己的实验系统是红帽的
total 12
-r--r--r--. 1 root root 108 May 7 2014 packagekit-media.repo
-r--r--r--. 1 root root 108 May 7 2014 packagekit-media.repo.bak
-rw-r--r--. 1 root root 74 Oct 3 2022 wuzuniao.repo
root@wuzuniao yum.repos.d# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo #下载阿里镜像源参考;使用此源需联网
--2023-04-06 22:22:29-- https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 119.0.95.244, 36.103.213.210, 125.72.141.227, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|119.0.95.244|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2495 (2.4K) application/octet-stream
Saving to: '/etc/yum.repos.d/CentOS-Base.repo'
100%========================================\> 2,495 --.-K/s in 0s
2023-04-06 22:22:29 (569 MB/s) - '/etc/yum.repos.d/CentOS-Base.repo' saved 2495/2495
root@wuzuniao yum.repos.d# vim CentOS-Base.repo #查看源的配置
base #名称唯一,一定要放在\[\]中
name=CentOS-8.5.2111 - Base - mirrors.aliyun.com #说明,可以随便写
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
http://mirrors.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
http://mirrors.cloud.aliyuncs.com/centos-vault/8.5.2111/BaseOS/$basearch/os/ #yum源服务器的地址
gpgcheck=0 #1表示RPM数字证书生效,需要验证;0表示RPM数字证书不生效,不验证
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #数字证书的公钥文件保存位置
#additional packages that may be useful
root@wuzuniao yum.repos.d#

二、RHEL7版本创建本地yum源
无法联网时用本地光盘作为yum源;软件包通常在Packages目录中
root@wuzuniao \~# cd /etc/yum.repos.d/ #进入/etc/yum.repos.d/目录中(因为该目录存放着软件仓库的配置文件)
root@wuzuniao yum.repos.d# mv packagekit-media.repo packagekit-media.repo.bak #移除并备份原repo文件(此命令仅演示如何备份)
root@wuzuniao yum.repos.d# vim wuzuniao.repo #创建新的repo文件(文件名称可随意,但后缀必须为.repo)
wuzuniao #仓库名称:唯一标识,不和其他软件仓库名冲突;
name=wuzuniao #描述信息(name):注明软件仓库用途
baseurl=file:///media/cdrom #仓库位置(baseurl、mirrorlist):软件包的获取方式;可使用FTP、HTTP或本地文件(需要在后面添加file参数)
enabled=1 #是否启用(enabled):设置此源是否可用;1为可用,0为禁用。不写表示启用
gpgcheck=0 #是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。
#公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。
root@wuzuniao yum.repos.d# mkdir -p /media/cdrom #创建挂载点
root@wuzuniao yum.repos.d# mount /dev/cdrom /media/cdrom #这种方式iso文件通过光驱挂载给服务器(临时挂载)
mount: /dev/sr0 is write-protected, mounting read-only
root@wuzuniao yum.repos.d# mount -o loop -t iso9660 /opt/tools/CentOS-6.7-x86_64-bin-DVD1.iso /mnt/vcdrom #这种挂载方法文件在Linux服务器上,当前演示未使用(临时挂载)
root@wuzuniao yum.repos.d# vim /etc/fstab #设置成开机自动挂载(永久挂载)
/dev/cdrom /media/cdrom iso9660 defaults 0 0
root@wuzuniao yum.repos.d# mount -a #配置成永久后,立即挂载
root@wuzuniao yum.repos.d# yum clean all #等同于 yum cleanheaders、yum cleanpackages
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Cleaning repos: wuzuniao
Cleaning up everything
root@wuzuniao yum.repos.d# yum makecache #将服务器上的软件包信息在本地缓存,以提高搜索安装软件的速度
Loaded plugins: langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
wuzuniao | 4.1 kB 00:00:00
(1/5): wuzuniao/group_gz | 134 kB 00:00:00
(2/5): wuzuniao/filelists_db | 3.0 MB 00:00:00
(3/5): wuzuniao/primary_db | 3.4 MB 00:00:00
(4/5): wuzuniao/other_db | 1.3 MB 00:00:00
(5/5): wuzuniao/productid | 1.6 kB 00:00:00
Metadata Cache Created
root@wuzuniao yum.repos.d#
三、RHEL8版本配置本地源
root@wuzuniao-1 \~# mkdir -p /media/cdrom #创建挂载目录
root@wuzuniao-1 \~# vim /etc/fstab #修改挂载配置文件,让重启后也生效
/dev/cdrom /media/cdrom iso9660 defaults 0 0
root@wuzuniao-1 \~# mount -a #重新挂载,立即生效配置
root@wuzuniao-1 \~# cd /etc/yum.repos.d/ #进入仓库源配置文件所在目录
root@wuzuniao-1 yum.repos.d# vim wuzuniao.repo #创建仓库配置文件(文件名称可随意,但后缀必须为.repo)
8版本要同时添加BaseOS、AppStream,缺一不可
BaseOS #仓库名称:唯一标识,不和其他软件仓库名冲突;
name=BaseOS #描述信息(name):注明软件仓库用途
baseurl=file:///media/cdrom/BaseOS #仓库位置(baseurl):软件包的获取方式;可使用FTP、HTTP或本地文件(需要在后面添加file参数)
enabled=1 #是否启用(enabled):设置此源是否可用;1为可用,0为禁用。不写表示启用
gpgcheck=0 #是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。
#公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。
AppStream #仓库名称:唯一标识,不和其他软件仓库名冲突;
name=AppStream #描述信息(name):注明软件仓库用途
baseurl=file:///media/cdrom/AppStream #仓库位置(baseurl):软件包的获取方式;可使用FTP、HTTP或本地文件(需要在后面添加file参数)
enabled=1 #是否启用(enabled):设置此源是否可用;1为可用,0为禁用。不写表示启用
gpgcheck=0 #是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。
#公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。
EPEL #仓库名称:唯一标识,不和其他软件仓库名冲突;添加红帽的扩展包,可选
name=EPEL #描述信息(name):注明软件仓库用途
baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64 #仓库位置(baseurl):软件包的获取方式;可使用FTP、HTTP或本地文件(需要在后面添加file参数)
enabled=1 #是否启用(enabled):设置此源是否可用;1为可用,0为禁用。不写表示启用
gpgcheck=0 #是否校验(gpgcheck):设置此源是否校验文件;1为校验,0为不校验。
#公钥位置(gpgkey):若上面的参数开启了校验功能,则此处为公钥文件位置。若没有开启,则省略不写。
root@wuzuniao-1 yum.repos.d# yum clean all #清理缓存,默认没有
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
0 文件已删除
root@wuzuniao-1 yum.repos.d# yum makecache #建立缓存
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
AppStream 539 MB/s | 5.3 MB 00:00
BaseOS 365 MB/s | 2.2 MB 00:00
元数据缓存已建立。
root@wuzuniao-1 yum.repos.d#
四、EPEL
1、安装EPEL源(RHEL8)
root@Server_8_200 \~# cd /etc/yum.repos.d/ #进入yum源目录
root@Server_8_200 yum.repos.d# mv wuzuniao.repo wuzuniao.repo.back #备份原先yum源
root@Server_8_200 yum.repos.d# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm #下载安装阿里云的epel配置包
root@Server_8_200 yum.repos.d# sed -i 's|^#baseurl=https://download.example/pub\|baseurl=https://mirrors.aliyun.com\|' /etc/yum.repos.d/epel* #替换repo配置中地址为阿里云地址
root@Server_8_200 yum.repos.d# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel* #替换repo配置中地址为阿里云地址
root@Server_8_200 yum.repos.d# yum clean all #清理缓存
root@Server_8_200 yum.repos.d# yum makecache #建立缓存
2、安装EPEL源(RHEL7)
root@Client_7_100 \~# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo #安装epel
3、CentOS直接yum安EPEL源
root@wuzuniao \~# yum -y install epel-release #下载安装epel源
root@wuzuniao \~# dnf -y install epel-release #下载安装epel源