Libreria non caricata: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Ho appena installato posgresql con homebrew e quando continuo a digitare il comando

psql

Ottengo il seguente errore:

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

Qualcuno ha idea di cosa non va?


1
Sembra collegato a readline, ma non è presente. In seguito hai disinstallato readline? Come hai installato esattamente PostgreSQL con homebrew? (Passaggi, comandi).
Craig Ringer,

1
Probabilmente risolto da stackoverflow.com/questions/42356309/… che ha una risposta più concisa della maggior parte di quanto segue (probabilmente non è necessario reinstallare Postgres!)
thclark,

Risposte:


373

Stavo ottenendo lo stesso errore esatto, ma le risposte sopra non hanno funzionato per me. Ho dovuto reinstallare postgresql.

brew reinstall postgresql


5
Questo è stato per me su El Capitan
Sebastian Sastre il

6
Il mio problema sembra essere stato collegato all'installazione di Python usando brew
guyarad il

6
Fai attenzione se non sei già nell'ultima versione di Postgres. Dovrai reinstallare il vecchio Postgres insieme a quello nuovo e poi fare unpg_upgrade
dazonico il

7
Questo è molto pesante se non vuoi perdere i tuoi database locali. Ho avuto fortuna con "brew switch readline 6.3.8"
Christopher Johnson,

4
Se pensi che reinstallare psql sia un passaggio radicale per quello che sembra un piccolo bug, non sei solo. Questa risposta: stackoverflow.com/a/41476592/839876 sembra risolvere il vero problema a cui la maggior parte di queste risposte aggira.
Frandroid,

127

Il problema chiave è che il tuo postgresql stava cercando di trovare la libreadline.6.2.dylibtua ma readlineè la versione 7.0, quindi è collegata solo la lib di 7.

Non credo che l'aggiornamento di postgresql sia una buona idea, non è facile e può causare molti problemi, specialmente quando si hanno già i dati del database.

Quello che faccio è cambiare la versione di readline. Quando controlli brew info readline, troverai diverse versioni, la mia è 6.3.8, quindi passo a quella versione eseguendo:

$ brew switch readline 6.3.8

Passerà a 6.3.8 e creerà il collegamento:

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 questo caso, tutte le librerie collegate diventano alla versione 6 e la riga di comando funziona:

$ 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

Tuttavia, se hai app diverse che utilizzano la diversa versione di readline, penso che dovresti prendere in considerazione l'aggiornamento.


Aggiornamento: 06/02/2019

Cosa succede se la vecchia versione non è installata?

Homebrewnon fornisce un modo per installare la vecchia versione della formula. E dalla v2.0.0, verrà eseguito brew cleanupcome comportamento predefinito ogni 30 giorni. Pertanto, è possibile aggiornare brewed eliminare accidentalmente la versione precedente.

Ecco i passaggi per installare la vecchia versione:

  1. Vai alla homebrew-coredirectory:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Controlla l'hash per la vecchia formula:
    $ git log master -- Formula/readline.rb
  1. Trova la versione corrispondente del valore hash
    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. Acquista alla vecchia formula:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Reinstalla la formula:
    $ brew reinstall readline
  1. Ripristina il repository

Seguendo questi passaggi, è possibile reinstallare la vecchia versione della formula.


1
E io - se non hai altre dipendenze da readline 7, questo è sicuramente l'approccio meno dirompente.
Disegnò il

questo ha funzionato anche per me, mi ha salvato dall'aggiornamento postges
Rich

Ha funzionato anche per me ... soluzione molto più pulita rispetto all'aggiornamento dell'intero database
entro il

Quando si vorrebbe tornare a qualunque altra versione readlineinstallata? Quali altri aspetti negativi ci sono per fare questo?
Kenny Evitt,

Ho solo un readline installato e il mio checkout locale di readline contiene solo 8.0, e il registro non ha alcun commit di versione precedente, anche dopo aver recuperato tutto. Sembra che sia impossibile installare una versione precedente di readline per me e l'aggiornamento di Postgres potrebbe essere l'unica opzione
Andy Ray

78

