Mac psql/readline - 未加载库

skw*_*eth 18 python postgresql command-line

我正在使用Mac,Sierra 10.12.3,我正在尝试通过psql命令访问PostgreSQL数据库,但它抛出了错误

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

一两天前,我和某人合作,我需要安装pip,所以我跑了brew install pip,一切都很好.这是我psql从那时起第一次尝试运行,我不确定这与我的问题有什么关系,但似乎可能因为我没有做任何其他更改.

现在我做了一点侦探工作,发现如果我去了/usr/local/opt/那里确实有一个readline指向的别名目录/usr/local/Cellar/readline/7.0.1(版本7.0.1似乎也在某些时候安装了 - 也许是pip的一部分?也许我错误地做了...)所以它有一定意义,应该抛出原始错误.我将别名更改为指向/usr/local/Cellar/readline/6.3.8并且错误稍有改变:

dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.dylib
Referenced from: /usr/local/bin/psql
Reason: no suitable image found.  Did find:
/usr/local/opt/readline/lib/libreadline.6.dylib: stat() failed with errno=20
Abort trap: 6
Run Code Online (Sandbox Code Playgroud)

所以我好像在某个地方,但仍然有问题.如果有人能够对解决方案有所了解,我将永远感激不尽.

skw*_*eth 28

我只需运行即可解决这个问题 brew switch readline 6.3.8

  • 最近更新的hombrew说:`错误:readline在地窖中没有版本“ 6.3.8”。可用版本:7.0.1、7.0.3、7.0.3_1。_叹_ (3认同)
  • 我不知道这是否是个好主意,但是我能够使psql使用符号链接:`ln -s /usr/local/opt/readline/lib/libreadline.7.dylib / usr / local / opt / readline / lib / libreadline.6.dylib` (3认同)
  • 这个固定帮助我,谢谢!但是我们需要知道,以前出于某些原因安装了先前注册的brew readline版本(在我的情况下为7.0.5)。切换之后,某些需要先前安装版本(在我的情况下为7.0.5)的程序/库可能会开始抱怨并停止工作。如果是这种情况,我建议进行类似@dbenton建议的修复-同时注册两个readline版本。 (2认同)

Mar*_*Qiu 11

跑步后brew upgrade,我也遇到了这个问题。

首先,您需要readline在Mac上确认的版本。

在您的情况下,您的旧readline版本是6.x。升级后,您的readline已更新为7.0.1。因此,您需要链接新的阅读热线。

这些代码可能会有所帮助。

$ cd /usr/local/opt/readline/lib/  # cd to readline library
$ sudo ln -s libreadline.7.dylib libreadline.6.dylib  # change the link
Run Code Online (Sandbox Code Playgroud)

我认为更好的方法是更改​​系统readline链接,但我不知道如何更改。

  • @dland感谢您的hacky修复。为我工作。不过,我必须更改链接参数:ln -s libreadline.8.0.dylib libreadline.7.dylib`。 (5认同)
  • 改天,改版。为了使其正常工作,我不得不使用ln -s libreadline.7.dylib libreadline.8.0.dylib`。最令人惊讶的是它有效。 (3认同)

flu*_*rdy 9

Readline已升级,但您仍在使用来自postgres的旧psql。将postgres升级到使用当前readline的当前版本为我解决了这个问题:

brew upgrade postgres

  • 在现实情况下,postgres升级可能会导致比试图解决的问题更多的问题。仅在发出声音警告时才建议这样做 (2认同)