编译ceph源码:cython module not found问题的解决

环境: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即可

你可能感兴趣的:(分布式存储:ceph技能树,#,ceph运维:常见故障处理)