我只是用自制程序安装了posgresql,当我继续键入命令时
psql
我得到以下错误:
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
[1] 69711 trace trap psql
有人知道是怎么回事吗?
我只是用自制程序安装了posgresql,当我继续键入命令时
psql
我得到以下错误:
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
Referenced from: /usr/local/bin/psql
Reason: image not found
[1] 69711 trace trap psql
有人知道是怎么回事吗?
当前回答
关键问题是你的postgresql试图找到libreadline。Dylib但是你的readline是7.0版本,所以只有7的lib被链接。
我不认为升级postgresql是一个好主意,这并不容易,可能会导致很多问题,特别是当你已经有数据库数据的时候。
我所做的就是切换readline的版本。当你检查brew info readline时,你会发现不同的版本,我的是6.3.8,所以我切换到那个版本执行:
$ brew switch readline 6.3.8
它将更改为6.3.8并创建链接:
Cleaning /usr/local/Cellar/readline/6.3.8
Cleaning /usr/local/Cellar/readline/7.0.1
Opt link created for /usr/local/Cellar/readline/6.3.8
在这种情况下,所有链接的lib变成了6版本,并且命令行工作:
$ ls /usr/local/opt/readline/lib/
libhistory.6.2.dylib libhistory.dylib libreadline.a
libhistory.6.3.dylib libreadline.6.2.dylib libreadline.dylib
libhistory.6.dylib libreadline.6.3.dylib
libhistory.a libreadline.6.dylib
但是,如果你有不同的应用程序使用不同版本的readline,我认为你应该考虑升级。
更新:06/02/2019
如果旧版本没有安装怎么办?
Homebrew不提供安装旧版本公式的方法。从v2.0.0开始,它将每30天运行一次brew清理作为默认行为。因此,您可能会不小心更新brew并删除旧版本。
以下是安装旧版本的步骤:
进入homebrew-core目录:
$ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
检查旧公式的散列:
$ git log master -- Formula/readline.rb
找到相应版本的哈希值
commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Wed Aug 15 21:51:16 2018 +0000
readline: update 7.0.5 bottle.
核对旧公式:
$ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
重新安装公式:
$ brew reinstall readline
重置回购
按照这些步骤,您可以重新安装旧版本的公式。
其他回答
我得到了完全相同的错误,但上面的答案对我不起作用。我不得不重新安装postgresql。
重新安装postgresql
如果你没有安装readline,首先安装它:
Brew安装readline
对我来说,我得到了这个错误,即使我安装了readline。重新安装readline成功了:
brew reinstall readline
由于一些未知的原因,当这个错误出现在下一个版本的Readline时,我的RVM似乎无法找到正确的,无论我如何符号链接它,抛出:
库未加载:/usr/local/opt/readline/lib/libreadline.7。dylib (LoadError)
我最终将gem rb-readline添加到我的Gemfile中,并进行了另一个bundle安装,它开始工作了。
我…只是不知道。
在我看来,问题是关于更新readline包。 Postgres尝试使用/usr/local/opt/readline/lib/libreadline.7。在我的例子中是Dylib。所以我只是创建了一个符号链接到现有版本的库/usr/local/opt/readline/lib/libreadline.8.dylib。
对我有用:
ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
我尝试了所有这些终端命令,没有任何工作,所以决定手动修复它。
打开查找器,点击command+shift+g
Go to this folder /usr/local/opt/readline/lib/
您应该会看到这些文件的多个版本
libreadline.6.dylib
libreadline.7.0.dylib
将其中任意一个重命名为未加载的库
this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib