Libssl and libcrypto causing dyld: Library not loaded: /usr/lib/libpq.5.dylib

Question:

I recently uninstalled postgresql and installed pyscopg2 via pip.

I know there’s some trickery involved with libcrypto and libssl

Currently i have them symlinked to:

$ ls -lah libssl.*
-rwxr-xr-x  1 root  wheel   402K Aug 28 11:06 libssl.0.9.7.dylib
-rwxr-xr-x  1 root  wheel   589K Aug 28 11:06 libssl.0.9.8.dylib
lrwxr-xr-x  1 root  wheel    55B Nov 29 23:38 libssl.1.0.0.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libssl.1.0.0.dylib
lrwxr-xr-x  1 root  wheel    55B Nov 30 02:25 libssl.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libssl.1.0.0.dylib

/usr/lib
$ ls -lah libcrypto.*
-rwxr-xr-x  1 root  wheel   2.1M Aug 28 11:06 libcrypto.0.9.7.dylib
-rwxr-xr-x  1 root  wheel   2.6M Aug 28 11:06 libcrypto.0.9.8.dylib
-r-xr-xr-x  1 root  wheel   1.6M Oct 31 22:12 libcrypto.1.0.0.dylib
lrwxr-xr-x  1 root  wheel    58B Nov 30 02:27 libcrypto.dylib -> /usr/local/Cellar/openssl/1.0.1c/lib/libcrypto.1.0.0.dylib

whereby I installed openssl via ports

Now when I run arc diff, I am getting the infamous

$ arc diff
dyld: Library not loaded: /usr/lib/libpq.5.dylib
  Referenced from: /usr/bin/php
  Reason: image not found
Trace/BPT trap: 5

There are a few answers here in SO which talks about symlinking these libs to the postgresql install directory. Obviously, this won’t work for me.

What should I do?

Asked By: xjq233p_1

||

Answers:

Turns out /usr/lib/libpq.5.dylib was absent but /usr/lib/libpq.5.4.dylib was not.

sudo ln -s /usr/lib/libpq.5.4.dylib /usr/lib/libpq.5.dylib

fixed the issue.

Answered By: xjq233p_1

Not unlike @Pablo Marambio, I fixed this issue by adding the following line to ~/.profile:

export DYLD_LIBRARY_PATH=/Library/PostgreSQL/9.3/lib:$DYLD_LIBRARY_PATH

For Postgres.app v9.3.5.0 (presumably others too) I added the following line instead:

export DYLD_LIBRARY_PATH=/Applications/Postgres.app/Contents/Versions/9.3/lib:$DYLD_LIBRARY_PATH

Then, of course, run source ~/.profile

Answered By: metasequoia

To resolve this, I had to uninstall postgresql and then install again.

$ brew uninstall postgresql

$ brew update

$ brew install postgres
Answered By: SuperNova

just use the below commands in your terminal
(use the proper postgresql version)
$ brew unlink postgresql@14

$ brew link libpq --force

https://github.com/opentable/otj-pg-embedded/issues/152#issuecomment-954348544

Answered By: Akshay-stori

I got the error

Library not loaded: ‘/usr/local/opt/postgresql/lib/libpq.5.dylib’

Reason: tried: ‘/usr/local/opt/postgresql/lib/libpq.5.dylib’ (no such file), ‘/usr/local/lib/libpq.5.dylib’ (no such file), ‘/usr/lib/libpq.5.dylib’ (no such file)

when running a Django project and to fix it I had to uninstall the pip packages:

pip uninstall psycopg2 
pip uninstall psycopg2-binary 

and then install them again:

pip install psycopg2 
pip install psycopg2-binary 

And this made the project run without the error.

Answered By: DevB2F

I had to do this for postgresql 14 + brew

sudo ln -s /opt/homebrew/opt/postgresql@14/lib/postgresql@14/libpq.5.dylib /opt/homebrew/opt/postgresql/lib/libpq.5.dylib
Answered By: Frexuz

I’m using poetry so to solve it on my fastapi project, I had to do this to fix it:

poetry remove psycopg2
poetry add psycopg2
Answered By: zekromWex