我只是用自制程序安装了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安装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。

重新安装postgresql


这对我很有帮助: 卸载所有readline和postgresql

出口CPPFLAGS = - i / usr /地方/ opt / readline /包括 出口LDFLAGS = - l / usr /地方/ opt / readline / lib

并安装posqtgresql


我在不小心将readline更新到版本7时遇到了这个问题。我卸载了readline和brew,提醒我6.3.8仍然安装。目前看来,版本7还不能使用PSQL。


我遇到了这个问题,对我来说关键是重新安装readline和postgres。重新安装postgres后,问题就解决了。


你可以试试啤酒医生,看看上面写了什么。

可能您所需要的只是brew link—覆盖bash。

对我来说,我刚刚升级了brew,因为OS X EL Capitan有一些安全升级,影响了我的/usr文件夹。在酿造升级过程中,bash链接中断了,这是酿造医生告诉我的。

我运行brew link,覆盖bash,一切正常。


这些方法对我来说都没用;我不得不跑开:

brew upgrade bash

来自:https://github.com/Homebrew/homebrew-core/issues/5799


我发现这个解决方案很有用

brew upgrade bash

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

我尝试了所有这些终端命令,没有任何工作,所以决定手动修复它。

打开查找器,点击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试图找到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

重置回购

按照这些步骤,您可以重新安装旧版本的公式。


另一种修复psql的方法是更新正在运行的postgresql Brew升级postgresql,因为最新版本将使用readline 7版本。


我试了所有的预习答案,都没用。唯一对我有用的是:

酿造链接postgresql


这对我很有效

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib

你可能想要检查是否有其他符号链接到postgresql。我之前曾链接到postgres93包,该包在17年5月不受支持,已被删除。删除链接然后重新链接对我来说很有效:

brew unlink postgresql93
brew link postgresql

对我来说,正确的答案并不能解决问题。

在运行brew doctor并将export PATH="/usr/local/bin:$PATH"添加到我的~/后,问题开始了。zshrc中。

删除

export PATH="/usr/local/bin:$PATH" 

从~ /。ZSHRC解决了这个问题。


由于一些未知的原因,当这个错误出现在下一个版本的Readline时,我的RVM似乎无法找到正确的,无论我如何符号链接它,抛出:

库未加载:/usr/local/opt/readline/lib/libreadline.7。dylib (LoadError)

我最终将gem rb-readline添加到我的Gemfile中,并进行了另一个bundle安装,它开始工作了。

我…只是不知道。


这对我很有效

brew switch readline

这将显示您已安装的版本。从中挑一个。我选了7.0.5

然后我就跑了

brew switch readline 7.0.5

readline版本得到了更新,psql运行得很顺利。


在我看来,问题是关于更新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

下面的命令对我有用:

brew reinstall postgresql
brew postgresql-upgrade-database