Bibliothek nicht geladen: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Ich habe gerade posgresql mit Homebrew installiert und wenn ich fortfahre, tippe ich den Befehl

psql

Ich erhalte folgende Fehlermeldung:

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

Hat jemand eine Idee, was los ist?


1
Sieht aus wie es mit readline verknüpft ist, aber es ist nicht vorhanden. Haben Sie readline danach deinstalliert? Wie genau haben Sie PostgreSQL mit Homebrew installiert? (Schritte, Befehle).
Craig Ringer

1
Wahrscheinlich gelöst durch stackoverflow.com/questions/42356309/…, das eine prägnantere Antwort hat als die meisten der folgenden (Sie müssen postgres wahrscheinlich nicht neu installieren!)
thclark

Antworten:


373

Ich habe genau den gleichen Fehler erhalten, aber die obigen Antworten haben bei mir nicht funktioniert. Ich musste postgresql neu installieren.

brew reinstall postgresql


5
Dieser hat es für mich auf El Capitan
Sebastian Sastre

6
Mein Problem scheint Python - Installation mit brauen Bezug zu haben
guyarad

6
Seien Sie vorsichtig, wenn Sie nicht bereits mit der neuesten Version von Postgres arbeiten. Sie müssen die alten Postgres neben dem neuen neu zu installieren und dann einenpg_upgrade
dazonic

7
Dies ist sehr schwierig, wenn Sie Ihre lokalen Datenbanken nicht verlieren möchten. Ich hatte Glück mit 'Brew Switch Readline 6.3.8'
Christopher Johnson

4
Wenn Sie der Meinung sind, dass die Neuinstallation von psql ein radikaler Schritt für einen kleinen Fehler ist, sind Sie nicht allein. Diese Antwort: stackoverflow.com/a/41476592/839876 scheint das eigentliche Problem zu lösen, das die meisten dieser Antworten umgehen .
frandroid

127

Das Hauptproblem ist, dass Ihr postgresql versucht hat, die Version zu finden, libreadline.6.2.dylibaber Ihre readlineis-Version 7.0, sodass nur die Bibliothek von 7 verknüpft ist.

Ich halte ein Upgrade von postgresql nicht für eine gute Idee, es ist nicht einfach und kann viele Probleme verursachen, insbesondere wenn Sie bereits Datenbankdaten haben.

Was ich tue, ist die Version von zu wechseln readline. Wenn Sie überprüfen brew info readline, werden Sie verschiedene Versionen finden, meine ist 6.3.8, also wechsle ich zu dieser Version, indem ich Folgendes ausführe:

$ brew switch readline 6.3.8

Es ändert sich zu 6.3.8 und erstellt den Link:

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

In diesem Fall wird die gesamte verknüpfte Bibliothek auf die Version 6 und die Befehlszeile funktioniert:

$ 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

Wenn Sie jedoch unterschiedliche Apps mit der unterschiedlichen Version von readline verwenden, sollten Sie ein Upgrade in Betracht ziehen.


Update: 06/02/2019

Was ist, wenn die alte Version nicht installiert ist?

Homebrewbietet keine Möglichkeit, die alte Versionsformel zu installieren. Und seit v2.0.0 wird es brew cleanupalle 30 Tage als Standardverhalten ausgeführt. Daher können Sie versehentlich brewdie alte Version aktualisieren und löschen.

Hier sind die Schritte zum Installieren der alten Version:

  1. Zum homebrew-coreVerzeichnis gehen:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Überprüfen Sie den Hash auf alte Formel:
    $ git log master -- Formula/readline.rb
  1. Suchen Sie die entsprechende Version des Hashwerts
    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. Kasse zur alten Formel:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Installieren Sie die Formel neu:
    $ brew reinstall readline
  1. Repo zurücksetzen

Wenn Sie diese Schritte ausführen, können Sie die alte Version der Formel neu installieren.


1
Und ich - wenn Sie keine anderen Abhängigkeiten von Readline 7 haben, ist dies definitiv der am wenigsten störende Ansatz.
zog

Dies funktionierte auch für mich und rettete mich vor dem Aktualisieren von Postges
Rich

Hat auch für mich funktioniert ... viel sauberere Lösung als die Aktualisierung der gesamten Datenbank
sromit

Wann möchte man zu einer anderen Version zurückkehren readline, die installiert wurde? Welche anderen Nachteile gibt es dabei?
Kenny Evitt

Ich habe nur eine Readline installiert, und mein lokales Auschecken von Readline enthält nur 8.0, und das Protokoll enthält keine Commits für ältere Versionen, selbst nachdem alles abgerufen wurde. Es scheint unmöglich zu sein, eine ältere Version von readline für mich zu installieren, und ein Upgrade von postgres ist möglicherweise die einzige Option
Andy Ray

