无网络entos7报错ImportError: /lib64/libm.so.6: version `GLIBC_2.27‘ not found更新glibc

最近在尝试使用sklearn的升级版cuml,因为是一台没有连接互联网的gpu机器,所以构建cuml环境过程很坎坷,需要各种将各种whl包在线下载后上传到服务器中。
当我终于解决完包的互相依赖问题后,在import cuml时候遇到一个错误:ImportError: /lib64/libm.so.6: version `GLIBC_2.27’ not found (required by /anaconda3/envs/cuml_1/lib/python3.10/site-packages/cuml/internals/…/libcuml++.so)

查了一下自己机器的内核为kernel-3.10.0-1160.el7.x86_64,el7表示基于centos7的。于是乎搜索教程跟着一步步解决。
参考:https://blog.csdn.net/qq_39287495/article/details/139964001

更新glibc

wget http://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
#有网机器下载好后传输到服务器上后操作
tar xf glibc-2.28.tar.gz 
cd glibc-2.28/ && mkdir build  && cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

此时遇到报错说make的版本太旧
无网络entos7报错ImportError: /lib64/libm.so.6: version `GLIBC_2.27‘ not found更新glibc_第1张图片

升级gcc与make

升级gcc

在无网络的 CentOS 7 系统上升级 GCC 到版本 8,可以通过以下步骤实现:

  1. 下载必要的文件:在有网络的机器上,下载 GCC 8 的源码和依赖包。
    GCC 源码包:GCC Releases
    依赖包:GMP, MPFR, MPC, ISL,参考

    GCC 8 依赖的 GMP, MPFR, MPC, ISL 的版本要求如下:
    1. GMP (GNU Multiple Precision Arithmetic Library):
    版本要求:GMP 4.3.2 或更高版本
    2. MPFR (Multiple Precision Floating-Point Reliable Library):
    版本要求:MPFR 3.1.0 或更高版本
    3. MPC (Multiple Precision Complex Library):
    版本要求:MPC 1.0.1 或更高版本
    4. ISL (Integer Set Library):
    版本要求:ISL 0.15 或更高版本
    

    下载包时候注意满足 GCC 8 的构建需求。
    可以在gcc中下载:下载

wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.18.tar.bz2
也可以在各自官网下载:
GMP: [GMP Releases](https://gmplib.org/download/gmp/)
MPFR: [MPFR Releases](https://www.mpfr.org/mpfr-current/)
MPC: [MPC Releases](https://www.multiprecision.org/mpc/download.html)
ISL: [ISL Releases](https://libisl.sourceforge.io/)
  1. 传输文件:将下载的文件传输到无网络的 CentOS 7 机器上。
  2. 安装依赖包:在无网络的 CentOS 7 机器上,安装必要的依赖包。传输到 /opt/gcc-deps 目录下。
    注意,安装这些依赖包时有一定的顺序,因为它们之间存在依赖关系。建议按照以下顺序进行安装:
  • GMP (GNU Multiple Precision Arithmetic Library)
  • MPFR (Multiple Precision Floating-Point Reliable Library)
  • MPC (Multiple Precision Complex Library)
  • ISL (Integer Set Library)
cd /opt/gcc-deps
tar -xvf gmp-*.tar.bz2
tar -xvf mpfr-*.tar.bz2
tar -xvf mpc-*.tar.gz
tar -xvf isl-*.tar.bz2

cd gmp-*
./configure --prefix=/usr/local/gmp
make
make install

cd ../mpfr-*
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make
make install

cd ../mpc-*
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make
make install

cd ../isl-*
./configure --prefix=/usr/local/isl --with-gmp-prefix=/usr/local/gmp
make
make install
  1. 安装 GCC:假设你已经将 GCC 源码包传输到 /opt/gcc 目录下。
cd /opt/gcc
tar -xvf gcc-8.5.0.tar.xz
cd gcc-8.5.0

mkdir build
cd build
../configure --prefix=/usr/local/gcc-8.5.0 --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --with-isl=/usr/local/isl
make -j$(nproc)
make install
  1. 更新环境变量:将新安装的 GCC 添加到系统的环境变量中。
echo 'export PATH=/usr/local/gcc-8.5.0/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/gcc-8.5.0/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
  1. 验证安装:检查 GCC 版本以确认安装成功。
gcc --version

补充:
安装gmp时候,报错没有m4工具
新一轮下载安装

wget http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz
tar -xzvf m4-1.4.13.tar.gz
cd m4-1.4.13
./configure --prefix=/usr/local
make
make install

编译gcc时候,报错:configure: error: C++ preprocessor “/lib/cpp” fails sanity check
解决:https://blog.csdn.net/john_f_lau/article/details/17652523
离线安装gcc
https://blog.csdn.net/master336/article/details/113995297,感谢博主的rpm下载链接,找了很久!
因为害怕报错无法定位,用了 make -j1,非常慢。。。。,建议不要使用,如果你在并行编译时遇到问题,可以先使用 make -j1 进行调试,找到问题并解决后再切换回并行编译。

继续报错
/opt/gcc/gcc-8.5.0/build/./gcc/cc1: error while loading shared libraries: libisl.so.15: cannot open shared object file: No such file or directory
参考:
https://blog.csdn.net/youth_xin/article/details/133908956
引入环境变量

echo 'export LD_LIBRARY_PATH=/usr/local/gmp/lib:/usr/local/mpfr/lib:/usr/local/mpc/lib:/usr/local/isl/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc

升级make

你可以从 GNU 的官方 FTP 站点下载 make 的源码包:
GNU Make Releases
例如,下载 make-4.3:

 wget https://ftp.gnu.org/gnu/make/make-4.3.tar.gz
  1. 解压源码包并编译安装:
   cd /opt/make
   tar -xzvf make-4.3.tar.gz
   cd make-4.3
   ./configure --prefix=/usr/local
   make
   make install
  1. 更新环境变量:
    确保新安装的 make 在 PATH 环境变量中:
   echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
   source ~/.bashrc

安装bison

访问 CentOS Vault 或 RPM Find 下载所需的 RPM 包。
下载 bison RPM 包:
bison-3.0.4-2.el7.x86_64.rpm
直接rpm安装即可

最后,注意make -j$(nproc)导致broken pipe
还要删掉重新make 和 make install

就这样,在搜索-下载-上传-执行-报错-搜索这个循环中,一天时间过去了。。。。

你可能感兴趣的:(网络)