热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ceph编译

1.环境2.下载Ceph代码3.选择分支4.updatesubmodule5.下载依赖6.安装devtoolset7.编译二进制8.编译rpm8.1.先编译dist包8.2.编译r

  • 1. 环境
  • 2. 下载Ceph代码
  • 3. 选择分支
  • 4. update submodule
  • 5. 下载依赖
  • 6. 安装devtoolset
  • 7. 编译二进制
  • 8. 编译rpm
    • 8.1. 先编译dist包
    • 8.2. 编译rpm包
      • 8.2.1. 编译srpm包
      • 8.2.2. 编译rpm包
  • 9. 参考

build Ceph



编译需要的时间比较长,建议在screen里面编译,防止terminal连接中断



如果在根目录挂载的文件系统下编译,根目录至少有100G可用空间
如果是其他目录单独挂载的文件系统下编译,根目录至少有50G可用空间,其他目录至少有100G空间



1. 环境


组件名称版本备注
操作系统CentOS Linux release 7.8.2003 (Core)
内核3.10.0-1127.el7.x86_64
Ceph分支版本v15.2.15

2. 下载Ceph代码

git clone git@github.com:ceph/ceph.git

3. 选择分支


我这里选择tag v15.2.15


git checkout v15.2.15

4. update submodule

git submodule update --init --recursive

5. 下载依赖


如果使用官方提供的 install-deps.sh 会有几个包装不上,例如golang-github-prometheus-prometheus,手动安装依赖


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 cmake3 libcap-ng-devel libnl3-devel librdkafka-devel fuse3-devel python36-sphinx

6. 安装devtoolset


安装devtoolset主要为了解决ceph使用了C++17的特性,但CentOS7默认源安装的GCC版本不兼容问题,错误信息如下

GCC 7+ required due to C++17 requirements

yum install centos-release-scl
yum install devtoolset-8
# 每次编译source一下
source /opt/rh/devtoolset-8/enable

7. 编译二进制


编译服务器CPU越多编译越快,24核的半小时编译完成,8核每次编译两个多小时


cd build
make -j$(nproc)

编译完最后输出如下

请添加图片描述

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


8. 编译rpm


8.1. 先编译dist包

./make-dist

编译产物 ceph-15.2.15-0-g2dfb188.tar.bz2 boost_1_72_0.tar.bz2 dashboard_frontend.tar rook_ceph_client.tar


8.2. 编译rpm包


8.2.1. 编译srpm包

./make-srpm.sh

编译产物 ceph-15.2.15-0.g2dfb188.el7.src.rpm


8.2.2. 编译rpm包


编译rpm包时默认spec文件中有make,所以编译耗时跟编译二进制是一样的


rpmbuild -D"_sourcedir `pwd`" -D"_specdir `pwd`" -D"_srcrpmdir `pwd`" -ba ceph.spec

