我刚用homebrew安装了postgresql,当我继续输入命令
时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
有没有人知道什么是错的?
答案 0 :(得分:303)
我得到了完全相同的错误,但上述答案对我没有用。我不得不重新安装postgresql。
brew reinstall postgresql
答案 1 :(得分:110)
关键问题是你的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开始,它将每隔30天以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
按照这些步骤,您可以重新安装旧版本的公式。
答案 2 :(得分:69)
如果情况是你有更高版本的readline说7.0。你可以这样做
cd /usr/local/opt/readline/lib
ln libreadline.7.0.dylib libreadline.6.2.dylib
答案 3 :(得分:45)
如果您没有安装readline,请先安装它:
brew install readline
对我来说,即使我安装了readline,我也遇到了这个错误。重新安装readline就可以了:
brew reinstall readline
答案 4 :(得分:25)
这对我有用
brew switch readline
这将显示您已安装的版本。从其中选一个。我选择了7.0.5
然后我跑了
brew switch readline 7.0.5
readline版本已更新,psql
运行平稳。
答案 5 :(得分:19)
解决方案是再次强制连接readline。
brew remove readline
brew install readline
brew link readline --force
答案 6 :(得分:19)
这对我有用
ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
答案 7 :(得分:8)
答案 8 :(得分:6)
上面的答案对我没有用,所以我想发布最终有效的内容。基于我找到here的帖子,我不得不卸载readline并再次安装它,但是从源代码开始。
brew uninstall readline
brew install --build-from-source readline
之后psql错误就消失了。
答案 9 :(得分:6)
在我看来,问题在于更新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
答案 10 :(得分:5)
我遇到了这个问题,而我的关键是reinstall
readline
和postgres
。重新安装postgres后,问题就解决了。
答案 11 :(得分:4)
当我意外地将readline更新到版本7时,我遇到了这个问题。我卸载readline和brew提醒我6.3.8仍然安装。似乎版本7目前不适用于PSQL。
答案 12 :(得分:3)
我尝试了所有这些终端命令,没有任何工作,所以决定手动修复它。
打开查找程序 并点击 命令+ 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
答案 13 :(得分:3)
修复psql的另一种方法是刚刚运行的更新postgresql
>>> df
Author1 Author2 Author3
C 248.0 38.0 2.0
Go NaN 38.0 2.0
IOS 24.0 38.0 2.0
Microsoft 248.0 38.0 2.0
Solaris 24.0 NaN NaN
Ubuntu 24.0 38.0 NaN
>>> df["Total"] = df.T.sum()
>>> df
Author1 Author2 Author3 Total
C 248.0 38.0 2.0 288.0
Go NaN 38.0 2.0 40.0
IOS 24.0 38.0 2.0 64.0
Microsoft 248.0 38.0 2.0 288.0
Solaris 24.0 NaN NaN 24.0
Ubuntu 24.0 38.0 NaN 62.0
因为最新版本将使用readline 7版本。
答案 14 :(得分:2)
我尝试了所有的预览答案,但没有任何效果。唯一对我有用的是:
brew link postgresql
答案 15 :(得分:2)
这对我有所帮助: 卸载所有readline和postgresql
导出CPPFLAGS = -I / usr / local / opt / readline / include export LDFLAGS = -L / usr / local / opt / readline / lib
并安装posqtgresql
答案 16 :(得分:2)
以下命令对我有用:
brew reinstall postgresql
brew postgresql-upgrade-database
答案 17 :(得分:1)
答案 18 :(得分:0)
您可能想要检查是否还有其他符号链接到postgresql
的内容。我以前链接到postgres93包,截至2017年5月,该包不受支持且已被删除。删除该链接,然后重新链接为我工作:
brew unlink postgresql93
brew link postgresql
答案 19 :(得分:0)
在我的情况下,正确的答案并没有解决问题。
运行brew doctor
并将export PATH="/usr/local/bin:$PATH"
添加到〜/ .zshrc文件后问题就开始了。
删除
export PATH="/usr/local/bin:$PATH"
来自~/.zshrc
的让它解决了。
答案 20 :(得分:0)
由于某些未知原因,当下一版本的Readline弹出此错误时,无论我如何对它进行符号链接,我的RVM似乎找不到合适的错误,抛出:
rb-readline
我最终将gem bundle install
添加到我的Gemfile并执行另一个public enum Car {
HONDA("Honda", "hondas") {
@Inject
Carparts carparts;
@Override
public List<Carpart> getCarparts() {
return carparts.getCarpartsListings();
}
};
//more logic here
}
并开始工作。
我......不知道。
答案 21 :(得分:0)
您可以尝试brew doctor
并查看其内容。
您可能只需要brew link --overwrite bash
。
对我来说,我刚刚升级了brew,因为OS X EL Capitan进行了一些安全性升级,这些升级属于我的/usr
文件夹。在brew升级期间,bash链接被破坏,这就是brew doctor
告诉我的。
所以我只是运行brew link --overwrite bash
,一切都很好。