ImportError: /lib64/libc.so.6: version `GLIBC_2.18‘ not found

先看一个错误:

File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/service/webapps/urls.py", line 13, in <module>
    from webapps.utils.auth import BlacklistUsersAuthFrom
  File "/service/webapps/utils/auth.py", line 11, in <module>
    from mozilla_django_oidc.auth import OIDCAuthenticationBackend
  File "/service/webapps/py38env/lib/python3.8/site-packages/mozilla_django_oidc/auth.py", line 16, in <module>
    from josepy.b64 import b64decode
  File "/service/webapps/py38env/lib/python3.8/site-packages/josepy/__init__.py", line 40, in <module>
    from josepy.json_util import (
  File "/service/webapps/py38env/lib/python3.8/site-packages/josepy/json_util.py", line 14, in <module>
    from OpenSSL import crypto
  File "/service/webapps/py38env/lib/python3.8/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/service/webapps/py38env/lib/python3.8/site-packages/OpenSSL/crypto.py", line 8, in <module>
    from cryptography import utils, x509
  File "/service/webapps/py38env/lib/python3.8/site-packages/cryptography/x509/__init__.py", line 6, in <module>
    from cryptography.x509 import certificate_transparency
  File "/service/webapps/py38env/lib/python3.8/site-packages/cryptography/x509/certificate_transparency.py", line 10, in <module>
    from cryptography.hazmat.bindings._rust import x509 as rust_x509
ImportError: /lib64/libc.so.6: version `GLIBC_2.18' not found (required by /service/webapps/py38env/lib/python3.8/site-packages/cryptography/hazmat/bindings/_rust.abi3.so)

原因就是,libc.so.6里面缺乏 GLIBC_2.18造成的。

[root@59610a7283d8 lib64]# strings libc.so.6 | grep "GLIBC_"
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

再看一眼,当下是个啥版本。

[root@59610a7283d8 lib64]# ll | grep "libc.so.6"
lrwxrwxrwx  1 root root      12 Mar 25  2019 libc.so.6 -> libc-2.17.so

所以,就等于说,要安装更高版本的libc库,从当前错误看至少得是 libc-2.18版本。

现在总结下安装命令:

这里注意,我在第一次搞定后,总结了如下命令,但是后面删除了容器,所以搞的这些东西都没了,在第二次再搞的时候,按照如下命令,却无法成功更新libc.so.6 ,然后总结了下原因,就是以下命令,不是在哪执行都可以的,最好先在根目录下创建一个自己的文件夹,然后再执行下面的命令就可以了。

cd  /

mkdir my_package

cd my_package     # 完成这几步后,再执行下面的命令就可以了

# 下载包

wget http://mirror.bjtu.edu.cn/gnu/libc/glibc-2.18.tar.xz

or​​​​​​​​​​​​​​

wget http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.xz

# 解压

tar -xvf glibc-2.18.tar.xz

# 进入包

cd glibc-2.18

# 制作构建目录

mkdir build

cd build

# 配置,这一步很重要,这关系到后面 libc.so.6 的软连接能不能自动更新,网上好多关于这步的命令都是错的

../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

# 编译

make

make install

# 完成,接下来,看看结果

cd /lib64/

ll | grep "libc."

[root@51225b1a8232 webapps]# ll /lib64/ | grep "libc."
-rwxr-xr-x  1 root root  2156592 Oct 13  2021 libc-2.17.so
-rwxr-xr-x  1 root root 10228968 Aug 10 06:33 libc-2.18.so
-rw-r--r--  1 root root 22237936 Aug 10 06:33 libc.a
-rw-r--r--  1 root root      253 Aug 10 06:33 libc.so
lrwxrwxrwx  1 root root       12 Aug 10 06:33 libc.so.6 -> libc-2.18.so

这下就变过来了。

千万注意,没事别对原先的 libc.so.6 这个软连接直接采用 mv xx  xx.bac 的方法处理。这样会把系统给搞坏的。网上的好多操作都是直接这么干,这就是坑。

再强调一遍,变更 libc.so.6 的软连接的关键是在安装 libc-2.18 时的 ..configure 这个命令,务必按照上述命令执行。

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值