提示:本文将学习如何配置Centos系统的yum源 仅供学习参考
如有问题或错误 感谢提示
目录
一、yum的介绍
Yum是什么?
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
那么RPM又是什么?
在Linux下安装软件,一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。
但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
比如:Windows获取安装

Linux获取安装通过不同的包进行安装使用

所以我们要学习配置好yum仓库(很重要)
二、yum仓库的种类
1. 本地仓库
-
定义:本地仓库是存储在本地系统上的软件包集合,通常是通过挂载光盘、USB存储设备或本地目录来创建的。
-
特点:
-
不需要网络连接,适合在离线环境中使用。
-
可以直接访问存储在本地的
.rpm文件。 -
配置简单,只需指定本地目录路径即可。
-
2. 网络仓库
-
定义:网络仓库是存储在远程服务器上的软件集合包,可以通过HTTP、HTTPS或FTP协议访问。
-
特点:
-
可以通过网络动态获取最新的软件包。
-
支持多种协议,安全性较高(如HTTPS)。
-
可以配置多个网络仓库,方便获取不同来源的软件包。
-
3. 自定义仓库
-
定义:自定义仓库是由用户自己创建和管理的仓库,可以包含自己编译的软件包或特定版本的软件包。
-
特点:
-
可以完全控制仓库的内容。
-
适合企业内部使用,可以确保软件包的安全性和一致性。
-
三、yum配置文件
在学习之前我们要学习yum配置文件中有什么参数
客户端文件配置内容:
[源名称] :自定义名称,具有唯一性
name:本软件源的描述字串
baseurl:指定YUM服务端的URL地址
enabled:是否启用此频道
gpgcheck:是否验证待安装的RPM包
gpgkey:用于RPM软件包验证的密钥文件
[root@localhost /]# vim /etc/yum.repos.d/haha.repo
[xixi] #仓库的标识
name=xixi #仓库描述信息,可以省略
baseurl=file:///mnt/AppStream #指定仓库位置file://表示本地为服务端
enabled=1 #本文件启用,可以省略
gpgcheck=0 #不检测红帽签名信息
[haha] #仓库的标识,不能重复
name=xixi #仓库描述信息,可以省略
baseurl=file:///mnt/BaseOS #指定仓库位置file://表示本地为服务端
enabled=1 #本文件启用,可以省略
gpgcheck=0 #不检测红帽签名信息

其中有些内容可以选择不写 不写的话为默认值
四、yum仓库搭建过程
1.本地yum仓库
远程连接到虚拟机(使用什么软件都可以)我使用本地Powershell进行连接,接下来,上代码
我们要记住这个路径/etc/yum.repos.d/ 这里存放的都是以.repo结尾的yum配置文件
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo CentOS-x86_64-kernel.repo
[root@localhost yum.repos.d]#
因为我们在装系统的时候,会自动编辑好这些,但是因为这里的配置都是Centos官方的yum仓库指向,我们连接比较麻烦,可以选择删除或者移到别的位置上,这里为了简单快捷直接删除
删除有风险,Linux中没有回收站这么一说 删除就是没有了 谨慎使用!!!
[root@localhost yum.repos.d]# rm -rf /etc/yum.repos.d/*
[root@localhost yum.repos.d]# ls
[root@localhost yum.repos.d]#
编写yum仓库配置文件
这里清除完仓库配置后,需要我们手动编写一份配置文件,根据前面配置信息编写即可
这里使用的是Centos7.9的镜像 挂载出来后是直接一个整体 并不是分开的Appstream和BaseOS
[root@localhost yum.repos.d]# vi yum.repo
[root@localhost yum.repos.d]# cat yum.repo
[xixi]
name=xixi
baseurl=file:///mnt/
enabled=1
gpgcheck=0

编写完成后 使用yum clean all 和yum repolist先清除缓存 然后查看已配置的源

挂载镜像
这里发现有报错 提示Couldn’t open file 意思是打不开这个文件 是因为这个文件不存在 我们需要手动挂载(mount)一下镜像文件到/mnt目录下
[root@localhost yum.repos.d]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# df -h /mnt/
文件系统 容量 已用 可用 已用% 挂载点
/dev/sr0 4.4G 4.4G 0 100% /mnt
镜像文件存储于/dev目录下 /dev/sr0和cdrom都是镜像文件 一个是源文件 一个是链接 都可以挂载
这里看到使用挂载的是/dev/cdrom 然后使用df命令查看 发现实际挂载的是/dev/sr0文件
查看挂载后的目录 确保挂载成功

重新清除一下源缓存然后生成yum clean all; yum makecache 命令意思清除缓存并生成缓存

