微信优化

weixinyouhua

linux怎么配置本地yum源?本地yum源配置详细步骤

2026-09-26 11:32:53

Linux配置本地yum源的答案其实很简单:把系统安装镜像或软件包目录挂载到服务器,写一个.repo配置文件指向它,执行yum clean all和makecache就能用了,整个过程五分钟内可以完成,而且不依赖外网,内网服务器和离线环境下尤其好用。

如果你管理过几台Linux服务器,大概率遇到过这种尴尬:内网机器要装个软件,yum源连不上公网,报错一串超时或404;或者公司要求服务器不能走外网,但开发环境又想装个nginx、php,配置本地yum源就是解决这类问题的最直接手段,相当于把软件仓库搬到你自己家里。

什么场景下需要配置本地yum源

配置本地yum源不是所有环境的标配,但遇到下面这三类情况,你会发现它比任何网络源都靠谱。

  • 完全离线的生产内网:银行、政务、军工类项目服务器通常物理隔离,没法访问公网镜像,本地yum源是唯一的软件安装来源。
  • 公网源速度慢或不稳定:某些云厂商的镜像源高峰期拉取速度极低,或企业出口带宽被限速,本地源安装在局域网内,速度接近磁盘读写。
  • 多台机器需要相同软件版本:生产环境几十台服务器需要装同一版本依赖包,逐台从公网拉取既慢又容易拿到不同版本,本地源一次同步,所有机器统一版本。

linux配置本地yum源步骤:从挂载到repo文件

配置本地yum源的核心动作只有三个:准备软件包目录、编写repo文件、刷新缓存,下面按最常用的CentOS 7/8系列操作来说明,其他发行版逻辑完全一样。

第一步:准备本地软件包目录

如果手上有系统安装ISO镜像,这是最省事的方式,把ISO挂载到指定目录:

mkdir -p /mnt/cdrom
mount -o loop /path/to/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom

挂载成功后,/mnt/cdrom/Packages 目录下会有一大堆rpm包,如果没有ISO镜像,也可以找一个已经装了rpm包的目录,或者从其他机器拷贝Packages文件夹过来,行业共识是,使用与服务器相同大版本的ISO镜像最可靠,跨大版本用本地源容易因为依赖库版本差异出幺蛾子。

linux怎么配置本地yum源?本地yum源配置详细步骤

第二步:确认yum源配置文件哪个

这是新手最容易困惑的地方,进入 /etc/yum.repos.d/ 目录,你会看到多个.repo后缀的文件,yum会读取这个目录下所有.repo文件,但同一个软件包如果出现在多个源里,优先级由priority参数决定,没写这个参数则按文件名顺序读取,所以配置本地源时,最好新建一个独立文件并禁用其他源。

建议操作路径:

  1. 备份原源:mkdir /etc/yum.repos.d/backup && mv /etc/yum.repos.d/.repo /etc/yum.repos.d/backup/
  2. 新建本地源文件:vim /etc/yum.repos.d/local.repo
  3. 写入如下内容:
[local]
name=Local Yum Repository
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0

如果不想备份其他源,也可以把它们的enabled改成0。gpgcheck=0在纯内网环境没问题,签名校验只在能获取到GPG key时才有效,本地ISO挂载场景一般直接关掉。

第三步:刷新缓存并验证

yum clean all
yum makecache
yum list | head -20

看到包列表正常输出,说明本地源已经生效,这时再装软件,yum install nginx,速度会快很多。

扩展:局域网共享yum源

单机挂载ISO只是入门玩法,如果几十台机器都要用本地源,每台都挂ISO不现实,正确做法是选一台机器做yum源服务器,用nginx或vsftpd把Packages目录共享出来,其他机器把baseurl指向这台服务器的IP或域名。

服务器端需要安装createrepo工具(ISO镜像里自带,离线环境可从Packages目录找到rpm包手动安装),

createrepo /mnt/cdrom

客户端侧只需要把baseurl改成http://192.168.1.10/cdrom

linux怎么配置本地yum源?本地yum源配置详细步骤

