【问题标题】:Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib未加载库:/usr/local/opt/readline/lib/libreadline.6.2.dylib
【发布时间】:2014-02-24 15:52:56
【问题描述】:

我刚刚用自制软件安装了 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,但它不存在。你后来卸载了readline吗?您是如何准确地使用自制软件安装 PostgreSQL 的? (步骤,命令)。
  • 可能由stackoverflow.com/questions/42356309/… 解决,它比以下大多数答案更简洁(您可能不需要重新安装postgres!)

标签: postgresql psql libreadline


【解决方案1】:

以下命令对我有用:

brew reinstall postgresql
brew postgresql-upgrade-database

【讨论】:

    【解决方案2】:

    这对我有用

    brew switch readline
    

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

    然后我跑了

    brew switch readline 7.0.5
    

    readline版本更新,psql运行流畅。

    【讨论】:

    • 也为我工作。 psql 试图加载libreadline.7.dylib,但我使用的是 readline 8.0.0。从 8.0.0 切换到 7.0.5 解决了这个问题。如果我想继续使用 8.0.0,我希望创建一个符号链接(就像其他人所做的那样)也可以。但是,将较新版本链接到较旧版本会产生误导,并可能导致其他问题。
    • 您是如何找到此解决方案的?我很感动!
    • 我尝试了同样的方法,但收到以下错误:readline 在地窖中没有版本“7.0.5”。我尝试了 brew install 7.0.5 readline,但它显示以下错误: No available formula with the name "7.0.5" .@Dennis
    【解决方案3】:

    关键问题是你的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
    

    在这种情况下,所有链接的库都变成了 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,我认为你应该考虑升级。


    更新:2019 年 6 月 2 日

    如果没有安装旧版本怎么办?

    Homebrew 不提供安装旧版本公式的方法。从 v2.0.0 开始,它将每 30 天运行一次 brew cleanup 作为默认行为。因此,您可能会不小心更新brew并删除旧版本。

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

    1. 进入homebrew-core目录:
        $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
    
    1. 检查旧公式的哈希:
        $ git log master -- Formula/readline.rb
    
    1. 找到对应版本的哈希值
        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. 结帐到旧公式:
        $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
    
    1. 重新安装公式:
        $ brew reinstall readline
    
    1. 重置回购

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

    【讨论】:

    • 还有我——如果您对 readline 7 没有其他依赖项,那么这绝对是破坏性最小的方法。
    • 这对我也有用,让我免于更新帖子
    • 也为我工作...比更新整个数据库更清洁的解决方案
    • 何时想要切换回已安装的任何其他版本的readline?这样做还有什么其他缺点?
    • 我只安装了一个readline,而我的readline本地结帐只包含8.0,并且日志没有任何旧版本提交,即使在获取所有内容之后也是如此。看来我不可能安装旧版本的 readline,升级 postgres 可能是唯一的选择
    【解决方案4】:

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

    【讨论】:

    • 这对我有用。我在 psql 版本 9.6.3 和 readline 8 上。
    • 诚然,这是解决问题的一种骇人听闻的方法,但是在一些不相关的升级将我的 readline 版本从 7 推到 8 之后,我遇到了这个问题,并且完全没有重新安装 Postgres我现在就想解决。这是一个占用空间小的解决方案,readline 中一些有影响力的变化的风险似乎很小,所以我现在就这样做并继续前进。如果它导致任何问题,将报告。
    • 感谢您的评论,我同意这个问题。更新到 macos catalina 后我遇到了很多问题,所以我不想深入研究这个问题并使用了 hack。
    【解决方案5】:

    这对我有用

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

    【讨论】:

    • 这也是我的问题。我没有使用 brew 并且在最新更新后缺少符号链接。谢谢!
    • 不错!我的确切错误抱怨 6.2,我的命令略有不同。错误是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
    【解决方案6】:

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

    Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

    我最终将 gem rb-readline 添加到了我的 Gemfile 中,然后又做了一个 bundle install,它开始工作了。

    我……只是不知道。

    【讨论】:

      【解决方案7】:

      在我的情况下,正确的答案并没有解决问题。

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

      删除

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

      来自~/.zshrc 解决了。

      【讨论】:

        【解决方案8】:

        您可能想检查是否有其他符号链接到postgresql。我之前已链接到 postgres93 软件包,截至 17 年 5 月,该软件包不受支持并已被删除。删除该链接然后重新链接对我有用:

        brew unlink postgresql93
        brew link postgresql
        

        【讨论】:

          【解决方案9】:

          我尝试了所有预览答案,但没有任何效果。唯一对我有用的是:

          brew link postgresql

          【讨论】:

            【解决方案10】:

            另一种修复 psql 的方法是更新刚刚运行的 postgresql brew upgrade postgresql 因为最新版本将使用 readline 7 版本。

            【讨论】:

              【解决方案11】:

              我尝试了所有这些终端命令,但没有任何效果,所以决定手动修复它..

              打开查找器 然后点击 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
              

              【讨论】:

              • 适合我
              【解决方案12】:

              如果情况是你有更高版本的 readline 说 7.0.你可以这样做

              cd /usr/local/opt/readline/lib    
              ln libreadline.7.0.dylib libreadline.6.2.dylib
              

              【讨论】:

              • 我必须创建名为“libreadline.6.dylib”的链接,但这是唯一对我有用的建议。
              • 这与brew uninstall --force gawkbrew install gawk 结合使用是让我启动并运行的原因。你也可以brew reinstall --force gawk
              • 好一个。我正在运行需要 libreadline.7.dylib 的 postgres 10.6,但我刚刚安装了 pg_top,它将 libreadline 升级到 8.0 并破坏了 psql。我用了你的把戏,只是把它变成了符号链接ln -s libreadline.8.0.dylib libreadline.7.dylib
              • 太好了,谢谢。这可以在 MacOS Mojave 上运行,而无需卸载并重新安装 PostgreSQL(这将是一个真正的痛苦)。
              【解决方案13】:

              我发现这个解决方案很有帮助

              brew upgrade bash
              

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

              【讨论】:

                【解决方案14】:

                解决办法是再次强制链接readline。

                brew remove readline
                brew install readline
                brew link readline --force
                

                【讨论】:

                • 重新链接对我不起作用,但重新安装 postgresql 有效。
                【解决方案15】:

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

                brew upgrade bash
                

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

                【讨论】:

                • 在升级到 10.11.6 后我的 el capitan 每次打开终端应用程序时也会出现此错误,已通过升级 bash 解决
                【解决方案16】:

                你可以试试brew doctor 看看它说了什么。

                您可能只需要brew link --overwrite bash

                对我来说,我刚刚升级了 brew,因为 OS X EL Capitan 进行了一些影响我的 /usr 文件夹的安全升级。在 brew 升级期间,bash 链接断开,这是 brew doctor 告诉我的。

                所以我只运行brew link --overwrite bash,一切都很好。

                【讨论】:

                  【解决方案17】:

                  我无意中将 readline 更新到版本 7 时遇到了这个问题。我卸载了 readline 和 brew 提醒我 6.3.8 仍然安装。目前版本 7 似乎不适用于 PSQL。

                  【讨论】:

                    【解决方案18】:

                    我遇到了这个问题,我的关键是reinstallreadlinepostgres。重新安装 postgres 后,问题就解决了。

                    【讨论】:

                      【解决方案19】:

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

                      导出 CPPFLAGS=-I/usr/local/opt/readline/include 导出 LDFLAGS=-L/usr/local/opt/readline/lib

                      并安装 posqtgresql

                      【讨论】:

                        【解决方案20】:

                        我遇到了完全相同的错误,但上述答案对我不起作用。我不得不重新安装 postgresql。

                        brew reinstall postgresql

                        【讨论】:

                        • 这个是在 El Capitan 上为我做的
                        • 我的问题似乎与使用 brew 安装 python 有关
                        • 如果您还没有使用最新版本的 Postgres,请小心执行此操作。您需要在新的 Postgres 旁边重新安装旧的 Postgres,然后执行 pg_upgrade
                        • 如果您不想丢失本地数据库,这将是非常繁重的。 'brew switch readline 6.3.8' 我很幸运
                        • 如果您认为重新安装 psql 是解决看似小错误的根本步骤,那么您并不孤单。这个答案:stackoverflow.com/a/41476592/839876 似乎解决了大多数这些答案都可以解决的真正问题。
                        【解决方案21】:

                        上面的答案对我不起作用,所以我想发布最终起作用的答案。根据我找到的here 的一个线程,我必须卸载 readline 并再次安装它,但要从源代码安装。

                        brew uninstall readline
                        brew install --build-from-source readline
                        

                        之后 psql 错误消失了。

                        【讨论】:

                          【解决方案22】:

                          如果你没有安装readline,先安装:

                          brew install readline

                          对我来说,我收到了这个错误,即使我安装了 readline。重新安装 readline 就行了:

                          brew reinstall readline
                          

                          【讨论】:

                          • 重新安装 readline 并没有为我做,但卸载/安装 bash 做了:brew install --build-from-source bash
                          • 我发现我必须先删除所有的 readline 版本(brew uninstall --force readline)。重新安装后,我不得不用“brew link --force readline”强制链接它
                          • 重新安装 bash 也是我的解决办法,但在我的情况下,“引用自”行特别提到了 bash。
                          • 安装 MacOS Sierra 后,我一直遇到这个问题。我既做了brew reinstall readline(为了获得特定于 Sierra 的 brew),又做了brew reinstall postgresql94。人们说要重新安装 bash,但我从来没有开始。所以这个答案和选择的答案都对我有用。
                          • brew reinstall readline 在切换到其他版本后为我工作(过去曾工作过)在升级到 psql9.6 后不再工作
                          猜你喜欢
                          • 1970-01-01
                          • 2017-04-01
                          • 2019-08-01
                          • 2019-07-13
                          • 2019-07-06
                          • 2021-07-14
                          • 2020-04-19
                          • 2020-05-11
                          • 2020-03-19
                          相关资源
                          最近更新 更多