【问题标题】:Error while loading shared libraries: 'libpcre.so.0: cannot open shared object file: No such file or directory'加载共享库时出错:'libpcre.so.0:无法打开共享对象文件:没有这样的文件或目录'
【发布时间】:2012-01-20 00:45:39
【问题描述】:

我刚刚安装了Passenger 3.0.11 和nginx 并得到了这个错误:

启动 nginx:/opt/nginx/sbin/nginx:加载共享库时出错:libpcre.so.0:无法打开共享对象文件:没有这样的文件或目录

【问题讨论】:

    标签: nginx ruby-on-rails-3.1 passenger


    【解决方案1】:

    我遇到了同样的错误,我通过运行 sudo ldconfig 解决了这个问题。

    【讨论】:

    • 我在安装乘客之前手动安装了 PCRE(试图解决该版本乘客的另一个错误)并在尝试启动 nginx 时出现此错误。 “sudo ldconfig”也帮助了我。非常感谢!
    • 这应该是至少 Ubuntu 11 的答案
    • 谢谢,同样的错误也帮了我,我使用的是 ubuntu 12.04
    • 我试图为 python 生成一个 SWIG 接口并且得到了同样的错误。这个解决方案奏效了。
    【解决方案2】:

    执行以下命令并重新启动服务器。

    export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
    

    【讨论】:

      【解决方案3】:

      消息的意思是它所说的。 nginx 可执行文件被编译为期望 PCRE(Perl 兼容的正则表达式)共享库在 LD_LIBRARY_PATH 上的某处可用或在 /etc/ld.so.conf 或任何适用于您的操作系统的等效库定位机制中指定,但它找不到图书馆。

      您将需要安装 PCRE - 或配置您的环境,以便 nginx 将查找安装它的 PCRE 库。

      【讨论】:

      • 我已经安装了 PCRE。你能告诉我配置环境来解决这个问题吗?
      • 你在哪个平台上?你在哪里安装 PCRE?
      • 对此还有什么要说的吗?我仍然有同样的问题
      • @redroot:在短期内(为了让它工作),您可以将安装 PCRE 的目录添加到 LD_LIBRARY_PATH 环境变量并尝试再次运行。如果可行,那么您需要调查/etc/ld.so.conf。如果还是不行,那么你需要检查Ruby是32位的,PCRE是64位的,或者Ruby是64位的,PCRE是32位的。混合物不起作用。如果您有混合使用,请重新安装其中一种产品的正确版本(bittiness),但单独的 PCRE 比 Ruby 及其扩展更简单。使用fileldd 分析二进制文件和共享库。
      • 作为一个通过 nginx 构建工作的人,我发现配置系统有点不灵活。例如,使用 OpenSSL 进行配置假定您想要链接到共享对象。当静态存档和共享对象都存在时,似乎不可能强制静态链接到libssllibcrypto。小心放置 -Bstatic-Bshared 没有帮助。
      【解决方案4】:

      建议很少,我已经解决了我遇到的问题。

      • 如上所述,在 /etc/ld.so.conf 中添加 lib 路径,并使用 ldconfig -v 检查是否已更新
      • .bash_profile 中添加LD_LIBRARY_PATH 并使用. . bash profile 刷新。
      • 如果 lib 文件未更新,则使用 updatedb 刷新库列表。

      【讨论】:

        【解决方案5】:

        只需重新安装 h5py conda,为我解决了

        【讨论】:

          【解决方案6】:

          我在为我的 Linux 服务器安装 ClamAV,防病毒软件后遇到了同样的错误。

          [root@10 ~]# yum install clamav clamav-db clamd -y
          Loaded plugins: aliases, changelog, kabi, presto, product-id, refresh-packagekit, security, subscription-manager, tmprepo, verify,
                        : versionlock
          This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
          Loading support for Red Hat kernel ABI
          Setting up Install Process
          Resolving Dependencies
          --> Running transaction check
          ---> Package clamav.x86_64 0:0.100.3-1.el6 will be installed
          --> Processing Dependency: libjson-c.so.2()(64bit) for package: clamav-0.100.3-1.el6.x86_64
          ---> Package clamav-db.x86_64 0:0.100.3-1.el6 will be installed
          ---> Package clamd.x86_64 0:0.100.3-1.el6 will be installed
          --> Running transaction check
          ---> Package json-c.x86_64 0:0.11-13.el6 will be installed
          --> Finished Dependency Resolution
          
          Dependencies Resolved
          
          ====================================================================================================================================
           Package                         Arch                         Version                              Repository                  Size
          ====================================================================================================================================
          Installing:
           clamav                          x86_64                       0.100.3-1.el6                        base                       1.3 M
           clamav-db                       x86_64                       0.100.3-1.el6                        base                       150 M
           clamd                           x86_64                       0.100.3-1.el6                        base                       243 k
          Installing for dependencies:
           json-c                          x86_64                       0.11-13.el6                          base                        27 k
          
          Transaction Summary
          ====================================================================================================================================
          Install       4 Package(s)
          
          Total download size: 152 M
          Installed size: 154 M
          Downloading Packages:
          Setting up and reading Presto delta metadata
          Processing delta metadata
          Package(s) data still to download: 152 M
          (1/4): clamav-0.100.3-1.el6.x86_64.rpm                                                                       | 1.3 MB     00:00
          (2/4): clamav-db-0.100.3-1.el6.x86_64.rpm                                                                    | 150 MB     00:01
          (3/4): clamd-0.100.3-1.el6.x86_64.rpm                                                                        | 243 kB     00:00
          (4/4): json-c-0.11-13.el6.x86_64.rpm                                                                         |  27 kB     00:00
          ------------------------------------------------------------------------------------------------------------------------------------
          Total                                                                                               100 MB/s | 152 MB     00:01
          Running rpm_check_debug
          Running Transaction Test
          Transaction Test Succeeded
          Running Transaction
            Installing : json-c-0.11-13.el6.x86_64                                                                                        1/4
          /sbin/ldconfig: libraries libpcre.so.0 and libpcre.so.1 in directory /lib64 have same soname but different type.
            Installing : clamav-db-0.100.3-1.el6.x86_64 [#############################                                                  ] 2/4
            Installing : clamav-db-0.100.3-1.el6.x86_64                                                                                   2/4
            Installing : clamav-0.100.3-1.el6.x86_64                                                                                      3/4
            Installing : clamd-0.100.3-1.el6.x86_64                                                                                       4/4
            Verifying  : clamd-0.100.3-1.el6.x86_64                                                                                       1/4
            Verifying  : clamav-0.100.3-1.el6.x86_64                                                                                      2/4
            Verifying  : json-c-0.11-13.el6.x86_64                                                                                        3/4
            Verifying  : clamav-db-0.100.3-1.el6.x86_64                                                                                   4/4
          
          Installed:
            clamav.x86_64 0:0.100.3-1.el6              clamav-db.x86_64 0:0.100.3-1.el6              clamd.x86_64 0:0.100.3-1.el6
          
          Dependency Installed:
            json-c.x86_64 0:0.11-13.el6
          
          Complete!
          [root@10 ~]#
          [root@10 ~]# grep: error while loading shared libraries: libpcre.so.0: wrong ELF class: ELFCLASS32
          grep: error while loading shared libraries: libpcre.so.0: wrong ELF class: ELFCLASS32
          
          [root@10 ~]# grep: error while loading shared libraries: libpcre.so.0: wrong ELF class: ELFCLASS32
          

          后来我发现下面的库被 /lib64 删除了

          libjson-c.so.2.0.1
          libjson.so.0.1.0
          libpcre.so.0 -> libpcre.so.0.0.1
          

          我从其他服务器复制了这些并卸载了 ClamAV。

          Running Transaction
            Erasing    : clamd-0.100.3-1.el6.x86_64                                                                                       1/3
            Erasing    : clamav-0.100.3-1.el6.x86_64                                                                                      2/3
          warning: /etc/freshclam.conf saved as /etc/freshclam.conf.rpmsave
            Erasing    : clamav-db-0.100.3-1.el6.x86_64                                                                                   3/3
            Verifying  : clamd-0.100.3-1.el6.x86_64                                                                                       1/3
            Verifying  : clamav-0.100.3-1.el6.x86_64                                                                                      2/3
            Verifying  : clamav-db-0.100.3-1.el6.x86_64                                                                                   3/3
          
          Removed:
            clamav.x86_64 0:0.100.3-1.el6              clamav-db.x86_64 0:0.100.3-1.el6              clamd.x86_64 0:0.100.3-1.el6
          
          Complete!
          
          sending incremental file list
          libjson-c.so.2.0.1
          libjson.so.0.1.0
          libpcre.so.0 -> libpcre.so.0.0.1
          

          【讨论】:

            【解决方案7】:

            这是一篇旧帖子,但希望对某人有用。 我试图在 Amazon-Linux 2 上安装/启动旧版本的 NGINX 并遇到此错误。 NGINX 期待 libpcre.so.0,但该库在 Amazon-Linux 2 上不可用。

            解决方案

            1. 使用find / -name libpcre.so* 搜索了更高版本的libpcre.so
            2. 我发现libpcre.so.1 符号链接到libpcre.so.1.2.0 在/usr/lib64/
            3. 我创建了一个指向libpcre.so.1.2.0 的新符号链接,并使用ln -s libpcre.so.1.2.0 libpcre.so.0 将其命名为libpcre.so.0
            4. 重新启动 NGINX 并正常工作

            【讨论】:

              猜你喜欢
              • 2014-04-08
              • 2015-06-07
              • 2013-07-04
              • 2019-02-16
              • 2015-10-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多