Provides: ceph-debuginfo = 2:15.2.15-0.g2dfb188.el7 ceph-debuginfo(x86-64) = 2:15.2.15-0.g2dfb188.el7
Requires(rpmlib): rpmlib(FileDigests) <&#61; 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <&#61; 4.0-1 rpmlib(CompressedFileNames) <&#61; 3.0.4-1
检查未打包文件&#xff1a;/usr/lib/rpm/check-files /root/rpmbuild/BUILDROOT/ceph-15.2.15-0.g2dfb188.el7.x86_64
写道:/mnt/vdb/ceph/ceph-15.2.15-0.g2dfb188.el7.src.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-base-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/noarch/cephadm-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-common-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-mds-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-mon-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-mgr-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-dashboard-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-diskprediction-local-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-diskprediction-cloud-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-modules-core-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-rook-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-k8sevents-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-mgr-cephadm-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-fuse-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/rbd-fuse-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/rbd-mirror-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-immutable-object-cache-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/rbd-nbd-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-radosgw-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-resource-agents-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-osd-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librados2-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librados-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libradospp-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librgw2-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librgw-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-rgw-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-rados-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libradosstriper1-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libradosstriper-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librbd1-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/librbd-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-rbd-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libcephfs2-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libcephfs-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-cephfs-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-ceph-argparse-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/python36-ceph-common-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-test-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libcephfs_jni1-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/libcephfs_jni-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/cephfs-java-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/rados-objclass-devel-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-selinux-15.2.15-0.g2dfb188.el7.x86_64.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-grafana-dashboards-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/noarch/ceph-prometheus-alerts-15.2.15-0.g2dfb188.el7.noarch.rpm
写道:/root/rpmbuild/RPMS/x86_64/ceph-debuginfo-15.2.15-0.g2dfb188.el7.x86_64.rpm
执行(%clean): /bin/sh -e /var/tmp/rpm-tmp.6GS8ro
&#43; umask 022
&#43; cd /root/rpmbuild/BUILD
&#43; cd ceph-15.2.15-0-g2dfb188
&#43; rm -rf /root/rpmbuild/BUILDROOT/ceph-15.2.15-0.g2dfb188.el7.x86_64
&#43; exit 0

编译产物 /root/rpmbuild/RPMS/x86_64/


9. 参考

Ceph
依赖包部分是kk友情指导


推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 在 CentOS 6.4 上安装 QT5 并启动 Qt Creator 时,可能会遇到缺少 GLIBCXX_3.4.15 的问题。这是由于系统中的 libstdc++.so.6 版本过低。本文将详细介绍如何通过更新 GCC 版本来解决这一问题。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案
    MySQL 8.0 MGR 自动化部署与配置:DBA 和开源工具的高效解决方案 ... [详细]
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • 在64位Linux系统上编译GCC时,可能会遇到一个错误,即在构建共享库过程中,`.libs/alloc.o` 文件中的重定位 `R_X86_64_32` 无法应用于 `.rodata.str1.8` 段。这一问题通常与目标文件的地址空间限制有关,需要通过调整编译选项或修改源代码来解决。具体来说,可以尝试使用 `-fPIC` 选项以生成位置无关代码,或者检查相关对象文件的链接方式。 ... [详细]
  • 在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统
    本文详细介绍了在VMware虚拟机中部署带有中文图形界面的CentOS 7 Linux系统的步骤。首先,通过“文件”菜单选择“新建虚拟机”并进入自定义设置。接着,在硬盘兼容性选项中选择默认设置。为了更好地进行Linux操作系统的安装练习,建议选择稍后安装操作系统,并在虚拟机安装完成后,根据实际需求删除不必要的硬件组件。此外,本文还提供了详细的配置参数和注意事项,帮助用户顺利完成整个部署过程。 ... [详细]
  • 在 CentOS 6.6 系统中搭建 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的运行环境配置指南
    本文提供了在 CentOS 6.6 系统上配置 MONO 和 Jexus 以支持 ASP.NET 及 MVC 应用的详细步骤。首先,确保本机环境为 CentOS 6.6,并使用阿里云的 YUM 源来安装必要的软件包,包括 gcc、gcc-c++、bison、pkgconfig 和 glib2-devel。这些软件包是构建和运行 MONO 环境的基础,确保系统能够顺利支持 ASP.NET 和 MVC 应用的部署和运行。 ... [详细]
  • 本文详细介绍了在CentOS 6.5 64位系统上使用阿里云ECS服务器搭建LAMP环境的具体步骤。首先,通过PuTTY工具实现远程连接至服务器。接着,检查当前系统的磁盘空间使用情况,确保有足够的空间进行后续操作,可使用 `df` 命令进行查看。此外,文章还涵盖了安装和配置Apache、MySQL和PHP的相关步骤,以及常见问题的解决方法,帮助用户顺利完成LAMP环境的搭建。 ... [详细]
author-avatar
岚氵的幽岚1980
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有