Se la situazione è che hai una versione superiore readline dire 7.0. Puoi farlo

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

5
Ho dovuto creare un link chiamato "libreadline.6.dylib" ma questo è stato l'unico suggerimento che ha funzionato per me.
Mads Hoel,

1
Questo insieme a brew uninstall --force gawke poi è brew install gawkstato ciò che mi ha reso operativo. Potresti anche essere in grado dibrew reinstall --force gawk
Csteele5

1
Buona Sto eseguendo postgres 10.6 che prevede libreadline.7.dylib ma avevo appena installato il pg_topquale libreadline aggiornato a 8.0 e rotto psql. Ho usato il tuo trucco, tranne che per renderlo un collegamento simbolico ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos

Eccellente grazie. Questo ha funzionato su MacOS Mojave senza dover disinstallare e reinstallare PostgreSQL (che sarebbe stato un vero problema).
crmpicco,

46

Se non hai installato readline, prima installalo:

brew install readline

Per me, stavo ottenendo questo errore, anche se avevo readline installato. Reinstallare readline ha funzionato:

brew reinstall readline

6
la reinstallazione di readline non l'ha fatto per me, ma la disinstallazione / installazione ha bashfatto:brew install --build-from-source bash
whatbird

Ho scoperto che dovevo rimuovere prima tutta la versione di readline (brew uninstall --force readline). Dopo averlo reinstallato, ho dovuto forzare il collegamento con "brew link --force readline"
Wilhelm,

La reinstallazione di bash è stata la soluzione anche per me, ma nel mio caso la riga "referenziata da" menzionata in modo specifico bash.
mbafford,

Dopo aver installato MacOS Sierra, ho riscontrato questo problema. Ho fatto entrambi brew reinstall readline(per ottenere la bevanda Sierra-specifico) e mentre a lui, brew reinstall postgresql94. La gente diceva di reinstallare bash ma non l'ho mai avuto all'inizio. Quindi questa risposta e la risposta scelta hanno funzionato entrambe per me.
risa_risa,

brew reinstallate readline ha funzionato per me dopo il passaggio ad altre versioni (che ha funzionato in passato) non funzionava più dopo l'aggiornamento a psql9.6
bkunzi01

31

Questo ha funzionato per me

brew switch readline

Ciò visualizzerebbe le versioni che hai installato. Scegline uno. Ho scelto 7.0.5

Allora ho corso

brew switch readline 7.0.5

La versione readline è stata aggiornata e psqlfunzionava senza problemi.


2
Ha funzionato anche per me. psql stava cercando di caricare libreadline.7.dylib, ma stavo usando readline 8.0.0. Il passaggio da 8.0.0 a 7.0.5 ha risolto il problema. Mi aspetto che anche la creazione di un collegamento simbolico (come altri hanno fatto) funzionerebbe, se volessi rimanere su 8.0.0. Avere un collegamento di una versione più recente a una versione precedente è fuorviante e potrebbe potenzialmente causare altri problemi.
Dennis,

Come hai trovato questa soluzione? Sono molto colpito!
Kuzdu,

1
Ho provato lo stesso, ma ho ottenuto il seguente errore: readline non ha una versione "7.0.5" nella cantina. Ho provato a installare readline 7.0.5, ma mostra il seguente errore: Nessuna formula disponibile con il nome "7.0.5". @ Dennis
Mahesh Mesta

23

questo ha funzionato per me

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

Anche questo era il mio problema. Non ho usato brew e mancava il link sym dopo l'ultimo aggiornamento. Grazie!
Matt,

Bello! Il mio errore esatto si è lamentato di 6.2, il mio comando è leggermente diverso. L'errore era dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, quindi ho usato ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier,

20

La soluzione è forzare nuovamente il collegamento di readline.

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

ricollegamento non ha funzionato per me, ma reinstallare Postgresql ha funzionato.
Konstantin Tikhonov,

14

Mi sembra che il problema riguardi l'aggiornamento del pacchetto readline. postgres ha provato a usare /usr/local/opt/readline/lib/libreadline.7.dylib nel mio caso. Quindi ho appena creato un link simbolico alla versione esistente della libreria /usr/local/opt/readline/lib/libreadline.8.dylib.