78

Wenn die Situation ist, haben Sie eine höhere Version Readline sagen 7.0. Du kannst das

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

5
Ich musste einen Link mit dem Namen "libreadline.6.dylib" erstellen, aber dies war der einzige Vorschlag, der für mich funktionierte.
Mads Hoel

1
Dies in Verbindung mit brew uninstall --force gawkund dann brew install gawkhat mich zum Laufen gebracht. Sie könnten auch in der Lage sein, nurbrew reinstall --force gawk
Csteele5

1
Gut. Ich verwende Postgres 10.6, das libreadline.7.dylib erwartet, aber ich hatte gerade installiert, pg_topdas libreadline auf 8.0 aktualisiert und psql kaputt gemacht hat. Ich habe deinen Trick benutzt, außer ihn zu einem Symlink gemacht ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos

Großartig, danke. Dies funktionierte unter MacOS Mojave, ohne dass PostgreSQL deinstalliert und neu installiert werden musste (was ein echtes Problem gewesen wäre).
Crmpicco

46

Wenn Sie readline nicht installiert haben, installieren Sie es zuerst:

brew install readline

Bei mir wurde dieser Fehler angezeigt, obwohl ich readline installiert hatte. Die Neuinstallation von readline hat den Trick gemacht:

brew reinstall readline

6
Die Neuinstallation von readline hat es nicht für mich getan, aber die Deinstallation / Installation bashhat brew install --build-from-source bash
Folgendes

Ich stellte fest, dass ich zuerst alle Versionen von Readline entfernen musste (Brew Deinstallieren - Force Readline). Nachdem ich es neu installiert hatte, musste ich die Verknüpfung mit "Brew Link - Force Readline" erzwingen
Wilhelm

Die Neuinstallation von bash war auch für mich das Problem, aber in meinem Fall wurde in der Zeile "referenziert von" bash speziell erwähnt.
Mbafford

Nach der Installation von MacOS Sierra war dieses Problem aufgetreten. Ich habe beides getan brew reinstall readline(um das Sierra-spezifische Gebräu zu bekommen) und dabei brew reinstall postgresql94. Die Leute sagten, sie sollten bash neu installieren, aber ich hatte es nie von Anfang an. Diese Antwort und die gewählte Antwort haben also beide für mich funktioniert.
Risa_risa

Brew Neuinstallation Readline funktionierte für mich nach dem Wechsel zu anderen Versionen (was in der Vergangenheit funktioniert hat) nicht mehr nach dem Upgrade auf psql9.6
bkunzi01

31

Das hat bei mir funktioniert

brew switch readline

Dies würde die von Ihnen installierten Versionen anzeigen. Wählen Sie eine aus ihnen. Ich habe 7.0.5 ausgewählt

Ich rannte dann

brew switch readline 7.0.5

Die Readline-Version wurde aktualisiert und psqllief reibungslos.


2
Hat auch für mich gearbeitet. psql hat versucht zu laden libreadline.7.dylib, aber ich habe readline 8.0.0 verwendet. Der Wechsel von 8.0.0 zu 7.0.5 löste das Problem. Ich gehe davon aus, dass das Erstellen eines Symlinks (wie andere) auch funktionieren würde, wenn ich auf 8.0.0 bleiben wollte. Ein Link zu einer neueren Version zu einer älteren Version ist jedoch irreführend und kann möglicherweise andere Probleme verursachen.
Dennis

Wie haben Sie diese Lösung gefunden? Ich bin sehr beeindruckt!
Kuzdu

1
Ich habe das gleiche versucht, aber den folgenden Fehler erhalten: readline hat keine Version "7.0.5" im Keller. Ich habe versucht, Brew 7.0.5 Readline zu installieren, aber es zeigt den folgenden Fehler: Keine verfügbare Formel mit dem Namen "7.0.5". @ Dennis
Mahesh Mesta

23

das hat bei mir funktioniert

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

Das war auch mein Problem. Ich habe Brew nicht verwendet und nach dem letzten Update fehlte der Sym-Link. Vielen Dank!
Matt

Nett! Mein genauer Fehler hat sich über 6.2 beschwert, mein Befehl ist etwas anders. Der Fehler war dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, also habe ich verwendet ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier

20

Die Lösung besteht darin, die Verknüpfung der Readline erneut zu erzwingen.

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

relink hat bei mir nicht funktioniert, aber die Neuinstallation von postgresql hat funktioniert.
Konstantin Tikhonov

14

Mir scheint, das Problem besteht darin, das Readline-Paket zu aktualisieren. postgres hat versucht, in meinem Fall /usr/local/opt/readline/lib/libreadline.7.dylib zu verwenden. Also habe ich gerade einen Symlink zu der vorhandenen Version der Bibliothek /usr/local/opt/readline/lib/libreadline.8.dylib erstellt.

