zoukankan      html  css  js  c++  java
  • uwsgs loading shared libraries: libicui18n.so.58 异常处理

    背景

    • 想使用 ningx + uwsgi + flask 搭建 python 应用环境
    • Python使用的是anaconda3(pyhton 3.6)
    • 依赖包安装完毕,但是执行 uwsgi 的时候出现如下异常
    (py3) [root@localhost ~]# uwsgi
    uwsgi: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory

    于是乎查看 uwsgi所在地址,然后使用 LDD 查看缺少的包

    (py3) [root@localhost ~]# which uwsgi
    /root/anaconda3/envs/py3/bin/uwsgi
    (py3) [root@localhost ~]# ldd /root/anaconda3/envs/py3/bin/uwsgi
        linux-vdso.so.1 =>  (0x00007ffc14fc7000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff6b0347000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff6b0045000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007ff6afe40000)
        libpcre.so.1 => /lib64/libpcre.so.1 (0x00007ff6afbde000)
        libxml2.so.2 => /lib64/libxml2.so.2 (0x00007ff6af874000)
        libz.so.1 => /lib64/libz.so.1 (0x00007ff6af65d000)
        liblzma.so.5 => /lib64/liblzma.so.5 (0x00007ff6af437000)
        libicui18n.so.58 => not found
        libicuuc.so.58 => not found
        libicudata.so.58 => not found
        libutil.so.1 => /lib64/libutil.so.1 (0x00007ff6af233000)
        librt.so.1 => /lib64/librt.so.1 (0x00007ff6af02a000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007ff6aedf3000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff6aea30000)
        /lib64/ld-linux-x86-64.so.2 (0x00005634c289c000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007ff6ae82c000)

    通过 LDD 发现 uwsgi 找不到三个包(具体就是 not found 的三个)

    于是就把anaconda3/lib 下相应的包软链到/lib64下去(64bit 机器,如果时32bit 机器则软链到/lib下

    (py3) [root@localhost ~]# ln -s /root/anaconda3/lib/libicui18n.so.58 /lib64/libicui18n.so.58
    (py3) [root@localhost ~]# ln -s /root/anaconda3/lib/libicuuc.so.58 /lib64/libicuuc.so.58
    (py3) [root@localhost ~]# ln -s /root/anaconda3/lib/libicudata.so.58 /lib64/libicudata.so.58

    这样缺失的三个包补充了,那么在使用ldd 测试结果如下

    (py3) [root@localhost ~]# ldd /root/anaconda3/envs/py3/bin/uwsgi
    /root/anaconda3/envs/py3/bin/uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libicui18n.so.58)
    /root/anaconda3/envs/py3/bin/uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libicui18n.so.58)
    /root/anaconda3/envs/py3/bin/uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /lib64/libicuuc.so.58)
    /root/anaconda3/envs/py3/bin/uwsgi: /lib64/./libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /lib64/libicuuc.so.58)

    这说明还是缺失CXXABI_ 之类的东西,使用 strings 命令查看结果如下

    [root@localhost lib64]# strings /usr/lib64/libstdc++.so.6|grep CXXABI
    CXXABI_1.3
    CXXABI_1.3.1
    CXXABI_1.3.2
    CXXABI_1.3.3
    CXXABI_1.3.4
    CXXABI_1.3.5
    CXXABI_1.3.6
    CXXABI_1.3.7
    CXXABI_TM_1

    确实没有CXXABI_1.3.8  CXXABI_1.3.9 之类的东西,那么就把 anaconda3 下的libstdc++.so.6移到/lib64下面, libstdc++.so.6就是libstdc++.so.6.0.24的软链(可以去/lib64下查看ll libstc*),既然确实那就把 anconda3下的高版本高 copy 过去就是

    把libstdc++.so.6.0.24拷贝到/lib64目录下。
      cp libstdc++.so.6.0.24 /lib64/
    删除原来的libstdc++.so.6符号连接。
      rm -rf libstdc++.so.6
    新建新符号连接。
      ln -s libstdc++.so.6.0.24 libstdc++.so.6
    再次执行查看结果符合就哦了。
    (py3) [root@localhost lib64]# uwsgi
    *** Starting uWSGI 2.0.17 (64bit) on [Fri May  4 16:07:20 2018] ***
    compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-16) on 02 May 2018 11:23:18
    os: Linux-3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017
    nodename: localhost
    machine: x86_64
    clock source: unix
    pcre jit disabled
    detected number of CPU cores: 6
    current working directory: /usr/lib64
    detected binary path: /root/anaconda3/envs/py3/bin/uwsgi
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
    *** WARNING: you are running uWSGI without its master process manager ***
    your processes number limit is 4096
    your memory page size is 4096 bytes
    detected max file descriptor number: 65536
    lock engine: pthread robust mutexes
    thunder lock: disabled (you can enable it with --thunder-lock)
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
    uWSGI running as root, you can use --uid/--gid/--chroot options
    *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
    The -s/--socket option is missing and stdin is not a socket.
  • 相关阅读:
    mvc UrlHelper
    Bootstrap框架
    Swiper插件
    JQuery 滚动条长度
    JQuery 全屏滚动
    JQuery TODOList
    JQuery 节点操作
    JQuery 事件委托 事件代理
    JQuery 关闭事件冒泡
    JQuery resize和scroll方法
  • 原文地址:https://www.cnblogs.com/shanguanghui/p/8994919.html
Copyright © 2011-2022 走看看