当前位置:首页>Linux>Linux离线环境搭建本地YUM源和局域网YUM源(优化版)

Linux离线环境搭建本地YUM源和局域网YUM源(优化版)

  • 2026-09-08 01:01:34
Linux离线环境搭建本地YUM源和局域网YUM源(优化版)
TUTORIAL · 系统运维2026.07

内网就不能装软件?只能光盘装包?

离线环境YUM源搭建完全指南

ISO挂载·自定义RPM·HTTP/FTP全链路

ISO挂载 · 自定义RPM · Nginx · vsftpd · SUSE · 踩坑

KIKI.KIM

CentOSSUSE

📦 5 Parts + Conclusion

👉 滑动

PART 01

本地YUM源

ISO挂载·自定义RPM

PART 02

局域网YUM源

Nginx·vsftpd

PART 03

SUSE配置

zypper本地·HTTP源

PART 04

最佳实践

权限·SELinux·多版本

PART 05

问题排查

makecache·防火墙·连通性

PART ///

写在最后

方案对比·推荐

内网环境无法访问外网时

搭建本地YUM源和局域网YUM源是解决软件安装的关键方案

本文涵盖ISO挂载、自定义RPM源、HTTP/FTP局域网源等多种方式,覆盖CentOS 7/8/9和SUSE系统,助你从零搭建一套完整的离线软件源体系。

01

PART

本地YUM源

LOCAL · ISO & RPM

1.1 ISO镜像挂载方式

适用于有操作系统ISO镜像的场景,可直接使用镜像中的Packages作为YUM源。

方式一

直接挂载物理光盘

适用于服务器有光驱且有光盘的场景,即插即用。

...bash

mkdir -p /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

# 可选:设置开机自动挂载,编辑 /etc/fstab

echo '/dev/cdrom /mnt/cdrom iso9660 defaults 0 0' >> /etc/fstab

方式二

挂载ISO文件(推荐)

下载好的ISO文件可直接通过loop设备挂载,无需刻录光盘。

...bash

mkdir -p /mnt/cdrom

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

# 可选:设置开机自动挂载,编辑 /etc/fstab

echo '/path/to/CentOS-7-x86_64-DVD-2009.iso /mnt/cdrom iso9660 loop 0 0' >> /etc/fstab

方式三

复制ISO内容到本地目录

将ISO内容复制到磁盘目录,挂载点释放后可被其他用途复用。

...bash

mkdir -p /mnt/cdrom /yum/yum-iso

mount -o loop CentOS-7-x86_64-Everything-1511.iso /mnt/cdrom/