arbeitete für mich:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib

Das hat bei mir funktioniert. Ich bin auf psql Version 9.6.3 und readline 8.
lacostenycoder

Zugegeben, dies ist ein hackiger Weg, um das Problem zu beheben, aber ich stieß auf dieses Problem, nachdem einige nicht verwandte Upgrades meine Readline-Version von 7 auf 8 verschoben hatten, und eine vollständige Neuinstallation von Postgres wollte ich im Moment nicht angehen. Dies ist eine Lösung mit geringem Platzbedarf, und das Risiko, dass sich die Readline geringfügig ändert, scheint gering zu sein. Deshalb gehe ich vorerst damit um und gehe weiter. Wird zurückmelden, wenn es später Probleme verursacht.
Scott Roth

Vielen Dank für den Kommentar, ich stimme diesem Problem zu. Ich hatte nach dem Update auf macos Catalina viele Probleme, deshalb wollte ich mich nicht mit diesem Problem befassen und habe den Hack verwendet.
Eugeny Maksimov


6

Die obige Antwort hat bei mir nicht funktioniert, deshalb wollte ich posten, was letztendlich funktioniert hat. Basierend auf einem Thread, den ich hier gefunden habe , musste ich readline deinstallieren und erneut installieren, aber von der Quelle.

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

Danach verschwand der psql-Fehler.


5

Ich hatte dieses Problem und der Schlüssel für mich war reinstallsowohl readlineals auch postgres. Nach der Neuinstallation von postgres wurde das Problem behoben.


5

Eine andere Möglichkeit, psql zu reparieren, ist das Update von postgresql, das gerade ausgeführt wird, brew upgrade postgresqlda die neueste Version die Version readline 7 verwendet.


4

Ich hatte dieses Problem, als ich versehentlich readline auf Version 7 aktualisiert habe. Ich habe readline deinstalliert und mich daran erinnert, dass 6.3.8 noch installiert ist. Es scheint, dass Version 7 derzeit nicht mit PSQL funktioniert.


4

Ich habe alle diese Terminalbefehle ausprobiert und nichts hat funktioniert. Deshalb habe ich beschlossen, sie manuell zu beheben.

Öffnen Sie den Finder und drücken Sie Befehl + Umschalt + g

Go to this folder /usr/local/opt/readline/lib/

Sie sollten mehrere Versionen dieser Dateien sehen

libreadline.6.dylib
libreadline.7.0.dylib

Benennen Sie eine von ihnen in die Bibliothek um, die nicht geladen ist

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib

Funktioniert gut für mich
mike_dz

3

Ich habe alle Antworten in der Vorschau ausprobiert und nichts hat funktioniert. Das einzige, was wirklich für mich funktioniert hat, war:

brew link postgresql


2

Das hatte mir geholfen: alle readline und postgresql deinstallieren

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

und installiere posqtgresql


2

Die folgenden Befehle haben bei mir funktioniert:

brew reinstall postgresql
brew postgresql-upgrade-database


0

Du könntest es versuchen brew doctor sehen, was es sagt.

Möglicherweise brauchen Sie nur brew link --overwrite bash .

Für mich habe ich gerade ein Upgrade durchgeführt, da OS X EL Capitan ein Sicherheitsupgrade hatte, das sich auf meinen /usrOrdner auswirkt . Während des Brau-Upgrades ist die Bash-Verbindung unterbrochen, und das ist wasbrew doctor sagt mir.

Also renne ich einfach brew link --overwrite bashund alles ist in Ordnung.


0

Vielleicht möchten Sie überprüfen, ob noch etwas mit Ihnen verknüpft ist postgresql. Ich hatte zuvor auf das postgres93- Paket verlinkt , das ab Mai '17 nicht mehr unterstützt wird und entfernt wurde. Das Entfernen dieses Links und das anschließende erneute Verknüpfen funktionierte für mich:

brew unlink postgresql93
brew link postgresql

0

In meinem Fall hat die richtige Antwort das Problem nicht behoben.

Das Problem begann nach dem Ausführen brew doctorund Hinzufügen export PATH="/usr/local/bin:$PATH"zu meiner ~ / .zshrc-Datei.

Entfernen

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

von ~/.zshrchabe es gelöst.


0

Aus irgendeinem unbekannten Grund schien mein RVM, als dieser Fehler für die nächste Version von Readline auftauchte, nicht in der Lage zu sein, die richtige zu finden, egal wie ich sie verknüpft hatte, und warf:

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

rb-readlineAm Ende habe ich den Edelstein zu meiner Gemfile hinzugefügt und einen anderen gemacht, bundle installund es hat angefangen zu funktionieren.

Ich ... weiß es einfach nicht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.