linux私有软件仓库搭建核心是生成repodata元数据并提供http访问:服务端用createrepo构建仓库结构,客户端通过配置.repo文件指向baseurl并刷新缓存即可使用。

Linux 软件包仓库管理核心在于统一存储、索引生成和客户端可访问。私有源不是简单复制 RPM 文件,而是通过元数据(repodata)让 yum/dnf 知道“有哪些包、依赖什么、怎么安装”。搭建关键在服务端生成有效仓库结构,再让客户端正确指向它。
服务端:创建并初始化本地仓库
以 CentOS/RHEL/Fedora 为例,需用 createrepo 工具生成元数据:
- 安装必要工具:
yum install -y createrepo yum-utils(RHEL/CentOS 7/8)或dnf install -y createrepo_c(Fedora/RHEL 9+) - 准备软件包目录,例如:
mkdir -p /var/www/html/myrepo/Packages - 将 RPM 包(如 nginx-1.20.1-10.el8.x86_64.rpm)放入 Packages 目录
- 生成仓库元数据:
createrepo /var/www/html/myrepo(会自动扫描 Packages 并写入 repodata/) - 若后续新增 RPM,只需运行
createrepo --update /var/www/html/myrepo增量更新
服务端:提供 HTTP 访问(推荐方式)
本地 file:// 协议仅限单机测试;生产环境应通过 Web 服务暴露仓库:
- 启用 httpd 或 nginx(如:
yum install -y httpd && systemctl enable --now httpd) - 确保 SELinux 允许 Web 访问目录(
semanage fcontext -a -t httpd_sys_content_t "/var/www/html/myrepo(/.*)?" && restorecon -Rv /var/www/html/myrepo) - 防火墙放行端口:
firewall-cmd --add-service=http --permanent && firewall-cmd --reload - 验证访问:
curl http://localhost/myrepo/repodata/repomd.xml应返回 XML 内容
客户端:配置并启用私有源
客户端无需安装额外工具,只需正确配置 .repo 文件并刷新缓存:
- 新建源配置:
/etc/yum.repos.d/myrepo.repo - 内容示例(注意 baseurl 地址为服务端 IP 或域名):
[myrepo] name=Internal YUM Repository baseurl=http://192.168.10.100/myrepo/ enabled=1 gpgcheck=0 repo_gpgcheck=0
- 清理旧缓存:
yum clean all或dnf clean all - 重建缓存:
yum makecache或dnf makecache - 验证源是否生效:
yum repolist或dnf repolist应列出 myrepo
进阶建议:安全与维护要点
私有源上线后需兼顾可用性与可控性:
- 避免长期关闭
gpgcheck;建议用rpm --import导入内部 GPG 公钥,并在 .repo 中启用gpgcheck=1和gpgkey=file:///... - 定期同步上游源(如 EPEL)到私有仓库,可用
reposync+createrepo --update实现离线镜像 - 对关键业务包(如自研 RPM)单独建 repo 目录,避免混入系统包导致冲突
- 配合
yum versionlock(需 yum-plugin-versionlock)锁定特定版本,防止意外升级











