我刚用自制软件安装了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
有谁知道怎么了吗?
Answers:
我遇到了完全相同的错误,但以上答案对我不起作用。我不得不重新安装postgresql。
brew reinstall postgresql
pg_upgrade
关键问题是您的postgresql试图查找,libreadline.6.2.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开始,它将brew cleanup
每30天作为默认行为运行一次。因此,您可能会意外更新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
按照这些步骤,您可以重新安装旧版本的公式。
readline
安装的其他任何版本?这样做还有什么其他弊端?
如果情况是您有更高版本的readline,请说7.0。你可以这样做
cd /usr/local/opt/readline/lib
ln libreadline.7.0.dylib libreadline.6.2.dylib
brew uninstall --force gawk
然后结合起来,然后brew install gawk
才开始运行。您也许也可以做到brew reinstall --force gawk
pg_top
了将libreadline升级到8.0并破坏了psql的程序。我用过你的把戏,只是使它成为一个符号链接 ln -s libreadline.8.0.dylib libreadline.7.dylib
如果您没有安装readline,请先安装:
brew install readline
对我来说,即使我已安装readline,也遇到了此错误。重新安装readline可以达到目的:
brew reinstall readline
bash
确实可以:brew install --build-from-source bash
brew reinstall readline
(以获取Sierra特有的啤酒),而在此期间, brew reinstall postgresql94
。人们说要重新安装bash,但我从没有开始过。所以这个答案和选择的答案都对我有用。
这对我有用
brew switch readline
这将显示您已安装的版本。从其中选一个。我选了7.0.5
然后我跑了
brew switch readline 7.0.5
readline版本已更新,并且psql
运行平稳。
libreadline.7.dylib
,但是我正在使用readline 8.0.0。从8.0.0切换到7.0.5可以解决此问题。我希望,如果我想继续使用8.0.0,创建符号链接(就像其他人所做的一样)也可以。但是将新版本链接到旧版本会产生误导,并可能导致其他问题。
这对我有用
ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib
,所以我用了ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib
。
解决方法是再次强制链接readline。
brew remove readline
brew install readline
brew link readline --force
在我看来,问题在于更新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
我有这个问题,对我来说,关键是要reinstall
既readline
和postgres
。重新安装postgres后,问题已解决。
我尝试了所有这些终端命令,但没有任何效果,因此决定手动修复它。
打开查找器 并按 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
您可能需要检查是否还有其他符号链接到postgresql
。我以前曾链接到postgres93软件包,截至17年5月,该软件包不受支持并已被删除。删除该链接,然后重新链接对我有用:
brew unlink postgresql93
brew link postgresql