centos 6 下编译打包 ceph 10.2.0

来源:互联网 发布:怎么成为算法工程师 编辑:程序博客网 时间:2024/05/01 11:35

 先来看看release note: http://docs.ceph.com/docs/master/release-notes/#v10-2-0-jewel

but CentOS 7.x. We have dropped support for CentOS 6

但是鉴于全部升级操作系统会是比较缓慢的过程所以先在现有环境编译打包

1.download
wget http://download.ceph.com/tarballs/ceph_10.2.0.orig.tar.gz
2.打包准备
tar -xzvf ceph_10.2.0.orig.tar.gz
从 src/tools/Makefile-client.am 删除rbd-nbd的相关编译项目,因为内核默认的nbd模块版本比较低不支持rbd-nbd的操作,如果需也可以选择升级这个模块
cp ceph.spec  ./
tar -cjf  ~/rpmbuild/SOURCES/ceph-10.2.0.tar.bz2 ceph-10.2.0
3.需要支持c++11的编译器
wget http://gcc.skazkaforyou.com/releases/gcc-4.9.0/gcc-4.9.0.tar.gz;
tar gcc-4.9.0.tar.gz
cd gcc-4.9.0
./contrib/download_prerequisites
yum install glibc-devel
./configure --prefix=/usr/local --enable-languages=c,c++ --disable-multilib
make install
4.安装boost
1.53 即可
解压后
由于ceph 连接的时mt版本,默认时最小编译,所以需要全部编译,另外最好卸载系统中现有的版本(实际上设置好链接顺序不会有问题)
./b2 --prefix=/usr/local  --build-type=complete --layout=tagged  install
5.安装patch
git clone https://github.com/ceph/ceph.git
cp init-ceph.in-fedora.patch ~/rpmbuild/SOURCES/
6.安装提示的依赖
rpmbuild -bb ceph.spec
注意只安装python 以外的依赖即可,由于ceph中的工具现在不再支持python2.6版本,安装python2.7版本会可能会影响yum 的使用所以现在先将其他的以来都装了省的一会麻烦
不用理会boost 和 /usr/share/selinux/devel/policyhelp is needed by ceph-1:10.2.0-0.el6.x86_64 以来
只要确认boost 安装成功一会从spec文件注释掉以来检测即可
policyhelp 比较麻烦
  https://fedoraproject.org/wiki/SELinux_Policy_Modules_Packaging_Draft
  The /usr/share/selinux/devel/policyhelp requirement was necessary to extract the version number of the selinux-policy package being built against, which is used to enforce a minimum version requirement on selinux-policy when the built package is installed. The policyhelp file itself can be found in either the selinux-policy, selinux-policy-devel, or selinux-policy-doc package (depending on OS release), which is why we cannot simply use a package name unless we are prepared to sacrifice spec file portability. From Fedora 20 onwards, this method is no longer necessary, so if your packaging is not targeting any releases prior to Fedora 20 or EPEL-5/6, the /usr/share/selinux/devel/policyhelp requirement is not needed.
    所以一会也从spec文件注释掉这部分的以来 
7.安装rocksdb
git clone https://github.com/facebook/rocksdb.git
make static_lib
8.安装python2.7
wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz 这个快些
这个直接安装就好,不过记得一定要安装/usr下,可能spec文件是在centos 7下写的其默认是python2.7 所以有些路径是写成固定的 @@
wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py
pip install distribute
pip install Cython
ln -s /usr/local/bin/sphinx-build /usr/local/bin/sphinx-1.0-build
安装所以python 包的依赖
需要yum时如果遇到问题,可以在yum的脚本直接报名python的版本,或者修改软连接
9.修改spec文件
vim ceph.spec
1)
找到%install
下面添加
%define __debug_install_post   \
       %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
    %{nil}


2)
由于centos7 使用systemd 替代init,脚本中本来已经做了判断不过漏了一处(感觉)
%{_unitdir}/ceph.target from ceph.spec => #%{_unitdir}/ceph.target from ceph.spec
3)
删掉一下包的文件定义
rbd-nbd cephfs-java libcephfs_jni1-devel
rbd-nbd 是上面的原因,java的这两个感觉不必要,不过我不需要所以直接注释掉了
(查找%file 部分会看到这个部分内容)
4)
在%clean前加上这些
删掉多余的文件 
rm %{_libdir}/libcephfs_jni.so -f
rm %{_javadir}/libcephfs-test.jar -f
rm %{_javadir}/libcephfs.jar -f
rm %{_mandir}/man8/rbd-nbd.8* -f


10. 开始打包
/bin/env QA_RPATHS=$[ 0x0020 ]  rpmbuild -bb  ceph-10.2.0_old/ceph.spec


0 0
原创粉丝点击