ceph 源码编译以及制作RPM包(N 版)

编制ceph N版本

编译
  • 配置 pyhton 国内镜像源
    创建 ~/.pip/pip.conf 文件,并加入内容:(不需要安装pip)

    [global]
    index-url = https://mirrors.aliyun.com/pypi/simple/
    [install]
    trusted-host=mirrors.aliyun.com
    
  • 安装gcc 7+ 的版本

    # yum install -y centos-release-scl
    # yum install -y devtoolset-8
    # scl enable devtoolset-8 bash  # 可以配置在/etc/profile 中
    
  • 安装cmake3

    # yum install -y epel-release
    # yum install -y cmake3
    
  • 下载ceph源码与安装依赖

    # git clone https://github.com/ceph/ceph.git
    # cd ceph  
    # git checkout v14.2.22 
    # git submodule update --init --recursive
    # ./install-deps.sh  # 安装官方依赖
    

    使用 install-dep.sh 安装依赖会遇到一些问题:

    • 问题1:Error: No Package found for python-scipy
      解决方案,执行如下:

      # sed -i -e '/BuildRequires:  python%{_python_buildid}-scipy/d' ceph.spec.in
      
    • 问题2:systemed-sysusers 依赖问题:
      Error: Package: golang-github-prometheus-2.26.1-2.el7.x86_64 (epel) Requires: /usr/bin/systemd-sysusers
      解决方案:编辑 install-dep.sh 文件,如图所示,增加:


      image.png
    • 问题3:python faulthandler 版本依赖问题:
      ERROR: Could not find a version that satisfies the requirement faulthandler; python_version == "2.6" or python_version == "2.7" (from pytest-faulthandler==1.0.1->-r requirements.txt (line 25)) (from versions: none)
      ERROR: No matching distribution found for faulthandler; python_version == "2.6" or python_version == "2.7" (from pytest-faulthandler==1.0.1->-r requirements.txt (line 25))
      解决方案:在 src/pybind/mgr/dashboard/requirements.txt 里删掉第25行:pytest-faulthandler==1.0.1

    当然也可以尝试手动安装:

    yum install -y redhat-lsb-core yum-utils java-devel sharutils checkpolicy selinux-policy-devel python-cherrypy python-werkzeug bc gperf cmake cryptsetup fuse-devel gcc-c++ gdbm gperftools-devel jq leveldb-devel libaio-devel libblkid-devel libcurl-devel libudev-devel libtool libxml2-devel make parted perl pkgconfig python python-devel python-nose python-requests python-virtualenv snappy-devel udev util-linux valgrind-devel which xfsprogs xfsprogs-devel xmlstarlet yasm boost-random btrfs-progs nss-devel keyutils-libs-devel libibverbs-devel openldap-devel openssl-devel Cython python-prettytable python-sphinx python34-devel python34-setuptools python34-Cython lttng-ust-devel libbabeltrace-devel expat-devel redhat-rpm-config junit fcgi-devel selinux-policy-doc rdma-core-devel devtoolset-8-gcc-c++ lz4-devel liboath-devel librabbitmq-devel python2-Cython python36-Cython python36-setuptools python36-devel CUnit-devel librdmacm-devel libcap-ng-devel libnl3-devel librdkafka-devel fuse3-devel python36-sphinx ncurses-devel leveldb-devel
    
  • 编译:

    # ./do_cmake.sh -DBOOST_J=8 -DWITH_MGR_DASHBOARD_FRONTEND=OFF -DWITH_TESTS=OFF  # 这里不编译 DASHBOARD 和 test 
    

    执行编译:

    # cd build && make -j 8
    

    编译产物 build/bin 下的二进制文件

    • 如果遇到:"fatal error: Killed signal terminated program cc1 plus"
      说明编译时遇到内存不足,最好的办法当然是升级内存,或者分配swap分区:

      # mkdir -p /swap
      # dd if=/dev/zero of=/swap/swapfile bs=1M count=16384
      # mkswap /swap/swapfile  # 格式化swap
      # swapon /swap/swapfile  # 挂载swap
      
    • 提前下载boost源码包可编译提速
      在执行make编译的时候,脚本会自动下载 boost_1_72_0.tar.bz2,我们为了节省时间,也可以提前手动下载,下载地址:https://download.ceph.com/qa/boost_1_72_0.tar.bz2,将下载的好的包放在ceph/build/boost/src 即可。

    • 如果需要 debug 编译
      修改do_cmake.sh

      将:
      cmake -DBOOST_J=$(nproc) $ARGS "$@" ..   
      改为:
      cmake -DCMAKE_C_FLAGS="-O0 -g" -DCMAKE_CXX_FLAGS="-O0 -g" -DBOOST_J=$(nproc) $ARGS "$@" ..
      
    • 第三方库编译加速
      Boost,rocks_db库的编译默认是单线程的,我们这个通过增加编译的线程数量。

      # do_cmake.sh -DBOOST_J=64
      
    • 单独编译某个模块

      # make help  # 查看有哪些模块
      # make all   # 编译所有
      # make ceph-osd # 编译ceph-osd
      
    • 查看有哪些编译选项可以配置

      # cd build
      # cmake3 . -LH
      

制作RPM包

只有经过上面编译成功的流程,才能说明我们表明编译环境已经可以了,可以打rpm了。
接下来我们开始制作rpm包,首先安装rpm-build等工具。

# yum install -y rpm-build rpmdevtools 

创建 rpm-ceph 目录,进入该目录。

# mkdir -p /root/ceph/rpm-ceph && cd /root/ceph/rpm-ceph && mkdir rpmbuild
# mkdir rpmbuild/{SOURCES,BUILDROOT,RPMS,SPECS,SRPMS}

1、去这个地方 https://download.ceph.com/tarballs/ 下载对应版本的源码
2、将解压出来的源码中的ceph.spec 文件拷贝到SPECS目录下。
3、然后将源码压缩包和放置到拷贝到SOURCES目录下。
如图所示:

image.png

开始制作rpm包

# rpmbuild -bb --define '_topdir /root/ceph/rpm-ceph/rpmbuild' /root/ceph/rpm-ceph/rpmbuild/SPECS/ceph.spec

上面执行完rpmbuild命令之后,如果没有错误发生,那么就可以在/root/ceph/rpm-ceph/rpmbuild/RPMS/目录下看到制作好的rpm包了。


参考资料
1、https://www.jianshu.com/p/3097fe1e1aa7
2、https://ivanzz1001.github.io/records/post/ceph/2017/07/28/ceph-install
3、https://ivanzz1001.github.io/records/post/ceph/2017/07/28/ceph-install2
4、https://blog.csdn.net/Moolight_shadow/article/details/121568605
5、https://www.jianshu.com/p/f64320d9093e
6、https://www.ctyun.cn/developer/article/475043072647237
7、https://avmedia.0voice.com/?id=45973

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,063评论 6 510
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,805评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,403评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,110评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,130评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,877评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,533评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,429评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,947评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,078评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,204评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,894评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,546评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,086评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,195评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,519评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,198评论 2 357

推荐阅读更多精彩内容