ha funzionato per me:

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

Questo ha funzionato per me. Sono su psql versione 9.6.3 e readline 8.
lacostenycoder il

È vero che questo è un modo bizzarro per risolvere il problema, ma stavo incontrando questo problema dopo che alcuni aggiornamenti non correlati hanno spinto la mia versione readline da 7 a 8, e una reinstallazione completa di Postgres non era qualcosa che volevo affrontare in questo momento. Questa è una soluzione a ingombro ridotto e il rischio di cambiamenti di impatto in readline sembra ridotto, quindi per ora ci andrò avanti e andrò avanti. Riferirà se causa problemi in futuro.
Scott Roth,

Grazie per il commento, sono d'accordo su questo problema. Ho avuto molti problemi dopo l'aggiornamento a macos catalina, quindi non volevo approfondire questo problema e usare l'hacking.
Eugeny Maksimov


6

La risposta sopra non ha funzionato per me, quindi ho voluto pubblicare ciò che alla fine ha funzionato. Sulla base di un thread che ho trovato qui , ho dovuto disinstallare readline e installarlo di nuovo ma dalla fonte.

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

Successivamente l'errore psql è scomparso.


5

Ho avuto questo problema, e la chiave per me era per reinstallentrambi readlinee postgres. Una volta reinstallato Postgres, il problema è stato risolto.


5

Un altro modo per correggere psql è aggiornare postgresql appena in esecuzione brew upgrade postgresqlpoiché la versione più recente utilizzerà la versione 7 di readline.


4

Ho avuto questo problema quando ho aggiornato readline alla versione 7 per caso. Ho disinstallato readline e brew mi ricorda che 6.3.8 è ancora installato. Sembra che al momento la versione 7 non funzioni con PSQL.


4

Ho provato tutti questi comandi del terminale e niente ha funzionato, quindi ho deciso di risolverlo manualmente.

Apri finder e premi comando + maiusc + g

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

dovresti vedere più versioni di questi file

libreadline.6.dylib
libreadline.7.0.dylib

rinominare uno di essi nella libreria non caricata

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

Funziona bene per me
mike_dz

3

Ho provato tutte le risposte alle anteprime e niente ha funzionato. L'unica cosa che ha funzionato davvero per me è stata:

brew link postgresql


2

Questo mi ha aiutato: disinstallare tutto readline e postgresql

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

e installa posqtgresql


2

I seguenti comandi hanno funzionato per me:

brew reinstall postgresql
brew postgresql-upgrade-database


0

Potresti provare a brew doctorvedere cosa dice.

Forse tutto ciò che serve è brew link --overwrite bash.

Per quanto mi riguarda, ho appena aggiornato brew dal momento che OS X EL Capitan ha avuto un aggiornamento di sicurezza che influisce sulla mia /usrcartella. Durante l'aggiornamento della birra, il link bash viene interrotto e questo è ciò che brew doctormi dice.

Quindi corro brew link --overwrite bashe va tutto bene.


0

Potresti voler controllare se hai qualcos'altro collegato a symlink postgresql. In precedenza mi ero collegato al pacchetto postgres93 , che a partire dal maggio '17 non è supportato ed è stato rimosso. Rimuovere quel link e ricollegarlo ha funzionato per me:

brew unlink postgresql93
brew link postgresql

0

Nel mio caso la risposta corretta non ha risolto il problema.

Il problema è iniziato dopo l'esecuzione brew doctore l'aggiunta export PATH="/usr/local/bin:$PATH"al mio file ~ / .zshrc.

Rimozione

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

da ~/.zshrcaverlo risolto.


0

Per qualche ragione sconosciuta, quando questo errore è apparso per la prossima versione di Readline, il mio RVM sembrava incapace di individuare quello giusto, non importa come l'ho collegato simbolicamente, lanciando:

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

Ho finito per aggiungere la gemma rb-readlineal mio Gemfile e fare un altro bundle installe ha iniziato a funzionare.

Io ... proprio non lo so.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.