Ceph开发:如何编译ceph rpm包

产生源码压缩包

下载或从源码中生成源码的压缩包,如果你使用的是git仓库,那么你在源码根目录运行下面的命令,命令后可以设置源码的版本号。如果不指定版本号,该命令会根据git仓库的最近的tag号来产生版本号:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">./make-dist <version></pre>

另外,也可以从官网下载所需要的源码包:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">wget -P ~/rpmbuild/SOURCES/ https://download.ceph.com/tarballs/ceph-<version>.tar.bz2</pre>

rpm编译工具准备

生成了源码压缩包之后,下面需要安装rpm编译工具,在安装该工具之前,你需要确保已经安装了编译套件,如果没有,请运行源码包中的install-deps.sh脚本安装相关软件。运行下面的命令安装rpm-build工具和rpmdevtools:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">yum install rpm-build rpmdevtools</pre>

安装完成之后,初始化一个rpm编译环境:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">rpmdev-setuptree</pre>

该命令会生成这样一个目录结构:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">rpmbuild ├── SRPMS ├── SPECS ├── SOURCES ├── RPMS ├── BUILDROOT └── BUILD</pre>

将前面获得的压缩包移动到rpmbuild/SOURCES目录下:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">mv ceph-<version>.tar.bz2 rpmbuild/SOURCES</pre>

生成spec文件

spec文件是rpmbuild工具的编译脚本,这一步是根据源码包中的ceph.spec.in生成ceph.spec。运行下面的命令:

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">tar --strip-components=1 -C ~/rpmbuild/SPECS/ --no-anchored -xvjf ~/rpmbuild/SOURCES/ceph-<version>.tar.bz2 "ceph.spec"</pre>

编译rpm

编译rpm包,该命令是一次完成编译和打包,所以运行该命令之前需要确保你的源码已经编译成功。

<pre class="cm-s-default" style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);">rpmbuild -ba ~/rpmbuild/SPECS/ceph.spec</pre>

参考资料

  1. https://docs.ceph.com/en/latest/install/build-ceph/#rpm-package-manager
  2. https://docs.ceph.com/en/latest/install/build-ceph/#build-prerequisites
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容