即可,这样只要开着这台源服务器,整个内网的机器都能高速安装软件包。

本地yum源与网络yum源怎么选

很多刚接触Linux的同学会有个疑问:既然默认的网络yum源配好了就能用,为什么还要折腾本地源?两者不都是装软件的入口吗?这里从几个关键维度对比一下。

  • 可用性:网络源依赖外网连通性,DNS污染或防火墙策略变化都会导致yum失效;本地源完全自控,只要磁盘没坏就在。
  • 速度:网络源受带宽和服务端负载影响,高峰期下载rpm包可能只有几十KB/s;局域网本地源通常是满速磁盘或千兆网卡,百兆内网跑满也有12MB/s左右。
  • 包数量与更新:网络源包含全部仓库包和增量更新;本地源如果只用ISO镜像,只有基础包,如果需要EPEL这类扩展仓库还得额外同步。
  • 适用场景:有外网且网络状况良好的单机环境,用网络源更省事;离线内网、批量装机、需要严格版本控制的场合,本地源是唯一选择。

国内服务器用户如果想保留网络源,推荐更换国内镜像站,比如简米云、清华TUNA、中科大USTC的镜像源都很稳定,修改方式同样是编辑.repo文件,把baseurl中的mirror.centos.org替换成对应镜像域名,然后makecache,据广泛应用反馈,国内镜像源的稳定性在多数情况下比官方源好一个数量级。

常见yum源报错处理:一条条对号入座

配置本地源过程中,有几个报错是新手必踩的坑,列出来一次性说清楚。

Could not resolve host

原因几乎都是客户端配置的baseurl写错了域名或端口不可达,检查服务器端源地址是否是IP而不是域名,或者防火墙有没有放行对应端口。

No more mirrors to try

这个报错往往与baseurl路径不存在或权限不足有关,检查baseurl=file:///mnt/cdrom路径是否真实存在,目录是否有读权限,ls /mnt/cdrom

linux怎么配置本地yum源?本地yum源配置详细步骤

是否能正常列出内容。

Nothing to do

常见于gpgcheck=1但未导入GPG key时,或请求的包名拼写错误,本地源场景下直接设置gpgcheck=0即可排除签名干扰。

Repo配置文件自查清单


  • [local]方括号名称全局唯一,不能与其他repo重复
  • baseurl路径末尾不要加多余斜杠,file://协议后面跟绝对路径
  • 同一源内不要混用mirrorlist和baseurl,二选一
  • 修改repo文件后必须yum clean all,否则缓存会干扰

linux配置本地yum源常见问题解答

问:配置了本地yum源之后,yum install装不上某个软件,提示依赖缺失,怎么办?

本地ISO镜像里的包是原始发行版全量包,但可能不包含EPEL或第三方仓库的软件,比如nginx高版本、PHP 7.4+,解决方法是额外下载所需rpm包放入Packages目录并重新运行createrepo,或者引入内网同步的EPEL镜像源。

问:本地yum源和配置好的国内镜像源可以同时使用吗?

可以,但建议明确优先级,在两个repo文件中都设置priority=N参数,数字越小优先级越高,并安装yum-plugin-priority插件,本地源通常设置priority=1,网络镜像源设置priority=10,这样本地优先,缺的包从网络源补。

问:服务器重启后yum又不能用了,这是什么原因?

大概率是ISO挂载丢了,因为mount只是临时挂载,解决方法是把挂载命令写入 /etc/fstab,加入一行:/path/to/xxx.iso /mnt/cdrom iso9660 loop,defaults 0 0,下次开机自动挂载,如果用的是局域网yum源服务器,则不需要操作这一步。

配置本地yum源这门技术,说到底是把软件安装的主动权握在自己手里,不管外网环境多恶劣,只要准备好了源,内网服务器随时都能装软件,实践一遍之后你就会发现,它的可靠性和速度带来的收益,远超首次配置花费的那五分钟。

相关文章

2024年,SaaS软件行业碰到获客难、增长慢等问题吗?

我们努力让每一次邂逅总能超越期待