29

I just installed Passenger 3.0.11 and nginx and got this error:

Starting nginx: /opt/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
user908798
  • 688
  • 4
  • 12
  • 16

7 Answers7

70

I got the same error, and I fixed the problem by running sudo ldconfig.

Ry-
  • 218,210
  • 55
  • 464
  • 476
Simon Ji
  • 739
  • 4
  • 4
  • 3
    I had installed PCRE manually before passenger installation (trying to solve another error with that version of passenger) and got this error when tried to start nginx. "sudo ldconfig" helped me too. Thanks a lot! – Voldy Jan 09 '12 at 17:57
  • This should be the answer for at least Ubuntu 11 – Todd Baur Jan 16 '12 at 04:10
  • Thansk, helped me too for the same error, I am using ubuntu 12.04 – Nishant Nov 26 '14 at 18:08
  • I was trying to generate a SWIG interface for python and got the same error. this solution worked. – CuriousCase May 12 '15 at 17:14
10

Execute below command and restart server again.

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Shiv Kumar Sah
  • 1,129
  • 1
  • 13
  • 17
7

The message means what it says. The nginx executable was compiled to expect the PCRE (Perl-compatible Regular Expression) shared library to be available somewhere on LD_LIBRARY_PATH or specified in /etc/ld.so.conf or whatever equivalent library-locating mechanisms apply to your operating system, and it cannot find the library.

You will need to install PCRE - or configure your environment so that nginx will look for the PCRE library where it is installed.

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
  • I already install PCRE. Could you pleas tell me to configure environment to fix this. – user908798 Dec 14 '11 at 08:21
  • Which platform are you on? Where did you install PCRE? – Jonathan Leffler Dec 14 '11 at 15:04
  • any further on this? I'm still having the same problem – redroot Dec 22 '11 at 11:10
  • 2
    @redroot: In the short-term (to get it working) you can add the directory where PCRE is installed to the `LD_LIBRARY_PATH` environment variable and try running again. If that works, then you need to investigate `/etc/ld.so.conf`. If it doesn't work, then you need to check whether Ruby is 32-bit and PCRE is 64-bit, or whether Ruby is 64-bit and PCRE is 32-bit. The mixture won't work. If you have a mixture, reinstall the correct version (bittiness) of one of the products, but PCRE alone is simpler than Ruby plus its extensions. Use `file` and `ldd` to analyze binaries and shared libraries. – Jonathan Leffler Dec 22 '11 at 16:15
  • As a guy who is working through nginx builds, I'm finding the configure system a bit unflexible. For example, configuring with OpenSSL assumes you want linking to a shared object. Its appears impossible to force static linking to `libssl` and `libcrypto` when both the static archive and shared object are present. Careful placement of `-Bstatic` and `-Bshared` does not help. – jww Dec 17 '13 at 20:41
2

It's an old post, but hopefully might be useful for someone. I was trying to install/start up an older version of NGINX on Amazon-Linux 2 and encountered this error. NGINX is expecting libpcre.so.0, but the library wasn't available on Amazon-Linux 2.

Solution

  1. Searched for a later version of libpcre.so using find / -name libpcre.so*
  2. I found libpcre.so.1 symlinked to libpcre.so.1.2.0 in /usr/lib64/
  3. I created a new symlink to libpcre.so.1.2.0 and named it libpcre.so.0 using ln -s libpcre.so.1.2.0 libpcre.so.0
  4. Restarted NGINX and it worked
hoz
  • 502
  • 2
  • 9
  • 25
0

There are few recommendations, with this I have solved the issue which I had.

  • As mentioned above add the lib path in the /etc/ld.so.conf and check the same is updated or not by using ldconfig -v
  • Add the LD_LIBRARY_PATH in the .bash_profile and refresh the same with . . bash profile.
  • If the lib file is not get updated then use the updatedb to refresh the library list.
Midhunlal
  • 333
  • 2
  • 11
0

I got the same error after I installed ClamAV, Antivirus for my Linux server.

[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

Later I found below libraries got deleted from /lib64

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

I copied those from other server and uninstalled 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
mayur murkya
  • 131
  • 5
-1

just reinstall h5py conda, solved for me

Pradi KL
  • 696
  • 7
  • 13