hbe*_*gel 218 postgresql libreadline psql
我刚刚用homebrew安装了posgresql,当我继续输入命令时
psql
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
有没有人知道什么是错的?
小智 340
我得到了完全相同的错误,但上述答案对我不起作用.我不得不重新安装postgresql.
brew reinstall postgresql
Ste*_*hen 122
关键问题是你的postgresql试图找到libreadline.6.2.dylib你readline的版本7.0,所以只有7的lib链接.
我不认为升级postgresql是一个好主意,它并不容易,可能会导致很多问题,特别是当你已经拥有数据库数据时.
我做的是切换版本readline.检查时brew info readline,你会发现我的版本不同6.3.8,所以我通过执行以下命令切换到该版本:
$ brew switch readline 6.3.8
Run Code Online (Sandbox Code Playgroud)
它将更改为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
Run Code Online (Sandbox Code Playgroud)
在这种情况下,所有链接的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
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用不同版本的readline有不同的应用程序,我认为您应该考虑升级.
更新:06/02/2019
如果没有安装旧版本怎么办?
Homebrew没有提供安装旧版本公式的方法.从v2.0.0开始,它将brew cleanup每30天作为默认行为运行.因此,您可能会意外更新brew和删除旧版本.
以下是安装旧版本的步骤:
homebrew-core目录: $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
Run Code Online (Sandbox Code Playgroud)
$ git log master -- Formula/readline.rb
Run Code Online (Sandbox Code Playgroud)
commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Wed Aug 15 21:51:16 2018 +0000
readline: update 7.0.5 bottle.
Run Code Online (Sandbox Code Playgroud)
$ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
Run Code Online (Sandbox Code Playgroud)
$ brew reinstall readline
Run Code Online (Sandbox Code Playgroud)
按照这些步骤,您可以重新安装旧版本的公式.
小智 78
如果情况是你有更高版本的readline说7.0.你可以这样做
cd /usr/local/opt/readline/lib
ln libreadline.7.0.dylib libreadline.6.2.dylib
Run Code Online (Sandbox Code Playgroud)
Tro*_*roy 45
如果您没有安装readline,请先安装它:
brew install readline
对我来说,即使我安装了readline,我也遇到了这个错误.重新安装readline就可以了:
brew reinstall readline
Run Code Online (Sandbox Code Playgroud)
小智 29
这对我有用
brew switch readline
Run Code Online (Sandbox Code Playgroud)
这将显示您已安装的版本.选择其中一个.我选了7.0.5
然后我跑了
brew switch readline 7.0.5
Run Code Online (Sandbox Code Playgroud)
readline版本已更新,psql运行顺畅.
Jon*_*Jon 21
这对我有用
ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
Run Code Online (Sandbox Code Playgroud)
Ale*_*uie 19
解决方案是再次强制连接readline.
brew remove readline
brew install readline
brew link readline --force
Run Code Online (Sandbox Code Playgroud)
小智 12
在我看来,问题在于更新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
Run Code Online (Sandbox Code Playgroud)
这些解决方案都不适合我; 我不得不跑:
brew upgrade bash
Run Code Online (Sandbox Code Playgroud)
来自:https://github.com/Homebrew/homebrew-core/issues/5799
上面的答案对我没有用,所以我想发布最终有效的内容.基于我在这里找到的一个帖子,我不得不卸载readline并重新安装它,但是从源代码开始.
brew uninstall readline
brew install --build-from-source readline
Run Code Online (Sandbox Code Playgroud)
之后,psql错误消失了.
| 归档时间: |
|
| 查看次数: |
59412 次 |
| 最近记录: |