未加载库:/usr/local/opt/readline/lib/libreadline.6.2.dylib

时间:2014-01-31 19:48:34

标签: postgresql psql libreadline

我刚用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

有没有人知道什么是错的?

22 个答案:

答案 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并删除旧版本。

以下是安装旧版本的步骤:

  1. 转到homebrew-core目录:
  2.     $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
    
    1. 检查旧公式的哈希:
    2.     $ git log master -- Formula/readline.rb
      
      1. 查找相应版本的哈希值
      2.     commit 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f
            Author: BrewTestBot <brew-test-bot@googlegroups.com>
            Date:   Wed Aug 15 21:51:16 2018 +0000
        
                readline: update 7.0.5 bottle.
        
        1. 结帐旧配方:
        2.     $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
          
          1. 重新安装公式:
          2.     $ brew reinstall readline
            
            1. 重置回购
            2. 按照这些步骤,您可以重新安装旧版本的公式。

答案 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)

这些解决方案都不适合我;我不得不跑:

brew upgrade bash

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

答案 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 readlinepostgres。重新安装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)

我发现此解决方案很有用

brew upgrade bash

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

答案 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,一切都很好。