资讯动态

离线部署利器:手把手构建UOS 20与CentOS 8本地软件仓库

发布时间:2026/8/20 12:21:57 来源:尧图企业网站定制
1. 为什么你需要一个本地软件仓库想象一下这个场景你正在一个没有外网连接的数据中心或者网络速度慢得像蜗牛爬的生产环境里突然需要给几十台服务器安装相同的软件包。每次等待下载都像在参加一场耐力测试网络不稳定时还可能中途失败。这时候本地软件仓库就是你的救星。我经历过太多次这样的痛苦直到学会搭建本地源才发现原来效率可以提升这么多。本地仓库本质上就是把操作系统安装镜像ISO里的软件包提前解压出来放在服务器本地或者内网共享目录中。这样所有机器都能直接从本地获取软件速度比外网下载快10倍不止还彻底摆脱了网络依赖。对于UOS 20和CentOS 8这类现代Linux系统官方ISO镜像通常包含数千个常用软件包。以CentOS 8.4镜像为例光BaseOS和AppStream两个仓库就有超过5GB的软件资源涵盖开发工具、运行时环境、系统组件等所有基础需求。而UOS 20的专业版镜像更是预装了国产化生态的全套软件。2. 准备工作别急着动手这些细节很重要2.1 硬件资源规划在开始之前先检查你的硬件配置是否达标。我建议至少准备存储空间ISO镜像本身通常需要8-15GB空间挂载后还需要同等大小的临时空间。如果要做镜像缓存建议预留30GB以上内存运行yum/dnf至少需要2GB内存处理大型软件包时可能需要更多网络环境虽然本地源主打离线使用但首次配置时可能需要临时联网下载依赖特别提醒千万不要用生产环境的主存储做实验我曾经不小心把一个500GB的生产存储卷挂载成了本地源目录结果...你懂的。建议在独立分区或者外接硬盘上操作。2.2 获取正确的ISO镜像不同系统版本对应的镜像差异很大UOS 20需要区分家庭版、专业版、服务器版建议从统信官网下载CentOS 8注意区分BaseOS和AppStream的整合镜像DVD版与最小化镜像Minimal版这里有个小技巧用sha256sum命令校验下载的ISO文件完整性。我就遇到过镜像损坏导致软件包安装失败的坑sha256sum uos-20-professional-amd64.iso # 对比官网公布的校验值3. 实战一步步构建双系统本地仓库3.1 挂载ISO镜像的三种姿势方法一直接挂载物理光驱适合有物理光盘的场景但现实中越来越少见了mkdir -p /mnt/iso mount /dev/cdrom /mnt/iso方法二挂载ISO文件最常用 这是我推荐的方式特别是虚拟机环境mount -o loop uos-20.iso /mnt/iso方法三解压ISO到目录适合需要修改内容的场景但会失去ISO的压缩特性unsquashfs -f -d /mnt/iso uos-20.iso挂载后一定要验证ls /mnt/iso # 应该能看到AppStream、BaseOS等目录 df -h # 查看挂载点是否显示正确的容量3.2 配置CentOS 8的本地源CentOS 8开始采用双仓库设计配置比老版本复杂些。先备份原有配置mkdir -p /etc/yum.repos.d/backup mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/然后创建新的repo文件cat /etc/yum.repos.d/local.repo EOF [BaseOS] nameCentOS 8 - BaseOS (Local) baseurlfile:///mnt/iso/BaseOS gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial enabled1 [AppStream] nameCentOS 8 - AppStream (Local) baseurlfile:///mnt/iso/AppStream gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial enabled1 EOF关键点说明baseurl中的路径必须与挂载点完全一致gpgcheck1保证软件包安全性如果镜像非官方可改为0双仓库必须同时启用很多软件依赖两者中的包3.3 配置UOS 20的本地源UOS的配置略有不同它使用apt而非yumcat /etc/apt/sources.list.d/local.list EOF deb [trustedyes] file:///mnt/iso uos main contrib non-free EOF更新软件缓存apt clean apt update常见问题处理如果提示无法找到Release文件检查ISO挂载路径是否正确出现GPG错误可以添加[trustedyes]参数临时跳过验证4. 高级技巧让本地源更强大4.1 创建混合仓库把多个ISO镜像合并成一个超级仓库mkdir /srv/repo # 复制第一个ISO内容 cp -r /mnt/iso1/* /srv/repo/ # 合并第二个ISO rsync -av /mnt/iso2/ /srv/repo/ # 重建元数据 createrepo /srv/repo4.2 局域网共享方案用Nginx快速搭建HTTP仓库yum install nginx systemctl start nginx ln -s /mnt/iso /usr/share/nginx/html/repo其他机器就可以这样配置baseurlhttp://[服务器IP]/repo/BaseOS4.3 自动化维护脚本这是我常用的仓库更新脚本#!/bin/bash MOUNT_DIR/mnt/iso REPO_DIR/srv/repo umount $MOUNT_DIR 2/dev/null mount -o loop $1 $MOUNT_DIR rsync -av --delete $MOUNT_DIR/ $REPO_DIR/ restorecon -Rv $REPO_DIR systemctl restart nginx5. 避坑指南我踩过的那些雷坑1权限问题第一次配置时我忘了给nginx用户访问权限结果其他机器一直报403错误。解决方法chcon -R -t httpd_sys_content_t /srv/repo坑2符号链接失效在fstab中使用/dev/sr0做自动挂载结果设备号变了导致启动失败。更好的做法是UUID$(blkid -s UUID -o value /dev/sr0) echo UUID$UUID /mnt/iso iso9660 defaults 0 0 /etc/fstab坑3缓存不一致有时候yum会缓存旧数据导致找不到新包。记住这个万能命令yum clean all yum makecache坑4空间不足处理大型仓库时df命令要常备watch -n 5 df -h记得有次我同步仓库时把根分区塞满了系统直接崩溃。现在我会先用这个命令预估空间du -sh /mnt/iso

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价