Mac 上的 readline 库出现问题

Mac 上的 readline 库出现问题

我正在更新 Mac 上的一些程序,突然在运行 gnuplot 时遇到一些问题。错误如下:

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

这不是我自己的错误(我从互联网上复制粘贴了这个非常接近的错误)因为从那时起我卸载了 gnuplot 并且无法再安装它。

当我跑步时brew install gnuplot,我得到:

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.

当我从 sourceForge 下载 gnuplot 的安装文件时,我可以看到:

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

您知道如何使用 brew 做类似第二种选择的事情吗?

多谢

编辑 :

我已经尝试过:brew switch readline 8.0.0但是brew install gnuplot --with-readline=/usr/local/Cellar/readline/8.0.0/lib它不起作用......

答案1

我在 macOS 电脑上运行 gnuplot 时也遇到了同样的问题。为了解决这个问题,我尝试了在互联网上找到的几个建议,但都对我不起作用。例如更新/升级 brew、删除、安装和重新安装 readline、升级 bash 以及许多其他操作。

所以,我最近解决了这个问题。在下文中,我尝试描述我所完成的过程。

  1. cd到必须的位置libreadline.7.dylib,在这种情况下/usr/local/opt/readline/lib/

  2. 当我列出时,我只发现libreadline.8.0.dylib软链接libreadline.8.dylib

  3. 我创建了一个指向该libreadline.8.0.dylib库的新软链接,以便创建 gnuplot 所寻找的软链接,在本例中是 7 个编号的库libreadline.7.dylib

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

就这样。也许你需要重新启动终端或命令行应用程序。

答案2

希望能有所帮助:我遇到了类似的错误消息,发现 gnuplot 依赖于 gawk,而自动安装的 gawk 版本需要 readline 的旧版本。我的 gnuplot 二进制文件引用了正确的版本。您可以使用以下方法进行验证otool

Gawk 引用 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)

如果您遇到同样的问题,我相信您应该能够升级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

答案3

安装通过 brew 将我的 readline 升级到 v.8,这在我尝试使用在 phpbrew 上运行的 composer 时导致了问题。

  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

通过 brew 降级到 readline 7 解决了问题但禁用了 tig。

brew switch readline 7.0.3_1

作为用户维克多-杜阿尔特建议,当使用 readline 8 时,在 readline 目录中为 libreadline.8.0.dylib 放置一个符号链接似乎是个解决办法(请注意,我必须切换回 readline 8)

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

答案4

对于那些在尝试使用时偶然发现这个答案的人psql,您需要运行:

brew reinstall postgresql

相关内容