ceph-release
rpm包用于在/etc/yum.repos.d/
目录下安装ceph.repo
文件。
本人使用容器进行RPM包构建,镜像为centos:7
(hub.docker.com
下载)
rpmbuild安装
1
| yum install -y rpm-build
|
rpmbuild目录树建立
1
| mkdir -pv ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,BUILDROOT}
|
- SPEC 保存RPM包配置(.spec)文件
- SOURCES 源代码目录,保存源码包(如.tar 包)和所有patch补丁
- BUILD 构建目录,源码包被解压至此,并在该目录的子目录完成编译
- BUILDROOT 最终安装目录,保存 %install 阶段安装的文件,打包好后此目录相关内容会自动删除
- RPMS 标准RPM包目录,生成/保存二进制RPM包
- SRPMS 源代码RPM包目录,生成/保存源码RPM包(SRPM)
构建BUILDROOT目录
1 2
| mkdir -p ~/rpmbuild/BUILDROOT/ceph-release-1-1.el7.noarch/etc/yum.repos.d/ # 必须建一个你程序名的一个目录
|
在~/rpmbuild/BUILDROOT/ceph-release-1-1.el7.noarch/etc/yum.repos.d/
目录下创建ceph.repo
文件,并写入如下内容:
1 2 3 4 5 6 7 8 9 10 11
| [Ceph] name=Ceph packages for $basearch baseurl=http://10.100.13.112/rpm-mimic/el7/$basearch enabled=1 gpgcheck=0
[Ceph-noarch] name=Ceph noarch packages baseurl=http://10.100.13.112/rpm-mimic/el7/noarch enabled=1 gpgcheck=0
|
编写SPEC文件
1
| touch ~/rpmbuild/SPEC/ceph-release.spec
|
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Name: ceph-release Version: 1 Release: 1.el7 Summary: Ceph Release License: GPL Group: Applications/System Vendor: zhoub Buildarch: noarch
%description %prep %build %pre %post %preun %postun %files /etc/yum.repos.d/ceph.repo %changelog
|
- Name 标签就是软件名,Version标签为版本号,而Release是发布编号。
- Summary 标签是简要说明,英文的话第一个字母应大写,以避免rpmlint工具(打包检查工具)警告
- License 标签说明软件包的协议版本,审查软件的License状态是打包者的职责,这可以通过检查源码或LICENSE文件,或与作者沟通来完成。
- Group 标签过去用于按照
/usr/share/doc/rpm-/GROUPS
分类软件包。目前该标记已丢弃,vim的模板还有这一条,删掉即可,不过添加该标记也不会有任何影响。
- %changelog 标签应包含每个Release所做的更改日志,尤其应包含上游的安全/漏洞补丁的说明。Changelog日志可使用
rpm --changelog -q <packagename>
查询,通过查询可得知已安装的软件是否包含指定漏洞和安全补丁。%changelog
条目应包含版本字符串,以避免rpmlint工具警告。
- 多行的部分,如
%changelog
或%description
由指令下一行开始,空行结束。
- 一些不需要的行(如BuildRequires和Requires)可使用‘#’注释。
%prep
、%build
、%install
、%file
暂时用默认的,未做任何修改。
构建RPM包
1
| rpmbuild -bb ~/rpmbuild/SPEC/ceph-release.spec
|
参考&鸣谢