手把手教你用createrepo在openEuler 22.03 LTS上搭建本地yum源(附nginx内网共享配置)

发布时间:2026/6/1 11:57:46

手把手教你用createrepo在openEuler 22.03 LTS上搭建本地yum源(附nginx内网共享配置) 手把手教你用createrepo在openEuler 22.03 LTS上搭建本地yum源附nginx内网共享配置在企业内部服务器环境中离线软件包管理是保障系统稳定运行的关键环节。本文将带您从零开始在openEuler 22.03 LTS系统上构建一个完整的本地yum仓库并通过Nginx实现内网共享解决无外网环境下的软件依赖难题。1. 环境准备与ISO镜像处理首先需要获取openEuler 22.03 LTS的完整镜像文件。推荐下载everything版本ISO它包含了所有基础软件包和依赖项wget https://repo.openeuler.org/openEuler-22.03-LTS/ISO/x86_64/openEuler-22.03-LTS-everything-x86_64-dvd.iso下载完成后建议通过以下命令验证ISO完整性sha256sum openEuler-22.03-LTS-everything-x86_64-dvd.iso将下载的ISO文件放置在合适的存储位置例如/data目录。为确保后续操作顺利进行需要提前安装必要的工具链dnf install -y createrepo_c nginx2. 创建本地yum仓库2.1 挂载ISO镜像使用loop设备挂载ISO文件到指定目录mkdir -p /mnt/openeuler mount -o loop /data/openEuler-22.03-LTS-everything-x86_64-dvd.iso /mnt/openeuler挂载后目录结构解析Packages/包含所有RPM软件包repodata/存放仓库元数据RPM-GPG-KEY-openEuler系统签名公钥2.2 构建仓库目录结构创建本地仓库存储路径并复制文件mkdir -p /home/repo/openeuler rsync -av /mnt/openeuler/ /home/repo/openeuler/提示使用rsync而非cp命令可以保留文件属性并在中断后支持断点续传2.3 生成仓库元数据使用createrepo_c工具创建仓库索引createrepo_c --update --workers$(nproc) --compress-typexz /home/repo/openeuler参数详解--update增量更新模式--workers并行处理线程数建议设为CPU核心数--compress-type指定元数据压缩格式3. 配置本地yum源创建repo配置文件cat /etc/yum.repos.d/local-openeuler.repo EOF [local-openeuler] nameLocal openEuler 22.03 LTS Repository baseurlfile:///home/repo/openeuler enabled1 gpgcheck1 gpgkeyfile:///home/repo/openeuler/RPM-GPG-KEY-openEuler EOF验证仓库可用性dnf clean all dnf makecache dnf repolist常见问题处理GPG验证失败执行rpm --import /home/repo/openeuler/RPM-GPG-KEY-openEuler元数据损坏重新运行createrepo_c命令路径错误检查baseurl是否指向正确位置4. 通过Nginx实现内网共享4.1 配置Nginx服务编辑Nginx配置文件cat /etc/nginx/conf.d/openeuler-repo.conf EOF server { listen 80; server_name repo.internal; root /home/repo; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; charset utf-8; # 限制访问IP段 allow 192.168.0.0/16; deny all; } # 防止repodata目录被缓存 location ~ ^/openeuler/repodata/ { add_header Cache-Control no-store, no-cache; } } EOF关键配置说明autoindex启用目录列表功能charset确保中文文件名正常显示Cache-Control防止客户端缓存元数据启动并设置Nginx开机自启systemctl enable --now nginx firewall-cmd --permanent --add-servicehttp firewall-cmd --reload4.2 配置客户端访问在内网其他服务器上创建repo文件cat /etc/yum.repos.d/network-openeuler.repo EOF [network-openeuler] nameNetwork openEuler 22.03 LTS Repository baseurlhttp://your-server-ip/openeuler enabled1 gpgcheck1 gpgkeyhttp://your-server-ip/openeuler/RPM-GPG-KEY-openEuler EOF5. 高级维护与优化技巧5.1 仓库更新策略当需要添加自定义RPM包时# 将新包放入Packages目录 cp new-package.rpm /home/repo/openeuler/Packages/ # 增量更新元数据 createrepo_c --update /home/repo/openeuler # 更新压缩索引可选 createrepo_c --compress-typexz --update /home/repo/openeuler5.2 性能优化建议存储优化使用XFS文件系统提升大文件处理性能考虑LVM快照便于仓库回滚网络优化# 在Nginx配置中添加 gzip on; gzip_types application/x-rpm; sendfile on; tcp_nopush on;安全加固# 设置目录权限 chown -R root:nginx /home/repo chmod -R 750 /home/repo find /home/repo -type f -exec chmod 640 {} \;5.3 实用dnf命令参考操作类型命令示例说明仓库管理dnf repolist --all列出所有仓库包查询dnf list available显示可用包包安装dnf install --downloadonly pkg仅下载不安装依赖分析dnf repoquery --requires pkg查看包依赖组操作dnf group list hidden显示隐藏软件包组6. 故障排查指南问题1客户端报错Couldnt resolve host检查Nginx服务状态systemctl status nginx验证网络连通性curl -I http://server-ip/openeuler/repodata/repomd.xml问题2GPG签名验证失败# 在客户端执行 curl -O http://server-ip/openeuler/RPM-GPG-KEY-openEuler rpm --import RPM-GPG-KEY-openEuler问题3createrepo执行缓慢增加worker数量--workers$(nproc)使用内存盘加速mkdir /tmp/repodata mount -t tmpfs -o size2G tmpfs /tmp/repodata createrepo_c --cachedir/tmp/repodata /home/repo/openeuler问题4Nginx返回403错误检查SELinux状态getenforce临时解决方案setenforce 0永久解决方案semanage fcontext -a -t httpd_sys_content_t /home/repo(/.*)? restorecon -Rv /home/repo

相关新闻