7

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?

disappearedng
  • 6,800
  • 9
  • 53
  • 100
  • What's `arc`? Also, I see `/usr/bin/php`; that doesn't look very Python to me. And if you *un*installed postgresql, I'm not so sure that `pip` will install postgresql for you if you install `psycopg2` (though, if it doesn't, it should probably fail). Do you have a libpq (any) on your system? –  Nov 30 '12 at 12:49
  • Related?: [Library not loaded: /usr/local/lib/libpq.5.4.dylib while running rake db:create](http://stackoverflow.com/q/9023482/456814). –  May 20 '14 at 23:06

3 Answers3

12

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.

Alex Reynolds
  • 91,635
  • 50
  • 223
  • 320
disappearedng
  • 6,800
  • 9
  • 53
  • 100
3

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

metasequoia
  • 6,096
  • 5
  • 37
  • 54
  • 1
    I like this exporting environment variable better than copying or symlinking libraries on my system. – Sam Texas Dec 25 '14 at 20:48
  • This breaks running "psql DBNAME" in the command line for me. Running Postgres.app v9.5.0.0 and the error returned says "dyld: Symbol not found: __cg_jpeg_resync_to_restart" – Raymond26 Jun 06 '16 at 23:39
2

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

$ brew uninstall postgresql

$ brew update

$ brew install postgres
SuperNova
  • 15,051
  • 5
  • 67
  • 45
  • This solution was almost mine too but in addition, since I'm using a specific version of postgresql, I also needed a `brew link`: `$ brew uninstall postgresql@11 && brew update && brew install postgresql@11 && brew link --force postgresql@11` – PierrOz Feb 10 '21 at 08:25