python源碼下載地址
CEPH源碼包下載地址
提示:編譯機器務必內存大一點,16GB以上,磁盤空間留足一點!!!
1、創建rpmbuild目錄
cd ~
mkdir rpmbuild/{BUILD,SOURCES,SPECS,RPMS,BUILDROOT} -pv
2、下載ceph源碼,拷貝到/root/rpmbuild/SOURCES中
3、解壓源碼包(主要是拿源碼包中的spec文件)
tar -xvf ceph-15.2.13.tar.gz
4、安裝編譯依賴環境和編譯工具
yum install make python-devel openssl-devel graphviz autoconf automake rpm-build libtool
5、手動安裝gcc 8.3.1,銀河麒麟V10 ISO包的Packages-gcc下有8.3.11的包,拷貝到系統中,使用rpm -Uvh *.rpm安裝,提示缺少依賴,yum install 解決依賴
6、進入源碼目錄,修改ceph.spec,將Source0 定義的包名改成tar.gz格式的,本例中下載的為tar.gz的包,故需要修改相應的
.......
%if 0%{?suse_version}
Group: System/Filesystems
%endif
URL: http://ceph.com/
Source0: http://ceph.com/download/ceph-15.2.13.tar.gz
.......
7、安裝相關依賴
yum install CUnit-devel boost-random cmake expat-devel fuse-devel gperf libaio-devel libbabeltrace-devel libblkid-devel libcap-ng-devel libcurl-devel libibverbs-devel libnl3-devel librabbitmq-devel librdkafka-devel librdmacm-devel libxml2-devel lttng-ust-devel lz4-devel ncurses-devel nss-devel openldap-devel python3-Cython python3-devel python3-prettytable python3-sphinx snappy-devel valgrind-devel xfsprogs-devel xmlstarlet yasm systemd-devel leveldb-devel spax at time mailx ed sendmail util-linux-user cups-client gperftools-devel gperftools-libs nasm lua-devel libicu-devel gperftools-devel cryptsetup-devel
8、手動安裝kylin10缺失的包,用el8的包替代
liboath-2.6.2-3.el8.aarch64.rpm
liboath-devel-2.6.2-3.el8.aarch64.rpm
redhat-lsb-submod-security-4.1-47.el8.aarch64.rpm
redhat-lsb-core-4.1-47.el8.aarch64.rpm
9、其中redhat-rpm-config,銀河麒麟下是kylin-rpm-config,rpm -qa | grep rpm-config查詢一下,如果沒有的話yum install kylin-rpm-config一個
然后修改ceph.spec,注釋掉BuildRequires: redhat-rpm-config
......
#hardened-cc1
%if 0%{?fedora} || 0%{?rhel}
# BuildRequires: redhat-rpm-config
%endif
......
10、修改系統默認的python版本為3.7.4
11、在/usr/lib/rpm/macros文件中有一個定義:
%_unpackaged_files_terminate_build 1,把1改為0只警告
12、最后使用rpmbuild -ba --target=$(uname -m) ceph.spec 進行編譯
特別提醒:建議對swap擴容一下。使用free -m 查看swap大小,如果只有4或者8G的,建議擴容一下。否則編譯到一半會因為無法分配內存報錯
# 在/swap下創建swapfile文件,不要在/tmp下創建swapfile
mkdir -p /swap
dd if=/dev/zero of=/swap/swapfile bs=1M count=16384
# 格式化swap
mkswap /swap/swapfile
# 掛載swap
swapon /swap/swapfile