250

homebrewで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

誰が何が間違っているかについて何か考えがありますか?

4

22 に答える 22

133

libreadline.6.2.dylib重要な問題は、postgresqlが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 以降、brew cleanupデフォルトの動作として 30 日ごとに実行されます。したがって、古いバージョンを誤って更新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. レポをリセットする

これらの手順に従って、古いバージョンのフォーミュラを再インストールできます。

于 2017-01-05T02:47:23.797 に答える
23

これは私のために働いた

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
于 2017-03-29T07:24:13.167 に答える
20

解決策は、readline のリンクを再度強制することです。

brew remove readline
brew install readline
brew link readline --force
于 2014-09-29T07:59:59.620 に答える
4

これらの端末コマンドをすべて試しましたが、何も機能しなかったため、手動で修正することにしました..

ファインダー を開き、 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
于 2016-11-11T20:11:52.123 に答える
2

これは私を助けました:すべてのreadlineとpostgresqlをアンインストールします

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

posqtgresqlをインストールします

于 2016-10-01T11:56:37.570 に答える
1

このソリューションは役に立ちました

brew upgrade bash

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

于 2016-11-02T07:55:44.800 に答える
0

へのシンボリックリンクが他にあるかどうかを確認することをお勧めしpostgresqlます。以前にpostgres93パッケージにリンクしていましたが、2017 年 5 月の時点でサポートされておらず、削除されました。そのリンクを削除してから再リンクするとうまくいきました:

brew unlink postgresql93
brew link postgresql
于 2017-05-30T18:34:08.683 に答える