我只是用自制程序安装了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
有人知道是怎么回事吗?
如果你没有安装readline,首先安装它:
brew install readline
对我来说,我得到了这个错误,即使我安装了readline。重新安装readline成功了:
brew reinstall readline
上面的答案对我没用,所以我想把最终有用的东西贴出来。根据我找到的在这里线程,我必须卸载readline,并从源代码重新安装它。
brew uninstall readline brew install --build-from-source readline
之后,psql错误消失了。
解决方案是再次强制链接readline。
brew remove readline brew install readline brew link readline --force
我得到了完全相同的错误,但上面的答案对我不起作用。我不得不重新安装postgresql。
brew reinstall postgresql
并安装posqtgresql
我在不小心将readline更新到版本7时遇到了这个问题。我卸载了readline和brew,提醒我6.3.8仍然安装。目前看来,版本7还不能使用PSQL。
我有这个问题,对我来说,关键是reinstall readline和postgres。重新安装postgres后,问题就解决了。
reinstall
readline
postgres
你可以试试brew doctor,看看它说了什么。
brew doctor
可能你所需要的只是brew link --overwrite bash。
brew link --overwrite bash
对我来说,我刚刚升级了brew,因为OS X EL Capitan有一些安全升级,影响了我的/usr文件夹。在brew升级期间,bash链接断开,这是brew doctor告诉我的。
/usr
所以我只是运行brew link --overwrite bash,一切正常。
这些方法对我来说都没用;我不得不跑开:
brew upgrade bash
from: https://github.com/Homebrew/homebrew-core/issues/5799
我发现这个解决方案很有用
https://github.com/Homebrew/homebrew-core/issues/5799
如果情况是你有一个更高版本的readline,比如7.0。你可以这样做
cd /usr/local/opt/readline/lib ln libreadline.7.0.dylib libreadline.6.2.dylib
我尝试了所有这些终端命令,没有任何工作,所以决定手动修复它。
__abc0 __abc1 __abc2
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
关键问题是你的postgresql试图找到libreadline.6.2.dylib,但你的readline是版本7.0,所以只有7的库被链接。
libreadline.6.2.dylib
7.0
我不认为升级postgresql是一个好主意,这并不容易,可能会导致很多问题,特别是当你已经有数据库数据的时候。
我所做的是切换readline的版本。当你检查brew info readline时,你会发现不同的版本,我的是6.3.8,所以我切换到那个版本执行:
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 cleanup作为默认行为。因此,您可能会意外地更新brew并删除旧版本。
Homebrew
brew cleanup
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
按照这些步骤,您可以重新安装旧版本的公式。
brew upgrade postgresql
我试了所有的预习答案,都没用。唯一对我有用的是:
brew link postgresql
这对我很有效
ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
你可能想检查是否有任何其他符号链接到postgresql。我之前已经链接到postgres93包,截至17年5月,该包不受支持,已被删除。删除链接然后重新链接对我来说很有效:
postgresql
brew unlink postgresql93 brew link postgresql
对我来说,正确的答案并不能解决问题。
在运行brew doctor并将export PATH="/usr/local/bin:$PATH"添加到我的~/后,问题开始了。zshrc中。
export PATH="/usr/local/bin:$PATH"
删除
从~/.zshrc得到了解决。
~/.zshrc
由于一些未知的原因,当这个错误出现在下一个版本的Readline时,我的RVM似乎无法找到正确的,无论我如何符号链接它,抛出:
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)
我最终添加宝石rb-readline到我的Gemfile,并做另一个bundle install,它开始工作。
rb-readline
bundle install
我…只是不知道。
brew switch readline
这将显示您已安装的版本。从中挑一个。我选了7.0.5
然后我就跑了
brew switch readline 7.0.5
readline版本更新了,psql运行顺利。
对我有用:
ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
下面的命令对我有用:
brew reinstall postgresql brew postgresql-upgrade-database