产生源码压缩包
下载或从源码中生成源码的压缩包,如果你使用的是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>
网友评论