Trouble with readline library on mac

5

3

I was updating some programs on my mac and I suddenly encountered some troubles running gnuplot. The error was something like :

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
Referenced from: .../something/...
Reason: image not found
Trace/BPT trap: 5

That's not my own error (I copy paste this one, which is very close, from the internet) because since then I uninstall gnuplot and I can't install it anymore.

When I run brew install gnuplot, I get :

Warning: You are using macOS 10.11.
We (and Apple) do not provide support for this old version.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version.

==> Installing dependencies for gnuplot: graphite2, harfbuzz, pango and qt
==> Installing gnuplot dependency: graphite2
==> Downloading https://github.com/silnrsi/graphite/releases/download/1.3.13/gra
Already downloaded: /Users/me/Library/Caches/Homebrew/downloads/e37be24d841649b167ec4be5e60ac444d5ec859aa32d694e93df5ff36c05b2bf--graphite2-1.3.13.tgz
==> cmake -DCMAKE_C_FLAGS_RELEASE=-DNDEBUG -DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG -D
Last 15 lines from /Users/me/Library/Logs/Homebrew/graphite2/01.cmake:
2019-01-29 12:04:38 +0100

cmake
-DCMAKE_C_FLAGS_RELEASE=-DNDEBUG
-DCMAKE_CXX_FLAGS_RELEASE=-DNDEBUG
-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/graphite2/1.3.13
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_FIND_FRAMEWORK=LAST
-DCMAKE_VERBOSE_MAKEFILE=ON
-Wno-dev
-DHAVE_CLOCK_GETTIME:INTERNAL=0

CMake Error: No source or binary directory provided

Do not report this issue to Homebrew/brew or Homebrew/core!

These open issues may also help:
Update graphite2 to reference src dir in cmake https://github.com/Homebrew/homebrew-core/pull/36376

Error: You are using macOS 10.11.
We (and Apple) do not provide support for this old version.
You will encounter build failures with some formulae.
Please create pull requests instead of asking for help on Homebrew's GitHub,
Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version.

In the install file of gnuplot when I downloaded it from sourceForge I can read :

Readline issues:

As I understand the situation, Apple ships OSX with a "fake" libreadline shared
library. The file /usr/lib/libreadline.dylib is really a symlink to a compatibility
layer over the BSD libedit library. But the compatibility isn't complete, and in
particular it is missing some routines used for readline support by gnuplot. The
./configure script should be able to cope with this. But you will still be left
without some of the functionality of the "real" libreadline. For one thing,
libedit doesn't handle UTF-8 input.

You have several options:

1) Delete the fake libreadline libraries from OSX and install the real gnu
libreadline as a system library.

2) Install the real gnu libreadline into your personal account and tell gnuplot
to use it: ./configure --with-readline=/my/private/readline/installdir
This may require some playing around with additional -L and -I definitions in
CFLAGS, and is probably harder than replacing the system copy of the library.

3) Use gnuplot's built-in readline routines.  These now support UTF-8 input and
tab-completion of file names. ./configure --with-readline=builtin

Do you know How I could do something like the second option with brew ?

Thanks a lot

Edit :

I already try : brew switch readline 8.0.0 and brew install gnuplot --with-readline=/usr/local/Cellar/readline/8.0.0/lib but it doesn't work...

kipgon

Posted 2019-01-29T12:06:18.073

Reputation: 51

Nobody knows ? I'm really bothered by this problem... – kipgon – 2019-02-10T10:24:06.050

Answers

13

I have had exactly the same problem in my macOS computer trying to run gnuplot. In order to solve it, I tried several suggestions I found in the internet, and none of them works for me. For example updating/upgrading brew, removing, installing and reinstalling readline, upgrading bash, and many other things.

So, I recently solved the situation. In the next lines I tried to describe the process I have done.

  1. cd to the location where the libreadline.7.dylib must be, in this case /usr/local/opt/readline/lib/

  2. When I listed, I only found libreadline.8.0.dylib and the soft link libreadline.8.dylib.

  3. I made a new soft link pointing to the libreadline.8.0.dylib library in order to create the soft link that gnuplot looks for, in this case the 7 numbered library libreadline.7.dylib:

    $ sudo ln -s libreadline.8.0.dylib libreadline.7.dylib
    

That's all. Maybe you'll need to reboot the terminal or command line application.

Víctor Duarte

Posted 2019-01-29T12:06:18.073

Reputation: 131

3

In case it's helpful: I was encountering similar error messages and found that gnuplot depends on gawk, and the version of gawk automatically installed required an outdated version of readline. My gnuplot binary referenced the right version. You can verify using otool:

Gawk references libreadline.7.dylib

$ otool -L /usr/local/bin/awk | grep -i read
    /usr/local/opt/readline/lib/libreadline.7.dylib (compatibility version 7.0.0, current version 7.0.0)

If you're hitting the same issue, I believe you should be able to upgrade gawk.

$ brew upgrade gawk
==> Upgrading 1 outdated package:
gawk 4.2.0_1 -> 4.2.1_1
==> Upgrading gawk 
==> Downloading https://homebrew.bintray.com/bottles/gawk-4.2.1_1.mojave.bottle.
######################################################################## 100.0%
==> Pouring gawk-4.2.1_1.mojave.bottle.1.tar.gz
  /usr/local/Cellar/gawk/4.2.1_1: 87 files, 4.7MB
Removing: /usr/local/Cellar/gawk/4.2.0_1... (69 files, 3MB)

$ otool -L /usr/local/bin/awk | grep -i read    
    /usr/local/opt/readline/lib/libreadline.8.dylib (compatibility version 8.0.0, current version 8.0.0)

Here's the version of gnuplot I have installed.

brew info gnuplot
gnuplot: stable 5.2.6 (bottled), HEAD
Command-driven, interactive function plotting
http://www.gnuplot.info/
/usr/local/Cellar/gnuplot/5.2.6_1 (48 files, 2.9MB) *

In case you have any other binaries in /usr/local that depend on the old readline, you can quickly find them using:

for i in /usr/local/bin/* ; do if otool -L $i | grep -i libreadline.7; then echo "\t^ used by $i\n"; fi; done

You might then have luck upgrading those.

Aaron

Posted 2019-01-29T12:06:18.073

Reputation: 31

1

Installing tig via brew, upgraded my readline to v.8, which caused issues when I tried to use composer, running on phpbrew.

  dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib
  Referenced from: /Users/sheanhoxie/.phpbrew/php/php-7.3.11/bin/php
  Reason: image not found

Downgrading to readline 7 via brew solved the problem but disabled tig.

brew switch readline 7.0.3_1

As user victor-duarte suggested, putting a symlink in the readline dir for libreadline.8.0.dylib seemed to be the work around, when using readline 8 (note that I had to switch back to readline 8)

    brew switch readline 8.0.1
    cd /usr/local/opt/readline/lib
    ln -s libreadline.8.dylib libreadline.7.dylib

Shean Hoxie

Posted 2019-01-29T12:06:18.073

Reputation: 11

0

For those of you who stumble on this answer while trying to use psql, you need to run:

brew reinstall postgresql

user35581

Posted 2019-01-29T12:06:18.073

Reputation: 121