搭建本地yum/apt源实现离线软件安装

当服务器处于内网环境无法访问公网时,通过搭建本地yum或apt源,让局域网内其他机器能像有网一样安装更新包。
本文以CentOS 7(yum)和Ubuntu 20.04(apt)为例,手把手带你在离线环境下完成源搭建与使用。

准备工作:你需要什么?

你需要一台能上网的机器(用于下载仓库包),以及一台离线目标机器(或整个内网机器)。

  • 用于下载的机器建议有足够磁盘空间(至少10GB用于常用仓库)。
  • 离线机器需能通过局域网访问下载机上的共享目录(如NFS、HTTP或直接挂载ISO)。
  • 如果使用云服务器做下载机,例如泽御云(zeyuyun.com) 提供的云服务器,其带宽稳定,适合快速同步仓库。

搭建本地yum源(适用于CentOS/RHEL 7/8)

1. 同步官方仓库到下载机

# 创建仓库目录
mkdir -p /var/repo/centos/7/os/x86_64

# 使用reposync同步base源(只同步必要的包)
yum install -y yum-utils createrepo
reposync -r base -p /var/repo/centos/7/os/x86_64
createrepo /var/repo/centos/7/os/x86_64
如果只需要关键软件包,可以只同步base源,其他源如extrasupdates按需添加。

2. 通过HTTP暴露仓库

安装nginx或httpd,配置站点根目录为/var/repo,然后启动服务。

yum install -y nginx
systemctl start nginx
# 确保防火墙放行80端口
firewall-cmd --add-service=http --permanent
firewall-cmd --reload

3. 在离线客户端配置yum源

编辑/etc/yum.repos.d/local.repo

[local-base]
name=Local CentOS Base
baseurl=http://<下载机IP>/centos/7/os/x86_64
gpgcheck=0
enabled=1

然后执行yum clean all && yum makecache验证。

搭建本地apt源(适用于Ubuntu/Debian)

1. 同步官方仓库

# 安装依赖
apt install -y apt-mirror apache2

# 配置镜像下载内容
# 编辑 /etc/apt/mirror.list
############# 配置参考 #############
# set base_path /var/spool/apt-mirror
# set nthreads 20
# set _tilde 0
# deb http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
# deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
# 清理命令
#############

# 执行同步(耗时较长)
apt-mirror

同步完成后,包会存放在/var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu/

2. 配置Web访问

将Apache根目录指向该路径:

ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com /var/www/html/ubuntu
systemctl restart apache2

3. 离线客户端配置apt源

编辑/etc/apt/sources.list,注释掉所有行,添加:

deb http://<下载机IP>/ubuntu focal main restricted universe multiverse

然后apt update测试。

踩坑记录:依赖缺失与路径陷阱

  • 依赖包不全:同步时只同步了base源,但某些软件依赖来自updates或security源。建议在mirror.list中加入deb http://archive.ubuntu.com/ubuntu focal-updates main restricted等行。
  • GPG签名问题:设置gpgcheck=0(yum)或[trusted=yes](apt)可临时绕过,生产环境建议保留签名并导入公钥。
  • 磁盘空间不足:同步前用df -h检查空间,否则中途失败。
  • 权限错误:确保Apache对仓库目录有读取权限(chmod -R 755 /var/repo)。

效果验证与常见问题

验证方法:在客户端执行yum install -y httpdapt install -y nginx,观察是否从本地源下载。

FAQ

  1. 问:一台下载机可以同时供yum和apt使用吗?

答:可以,分别在不同子目录存放rpm和deb包,通过不同URL路径区分即可。

  1. 问:仓库同步过程中断怎么办?

答:重新执行reposyncapt-mirror,会自动续传未完成的文件。

  1. 问:客户端配置后提示404错误?

答:检查baseurl路径是否指向了正确的子目录。
yum源需包含repodata目录,apt源需包含distspool目录。

  1. 问:能否只同步特定软件包?

答:可以。
yum用reposync -r base -p /path --download-metadata加上--downloadcomps参数;
apt用apt-get download <包名>apt-rdepends手动收集依赖,但较复杂。

按上述步骤操作,即使在内网环境也能像有网一样轻松安装软件。
遇到报错优先检查网络连通性、目录权限和路径配置,多试几次就能搞定。

分享到:
上一篇
KVM多系统虚拟机搭建跨境测试环境完整教程
下一篇
加固隐藏文件目录权限防止数据泄露:从命令到面板全流程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意