测试下载
这里就可以看到状态是有数据的存在 这里就将本地yum仓库配置完成了 可以下载vim进行测试
使用 yum install -y vim 下载vim文本编辑器

rpm管理器可以查询下载的包 这里报错是因为vim软件包没有那么短 所以提示未安装
这里yum本地仓库所有都配置完成了
2.网络仓库
网络仓库中包含了两种仓库 FTP网络仓库和HTTP网络仓库 两种都很方便 看个人喜欢哪种方式(我更喜欢HTTP仓库)
FTP网络仓库
FTP文件传输协议 ,通过FTP协议,用户可以在FTP服务器中进行文件的上传或下载等操作
虽然现在通过HTTP协议下载的站点有很多,但是由于FTP协议可以很好地控制用户数量和宽带的分配,快速方便地上传、下载文件,因此FTP已成为网络中文件上传和下载的首选服务器,同时,它也是一个应用程序,用户可以通过它把自己的计算机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。
专门用于文件传输的服务FTP服务应运而生。
FTP大大简化了文件传输的复杂性,它能够使文件通过网络从一台主机传送到另外一台计 FTP 计
算机上却不受计算机和操作系统类型的限制。无论是PC、服务器、大型机,还是Linux、
Windows操作系统,只要双方都支持协议FTP,就可以方便、可靠地进行文件的传输。
配置FTP服务器
前面已经配置好本地yum仓库后 使用本地仓库进行下载ftp的安装包
yum -y install vsftpd

ftp默认存储位置在/var/ftp/目录下,可以自己进行更改存储位置,这里不做更改 直接选择默认
ftp默认允许匿名登录,可以根据自己所需要求进行更改
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #开启匿名用户访问 默认已开启
local_enable=YES #允许系统用户进行访问
write_enable=YES #开放服务器的写权限(若要上传,必须开启)默认已开启
anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)
anon_upload_enable=YES #允许匿名用户上传文件。默认已注释,需取消注释
anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录,默认已注释,需取消注释
anon_other_write_enable=YES #允许删除、重命名、覆盖等操作,需添加
开启服务并设置开机自启 查看服务是否开启 端口是否开启(默认端口为21)
[root@localhost yum.repos.d]# systemctl start vsftpd;systemctl enable vsftpd --now
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
[root@localhost yum.repos.d]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since 一 2025-06-23 16:02:50 CST; 7s ago
Main PID: 3988 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─3988 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
6月 23 16:02:50 localhost.localdomain systemd[1]: Starting Vsftpd ftp daemon...
6月 23 16:02:50 localhost.localdomain systemd[1]: Started Vsftpd ftp daemon.
[root@localhost yum.repos.d]# ss -untpl | grep 21
tcp LISTEN 0 32 [::]:21 [::]:* users:(("vsftpd",pid=3988,fd=4))
[root@localhost yum.repos.d]#
避免后期连接时出现错误,这里将防火墙和SELINUX临时关闭
[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# setenforce 0
编自己的仓库
在默认存储位置创建一个文件夹用来存储镜像文件,然后修改yum仓库配置文件中的URL地址
[root@localhost yum.repos.d]# mkdir /var/ftp/centos7
[root@localhost yum.repos.d]# umount /mnt/ #将原来挂载的取消
[root@localhost yum.repos.d]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 898M 0 898M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 9.5M 901M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/mapper/centos-root 27G 1.4G 26G 6% /
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 182M 0 182M 0% /run/user/0
[root@localhost yum.repos.d]# mount /dev/cdrom /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# ls /var/ftp/centos7/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost yum.repos.d]# vim yum.repo
[root@localhost yum.repos.d]# cat yum.repo
[xixi]
name=xixi
baseurl=ftp://10.10.10.10/centos7
enabled=1
gpgcheck=0
清除缓存并重新生成缓存
下载httpd服务进行测试 下面http仓库会使用到

这里ftp仓库就配置完成了
HTTP网络仓库
Web服务器端是,基于HTTP(Hypertext Transfer Protocol)协议,将网页对应文件传输给客户端的服务器端。
Hypertext(超文本)是可以根据客户端请求而跳转的结构化信息。
HTTP协议是以超文本传输为目的而设计的应用层协议,同样基于TCP/IP实现。
常用在网站搭建过程中,但是也可以用于数据传输使用
我们可以自己做一个http服务器的yum仓库用于其他本地服务器的使用,也可以使用各大云厂商的现有仓库来使用,但是需要联网。
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
EPEL的yum源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
配置HTTP服务器
前面为了测试ftp服务器进行下载了Apache的httpd服务,继续使用http服务来进行设置网络仓库
首先下载好http服务后需要开启服务,为了避免后面使用的时候出现问题,我们可以将防火墙和SELINUX关闭
[root@localhost ~]# rpm -q httpd #确认是否安装httpd
httpd-2.4.6-95.el7.centos.x86_64
[root@localhost ~]# systemctl stop firewalld;setenforce 0 #关闭防火墙与SELINUX
[root@localhost ~]# systemctl start httpd;systemctl enable httpd #开启http服务并设置开机自启
因为http服务是Web服务的一种,所以我们可以进行测试访问一下,浏览器打开访问IP

这里就是HTTP服务的测试页,该测试页存储在/usr/share/httpd/noindex/index.html目录下,版本不同或者源不同路径都不一样,可以使用find命令来查找一下具体在哪
或者我们可以自己写一个主页文件
[root@localhost ~]# vim /var/www/html/test.html
[root@localhost ~]# cat /var/www/html/test.html
Hello world!!
[root@localhost ~]# curl 10.10.10.10/test.html
Hello world!!
使用浏览器进行访问

这里就可以理解大概使用方法,我们可以在/var/www/html目录下创建一个文件夹,用来存放镜像文件相关的东西,通过http服务进行传输使用
[root@localhost ~]# mkdir /var/www/html/centos
[root@localhost ~]# ls /var/www/html/centos/
[root@localhost ~]# df -h /dev/cdrom
文件系统 容量 已用 可用 已用% 挂载点
/dev/sr0 4.4G 4.4G 0 100% /var/ftp/centos7
[root@localhost ~]# umount /var/ftp/centos7/
[root@localhost ~]# mount /dev/cdrom /var/www/html/centos/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# ls /var/www/html/centos/
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost ~]#
我们可以使用浏览器访问一下这个目录http://IP/centos

