自行构建RPM仓库

  有时候我们可能会需要自行编译RPM包,关于如何编译RPM包,可以查看呉真的这篇博文,当有了RPM包后,我们可能会需要分发到多台服务器上去,如果采用手工传输的方法,不免有些麻烦。这时可以自行搭建一个RPM仓库,使用yum/dnf一键安装自行编译的RPM包。

目录结构

  一个典型的RPM仓库的目录结构是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
├── centos
│   ├── 6
│   │   ├── SRPMS
│   │   ├── i386
│   │   └── x86_64
│   ├── 7
│   │   ├── SRPMS
│   │   │ ├── xxx-1.0-1.el7.src.rpm
│   │   │   └── repodata
│   │   └── x86_64
│   │   ├── repodata
│   │   └── RPMS
| | └── xxx-1.0-1.el7.x86-64.rpm
│   └── 8
│   │   ├── SRPMS
│   │   └── x86_64
├── debian
└── ubuntu

  每个具有repodata的目录可以视为一个小仓库,SRPMS用于存放RPM包的源文件,RPMS用于存放编译好的RPM包

创建RPM仓库

  我们先创建目录结构,在这里我们以操作CentOS 7分支为例。

1
2
mkdir -p centos/7/SRPMS
mkdir -p centos/7/x86_64/RPMS

  使用createrepo命令,建立RPM仓库。

1
2
3
yum -y install createrepo
createrepo centos/7/SRPMS
createrepo centos/7/x86_64

加入RPM包

  • .src.rpm源码包放入centos/7/SRPMS目录
  • .rpm二进制包放入centos/7/x86_64/RPMS目录

  再一次使用createrepo命令,更新包索引。

1
2
createrepo --update centos/7/SRPMS
createrepo --update centos/7/x86_64

  以后每加入一次包,都需要使用createrepo --update命令,重新更新包索引。

发布RPM仓库

  至此RPM仓库搭建完成,非常简单,我们可以使用HTTP/FTP服务发布RPM仓库,呉真将一个仓库发布在了Github Page上,仓库源地址为:https://github.com/kuretru/packages