在CentOS中使用createrepo创建自定义仓库

在 CentOS 系统中,使用 createrepo 构建自定义 YUM 仓库是一个非常实用的技能,尤其是当你在内网环境下需要批量部署软件,或者想管理自己开发的 RPM 包时。


1. 安装必要的工具

首先,你需要安装 createrepo 工具,它是生成仓库元数据(metadata)的核心。

1
sudo yum install -y createrepo

2. 准备存放 RPM 包的目录

创建一个文件夹来存放你的 RPM 文件。通常建议放在 /var/www/html(如果你打算通过 HTTP 共享)或者任意你喜欢的路径。

1
mkdir -p /data/custom-yum/packages

将你准备好的 .rpm 文件全部拷贝到这个 packages 目录下。

3. 初始化仓库元数据

运行 createrepo 命令,它会扫描目录下的 RPM 包并生成 repodata 目录,里面包含了 YUM 客户端索引所需的所有信息。

1
createrepo /data/custom-yum/

注意: 如果你后续往目录里新增了 RPM 包,需要更新索引,运行:
createrepo --update /data/custom-yum/


4. 配置本地 YUM 源文件

为了让系统能够识别这个新仓库,你需要在 /etc/yum.repos.d/ 目录下创建一个 .repo 配置文件。

1
sudo vi /etc/yum.repos.d/custom.repo

写入以下内容:

1
2
3
4
5
[custom-repo]
name=My Custom CentOS Repo
baseurl=file:///data/custom-yum/
enabled=1
gpgcheck=0
  • baseurl: 如果是本地路径,使用 file://;如果是远程服务器,使用 http://ftp://
  • gpgcheck: 如果你的包没有经过数字签名,请设置为 0

5. 验证与使用

清理缓存并查看仓库是否加载成功:

1
2
3
yum clean all
yum makecache
yum repolist

如果你在列表中看到了 custom-repo,那么你就可以像平时一样使用 yum install [你的包名] 来安装自定义包了。


6.通过 HTTP 共享仓库

如果你想让内网的其他机器也能访问这个仓库,可以配合 NginxApache 使用:

  1. 安装 Nginx:yum install nginx -y
  2. 将 Nginx 的 root 指向 /data/custom-yum/
  3. 确保防火墙允许 80 端口通行。
  4. 其他机器的 .repo 文件中,将 baseurl 修改为:
    baseurl=http://<你的服务器IP>/