环境:centos7.5
ceph版本:12.2.1
在当前环境对ceph源码rpm包进行重新编译
执行命令rpmbuild --rebuild ceph-12.2.1-0.el7.src.rpm
最后出现错误如下:
Could not find cython3. Please install Cython.
- 查看此时对
Cython3
模块的编译规则
vim /BUILD/ceph-12.2.1/cmake/modules/FindCython.cmake
SET(Cython${PYTHON_VERSION}_FOUND FALSE) # Try to run Cython, to make sure it works: execute_process( COMMAND ${PYTHON${PYTHON_VERSION}_EXECUTABLE} -m cython --version #为此时执行的命令 RESULT_VARIABLE CYTHON_RESULT OUTPUT_QUIET ERROR_QUIET ) if (CYTHON_RESULT EQUAL 0) SET(Cython${PYTHON_VERSION}_FOUND TRUE) endif (CYTHON_RESULT EQUAL 0) IF (Cython${PYTHON_VERSION}_FOUND) IF (NOT Cython_FIND_QUIETLY) MESSAGE(STATUS "Found cython${PYTHON_VERSION}") ENDIF (NOT Cython_FIND_QUIETLY) ELSE (Cython${PYTHON_VERSION}_FOUND) IF (Cython_FIND_REQUIRED) MESSAGE(FATAL_ERROR "Could not find cython${PYTHON_VERSION}. Please install Cython.")#命令执行失败,没有找到cython模块的打印 #增加如下一行,来进行执行命令的打印 MESSAGE(FATAL_ERROR ${PYTHON${PYTHON_VERSION}_EXECUTABLE} -m cython --version ) ENDIF (Cython_FIND_REQUIRED) ENDIF (Cython${PYTHON_VERSION}_FOUND)
- 通过以上过程确认到在编译过程中执行如下命令报出错误:
/usr/bin/python3 -m cython --version
则单独执行该命令报出如下错误cython module not found问题的解决
- 此时问题非常明显,我们环境中的python3版本cython模块缺失
再次确认该问题,执行如下命令[node1@localhost build]$ which python3 #查看python3的绝对路径 /usr/bin/python3 [node1@localhost build]$ /usr/bin/python3 --version #查看当前python3的版本 Python 3.6.8 [node1@localhost build]$ cd /usr/lib/python3.6/site_packages/ #进入到python3.6.8版本的lib库目录 #发现该目录为空
- 此时问题已经确认,python3.6.8版本未完全安装,尝试解决cython module的问题
在cython官网下载最新的Cython-0.29.10.tar.gz
代码,执行如下步骤进行安装cd Cython0.29.10 #这里一定要加python对应的版本,我们是python3获取不到cython模块,所以要安装对应的python3版本的cython /usr/bin/python3 setup.py install
- 安装好python3的cython模块,但是因为python3.6.8很多动态库都没有装上,后续仍然会有很多python3的库问题
这里建议重新安装python3.6.8版本,进入python官网,下载python3.6.8源码的tar包
执行如下步骤进行源码的编译安装#解压压缩包 tar xzvf Python-3.6.8.tgz cd Python-3.6.8 # 编译安装 #./configure --help查看编译参数 #默认安装在'/usr/local/bin','/usr/local/lib' etc #可以通过参数指定如:--prefix=/usr/local/python3 #这里我将我python3.6.8的安装路径放在/usr目录下,它会自己将可执行文件放到/usr/bin目录下,动态库已经模块放到/usr/lib目录下 ./configure --prefix=/usr/ make && make install
- 安装成功之后再次确认
/usr/lib/python3.6/site_packages/
目录库是否足够,如果此时再次出现cython
缺失,那么按照我们进行cython
源码安装的步骤再次使用python3
进行依次安装即可
此时问题我们再次执行rpmbuild --rebuild ceph-12.2.1-0.el7.src.rpm
可以成功执行下去。综上,我们的问题仍然是操作系统对应的python3未安装完全导致,如果设备联通外网,可以重新yum update python3
或者yum upgrade python3
即可