这里访问到之后就可以去修改配置文件内容
[root@localhost ~]# vim /etc/yum.repos.d/yum.repo
[root@localhost ~]# cat /etc/yum.repos.d/yum.repo
[xixi]
name=xixi
baseurl=http://10.10.10.10/centos
enabled=1
gpgcheck=0
[root@localhost ~]# yum clean all;yum makecache
已加载插件:fastestmirror
正在清理软件源: xixi
Cleaning up list of fastest mirrors
已加载插件:fastestmirror
Determining fastest mirrors
xixi | 3.6 kB 00:00:00
(1/4): xixi/group_gz | 153 kB 00:00:00
(2/4): xixi/filelists_db | 3.3 MB 00:00:00
(3/4): xixi/primary_db | 3.3 MB 00:00:00
(4/4): xixi/other_db | 1.3 MB 00:00:00
元数据缓存已建立
[root@localhost ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识 源名称 状态
xixi xixi 4,070
repolist: 4,070
[root@localhost ~]#

这里就可以进行使用HTTP服务的网络仓库了。
我们进行测试一下
[root@localhost ~]# yum -y install wget #网络下载工具
[root@localhost ~]# rpm -q wget
wget-1.14-18.el7_6.1.x86_64
[root@localhost ~]# yum -y install tree #以树状图显示
[root@localhost ~]# rpm -q tree
tree-1.6.0-10.el7.x86_64
[root@localhost ~]# tree /root
/root
└── anaconda-ks.cfg
0 directories, 1 file
云厂商网络仓库
在网络上有很多云厂商,阿里云,腾讯云等等,他们都会有一个公用的镜像仓库来 提供使用
配置也很简单,只需要主机可以访问网络,直接修改yum配置文件即可
更换阿里云yum仓库
[root@localhost ~]# ping www.baidu.com -c 4
PING www.baidu.com (110.242.69.21) 56(84) bytes of data.
64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=1 ttl=128 time=26.7 ms
64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=2 ttl=128 time=34.0 ms
64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=3 ttl=128 time=31.3 ms
64 bytes from 110.242.69.21 (110.242.69.21): icmp_seq=4 ttl=128 time=33.2 ms
--- www.baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 26.796/31.371/34.053/2.823 ms
使用wget工具直接下载好配置文件(curl也可以)
[root@localhost ~]# wget -O /etc/yum.repos.d/Centos.repo https://mirrors.aliyun.com/repo/Centos-7.repo
--2025-06-26 10:06:32-- https://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 116.148.190.241, 119.36.166.74, 119.36.166.75, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|116.148.190.241|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/Centos.repo”
100%[==============================================================================>] 2,523 --.-K/s 用时 0s
2025-06-26 10:06:32 (5.86 MB/s) - 已保存 “/etc/yum.repos.d/Centos.repo” [2523/2523])
[root@localhost ~]# mv /etc/yum.repos.d/yum.repo /etc/yum.repos.d/yum.bak #将原来的源备份
[root@localhost ~]# ls /etc/yum.repos.d/
Centos.repo yum.bak
###如果没有下载wget可以使用curl
[root@localhost ~]# curl -o centos.repo https://mirrors.aliyun.com/repo/Centos-7.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2523 100 2523 0 0 7183 0 --:--:-- --:--:-- --:--:-- 7208
[root@localhost ~]# ls
anaconda-ks.cfg centos.repo
清除缓存并重新生成缓存
[root@localhost ~]# yum clean all;yum makecache
[root@localhost ~]# yum repolist
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
源标识 源名称 状态
base/7/x86_64 CentOS-7 - Base - mirrors.aliyun.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.aliyun.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.aliyun.com 6,173
repolist: 16,771
[root@localhost ~]#
配置完成后可以下载测试一下,
[root@localhost ~]# rpm -q createrepo
createrepo-0.9.9-28.el7.noarch
[root@localhost ~]# yum -y install createrepo
3.自定义仓库
在工作中,往往环境都是在内网中,无法获取到网络上面的包,通常会使用mount命令来进行yum下载,这种方式虽然便捷,但是容易使磁盘压力过大,对运维人员十分不友好,我们可以自己来制作一个仓库,将常用到的rpm包放入到里面,然后进行使用
自定义Yum仓库(将自己的软件包文件构建成仓库)
1.完整yum仓库的组成
软件包和仓库清单
2.操作步骤
1.生成仓库清单
createrepo + 软件包路径
2.编写/etc/yum.repos.d/配置文件,配置yum
3.更新自定义yum仓库内容:刷新仓库增加或减少的包
1.更新仓库清单
createrepo --update 文件路径
2.更新yum缓存
yum makecache
操作如下:
在挂载的镜像中有许多rpm包,这里我挂载的位置是/var/www/html/centos/下,在该目录中,有一个子目录Packages中存储的都是rpm包,我们进行测试可以使用一下,或者你有自己找的rpm包,也可以
[root@localhost ~]# mkdir /opt/repo
[root@localhost ~]# cp /var/www/html/centos/Packages/net-tools-2.0-0.25.20131004git.el7.x86_64.rpm /opt/repo/
[root@localhost ~]# ls /opt/repo/
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm
存放好之后我们使用createrepo命令生成仓库清单
[root@localhost ~]# createrepo /opt/repo/
Spawning worker 0 with 1 pkgs
Spawning worker 1 with 0 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@localhost ~]# ls /opt/repo/
net-tools-2.0-0.25.20131004git.el7.x86_64.rpm repodata
修改yum配置文件,将前面配置的都不使用,写一份新的配置文件然后进行测试
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mv Centos.repo Centos.repo.bak
[root@localhost yum.repos.d]# mv yum.repo yum.bak
[root@localhost yum.repos.d]# ls
Centos.repo.bak yum.bak
[root@localhost yum.repos.d]# vim test.repo
[root@localhost yum.repos.d]# cat test.repo
[test]
name=test
baseurl=file:///opt/repo
enable=1
gpgcheck=0
[root@localhost yum.repos.d]# yum clean all;yum makecache
已加载插件:fastestmirror
正在清理软件源: test
Cleaning up list of fastest mirrors
Other repos take up 536 M of disk space (use --verbose for details)
已加载插件:fastestmirror
Determining fastest mirrors
test | 2.9 kB 00:00:00
(1/3): test/filelists_db | 1.4 kB 00:00:00
(2/3): test/other_db | 1.5 kB 00:00:00
(3/3): test/primary_db | 2.3 kB 00:00:00
元数据缓存已建立
[root@localhost yum.repos.d]# yum -y install net-tools
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解决依赖关系
--> 正在检查事务
---> 软件包 net-tools.x86_64.0.2.0-0.25.20131004git.el7 将被 安装
--> 解决依赖关系完成
......
已安装:
net-tools.x86_64 0:2.0-0.25.20131004git.el7
完毕!
[root@localhost yum.repos.d]# rpm -q net-tools
net-tools-2.0-0.25.20131004git.el7.x86_64
这里自定义仓库就配置完成了
总结
通过本篇文章,你可以学习到三种不同的方式来配置自己的yum仓库,从而提高软件包的下载速度和稳定性,您可以选择最适合自己需求的镜像源进行更换。因为镜像使用的是Centos7.9-2009的版本,所以配置文件中只有一种,对于不同版本的镜像是不一样的。请根据自己的具体情况来进行更改,流程都是一样的。
&spm=1001.2101.3001.5002&articleId=148732158&d=1&t=3&u=f48fef6c1b4840dcbddaa716b428cbe4)
13万+

被折叠的 条评论
为什么被折叠?



