在企业运维或开发测试环境中,我们经常需要搭建自己的本地软件仓库,以提高安装效率、节省带宽,或者分发内部构建的RPM包。RockyLinux作为RHEL的社区替代品,完全兼容CentOS生态,使用
createrepo工具可以轻松创建本地YUM仓库。本文将从零开始,手把手教你如何在RockyLinux系统上使用
createrepo命令创建一个功能完整的本地软件仓库。

一、准备工作
在开始之前,请确保你的RockyLinux系统已联网,并具备以下条件:
已安装RockyLinux 8 或 9(本文以RockyLinux 9为例) 拥有root权限或可使用sudo执行命令 系统已配置好基础网络和YUM源(如官方BaseOS/AppStream)二、安装createrepo工具
createrepo是用于生成YUM仓库元数据的命令行工具。它通常不在最小化安装中,默认需要手动安装。
执行以下命令安装:
安装完成后,可通过 sudo dnf install -y createrepocreaterepo --version
验证是否成功。
三、准备RPM包目录
首先,我们需要一个存放RPM包的目录。你可以将从官方下载的RPM、自己编译打包的RPM,或从其他机器复制的RPM统一放入该目录。
例如,创建一个名为
/repo/local的目录:
然后将你的RPM文件复制进去。假设你有多个RPM包,可以使用如下方式批量复制(示例路径为当前用户下载目录): 进入RPM包所在目录,运行 执行成功后,你会看到输出类似: 此时, 为了让系统识别这个新仓库,我们需要创建一个YUM源配置文件。 在 参数说明: 运行以下命令清理缓存并重建: 然后列出仓库中的软件包: 如果能看到你放入的RPM包列表,说明 RockyLinux createrepo 创建的本地YUM仓库已成功配置! - 如果你想通过HTTP共享仓库,可将 - 定期更新仓库:当你向目录添加新RPM时,只需重新运行 通过以上步骤,你已经掌握了在RockyLinux中使用 关键词回顾:RockyLinux createrepo、创建本地YUM仓库、RockyLinux软件仓库管理、自定义RPM仓库。sudo mkdir -p /repo/localsudo cp ~/Downloads/*.rpm /repo/local/四、使用createrepo生成仓库元数据
createrepo
命令即可生成仓库所需的元数据(主要是repodata目录):cd /repo/localsudo createrepo .Spawning worker 0 with 10 pkgsWorkers FinishedSaving Primary metadataSaving file lists metadataSaving other metadataGenerating sqlite DBsSqlite DBs complete/repo/local/
目录下会多出一个 repodata
文件夹,这就是YUM仓库的核心元数据。五、配置本地YUM源
/etc/yum.repos.d/
目录下新建一个文件,例如 local.repo
:sudo tee /etc/yum.repos.d/local.repo << 'EOF'[local-repo]name=Local RPM Repositorybaseurl=file:///repo/localgpgcheck=0enabled=1EOF[local-repo]
:仓库ID,必须唯一 name
:仓库名称,可自定义 baseurl
:仓库路径,这里使用 file://
协议指向本地目录 gpgcheck=0
:不校验GPG签名(若你的RPM有签名,可设为1并配置gpgkey) enabled=1
:启用该仓库六、验证仓库是否生效
sudo dnf clean allsudo dnf makecachednf list available --disablerepo='*' --enablerepo='local-repo'七、扩展建议
/repo/local
目录放在Web服务器(如Apache或Nginx)的根目录下,并将 baseurl
改为 http://your-server-ip/repo/local
。createrepo --update .
即可增量更新元数据,无需重建整个仓库。createrepo
工具创建本地YUM仓库的核心技能。无论是用于离线环境部署、内网分发,还是CI/CD流水线中的自定义包管理,这项技术都极具实用价值。