cp -a /mnt/cdrom/* /yum/yum-iso/

umount /mnt/cdrom

配置本地repo文件

CentOS 7使用单repo配置,所有包在 Packages 目录下平铺。

...bash

cat > /etc/yum.repos.d/local.repo << EOF

[local]

name=CentOS-\$releasever - Local

# 根据挂载后的地址修改

baseurl=file:///yum/yum-iso/

enabled=1

gpgcheck=0

EOF

CentOS 8/9需分开配置 BaseOS 和 AppStream 两个仓库。

...bash

cat > /etc/yum.repos.d/local.repo << EOF

[local-BaseOS]

name=CentOS-\$releasever - BaseOS

baseurl=file:///yum/yum-iso/BaseOS/

enabled=1

gpgcheck=0

[local-AppStream]

name=CentOS-\$releasever - AppStream

baseurl=file:///yum/yum-iso/AppStream/

enabled=1

gpgcheck=0

EOF

清理并验证

...bash

yum clean all

yum makecache

yum install vim tree -y

1.2 自定义RPM包方式

适用于已有一批RPM包但没有完整ISO的场景。将散落的RPM包集中到目录中,用createrepo工具生成仓库元数据。

...bash

# 准备目录结构

mkdir -p /yum/yum-custom/packages

# 将所有rpm包放入 /yum/yum-custom/packages/

# 安装createrepo工具

yum install createrepo -y

# 创建repo数据

createrepo -u -d /yum/yum-custom/

# 配置repo文件

cat > /etc/yum.repos.d/custom.repo << EOF

[custom]

name=Custom RPM Repository

baseurl=file:///yum/yum-custom/

enabled=1

gpgcheck=0

EOF

# 验证

yum clean all && yum makecache

1.3 刷新repo数据

当新增或删除RPM包后,需要刷新repo元数据。

✦ 提示

执行 createrepo --update 只会更新有变化的包元数据,比全量重建快得多。

...bash

createrepo --update /yum/yum-custom/

yum clean expire-cache

02

PART

局域网YUM源

LAN · HTTP & FTP

将本地YUM源通过网络共享,供局域网内其他机器使用。

2.1 HTTP方式(推荐)

方式一

使用Nginx(生产环境推荐)

...bash

# 安装nginx

yum install nginx -y

# 配置nginx

cat > /etc/nginx/conf.d/yum.conf << EOF

server {

  listen 80;

  server_name yum-server;

  root /yum;

  autoindex on;

  autoindex_exact_size off;

  autoindex_localtime on;

}

EOF

# 启动服务

systemctl start nginx

systemctl enable nginx

# 关闭防火墙或开放端口

firewall-cmd --add-port=80/tcp --permanent

firewall-cmd --reload

方式二

使用Python简易HTTP服务(临时使用)

临时测试时可用Python内置HTTP服务器快速启动,无需安装Nginx。

...bash

# 在Windows或Linux上均可

cd /yum

python -m http.server 9000

客户端配置

...bash

cat > /etc/yum.repos.d/lan-yum.repo << EOF

[lan-yum]

name=LAN YUM Repository

baseurl=http://192.168.1.100/yum-iso/

enabled=1

gpgcheck=0

EOF

yum clean all && yum makecache

2.2 FTP方式

...bash

# 安装vsftpd

yum install vsftpd -y

# 配置vsftpd

cat >> /etc/vsftpd/vsftpd.conf << EOF

anon_root=/yum

anonymous_enable=YES

local_enable=NO

write_enable=NO

EOF

# 启动服务

systemctl start vsftpd

systemctl enable vsftpd

# 关闭防火墙

firewall-cmd --add-service=ftp --permanent

firewall-cmd --reload

FTP客户端配置

...bash

cat > /etc/yum.repos.d/ftp-yum.repo << EOF

[ftp-yum]

name=FTP YUM Repository

baseurl=ftp://192.168.1.100/yum-iso/

enabled=1

gpgcheck=0

EOF

04

PART

最佳实践与注意事项

BEST · PRACTICES

4.1 权限配置

...bash

chmod -R 755 /yum/

chown -R root:root /yum/

4.2 SELinux设置

...bash

# 临时关闭

setenforce 0

# 永久关闭

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

reboot

4.3 多版本共存

...bash

# 创建版本目录

mkdir -p /yum/centos7 /yum/centos8 /yum/custom

# 配置不同repo

cat > /etc/yum.repos.d/centos7.repo << EOF

[centos7]

name=CentOS 7

baseurl=http://192.168.1.100/centos7/

enabled=0

gpgcheck=0

EOF

# 使用时启用

yum --enablerepo=centos7 install package-name

4.4 离线环境下安装createrepo

如果系统没有createrepo命令,需要先安装它。可以从ISO镜像中找到对应的RPM包手动安装。

...bash

# 从ISO中查找createrepo相关包

find /mnt/cdrom -name "*createrepo*"

# 安装

rpm -ivh /mnt/cdrom/Packages/createrepo-*.rpm

05

PART

常见问题排查

TROUBLESHOOTING

!踩坑提示 🕳

5.1 yum makecache失败

...bash

# 检查baseurl路径是否正确

curl http://192.168.1.100/yum-iso/repodata/repomd.xml

# 检查防火墙

firewall-cmd --list-all

# 检查SELinux

getenforce

!踩坑提示 🕳

5.2 找不到某些包

...bash

# 使用Everything版本ISO

# 或添加额外的rpm包到自定义源目录

createrepo --update /yum/yum-custom/

!踩坑提示 🕳

5.3 客户端无法访问服务器

...bash

# 检查网络连通性

ping 192.168.1.100

telnet 192.168.1.100 80

# 检查服务器服务状态

systemctl status nginx

systemctl status vsftpd

///

LAST

写在最后

SUMMARY · 方案对比

方式
适用场景
优点
缺点
ISO挂载
全新安装、系统修复
配置简单
包不全、需挂载
自定义RPM
特定软件集
灵活可控
需手动维护
HTTP共享
局域网多机器
访问方便、稳定
需额外服务
FTP共享
传统场景
兼容性好
性能较低

根据实际需求选择合适的方案,推荐使用HTTP方式(Nginx)+ 复制ISO内容到本地目录的组合,既能保证稳定性,又便于局域网内其他机器访问。

我是 小梦同学,一个爱折腾技术的测试工程师,专注分享踩坑经验。

既然看到这里了,如果觉得有用,随手点个赞、在看、转发三连吧。

点赞
在看
转发

THANKS FOR READING

最新文章

随机文章