Biblioteka nie załadowana: /usr/local/opt/readline/lib/libreadline.6.2.dylib

239

Właśnie zainstalowałem posgresql z homebrew i kiedy idę, aby wpisać polecenie

psql

Otrzymuję następujący błąd:

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

Czy ktoś ma pojęcie o tym, co jest nie tak?

hbejgel
źródło
1
Wygląda na to, że jest powiązany z readline, ale nie jest obecny. Czy później odinstalowałeś readline? Jak dokładnie zainstalowałeś PostgreSQL z Homebrew? (Kroki, polecenia).
Craig Ringer
1
Prawdopodobnie rozwiązany przez stackoverflow.com/questions/42356309/..., który ma bardziej zwięzłą odpowiedź niż większość z poniższych (prawdopodobnie nie trzeba ponownie instalować postgres!)
thclark

Odpowiedzi:

373

Otrzymałem dokładnie ten sam błąd, ale powyższe odpowiedzi nie działały dla mnie. Musiałem ponownie zainstalować postgresql.

brew reinstall postgresql

dafunkeemonkee
źródło
5
Ten zrobił to dla mnie na El Capitan
Sebastian Sastre
6
Mój problem wydaje się być związany z instalacją Pythona przy użyciu brew
Guyarad,
6
Bądź ostrożny, jeśli nie korzystasz z najnowszej wersji Postgres. Będziesz musiał ponownie zainstalować stary Postgres wraz z nowym, a następnie zrobićpg_upgrade
Amazon
7
Jest to bardzo trudne, jeśli nie chcesz stracić lokalnych baz danych. Miałem szczęście z „zaparzeniem przełączającym readline 6.3.8”
Christopher Johnson
4
Jeśli uważasz, że ponowna instalacja psql jest radykalnym krokiem dla czegoś, co wydaje się małym błędem, nie jesteś sam. Ta odpowiedź: stackoverflow.com/a/41476592/839876 wydaje się odnosić do prawdziwego problemu, z którym wiąże się większość tych odpowiedzi.
frandroid
127

Kluczowym problemem jest to, że twój postgresql próbował znaleźć wersję libreadline.6.2.dylibale twoja readlinejest 7.0, więc tylko lib 7 jest połączony.

Nie sądzę, aby aktualizacja postgresql była dobrym pomysłem, nie jest łatwa i może powodować wiele problemów, szczególnie gdy masz już dane z bazy danych.

To, co robię, to zmiana wersji readline. Kiedy sprawdzisz brew info readline, znajdziesz różne wersje, moja jest6.3.8 , więc przełączam się na tę wersję, wykonując:

$ brew switch readline 6.3.8

Zmieni się na 6.3.8 i utworzy 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

W takim przypadku cała połączona biblioteka staje się wersją 6, a wiersz poleceń działa:

$ 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

Jeśli jednak masz różne aplikacje korzystające z innej wersji readline, myślę, że powinieneś rozważyć aktualizację.


Aktualizacja: 06.02.2019

Co się stanie, jeśli stara wersja nie zostanie zainstalowana?

Homebrewnie zapewnia sposobu na zainstalowanie starej wersji formuły. Od wersji 2.0.0 będzie działać brew cleanupjako zachowanie domyślne co 30 dni. Dlatego możesz przypadkowo zaktualizować brewi usunąć starą wersję.

Oto kroki, aby zainstalować starą wersję:

  1. Przejdź do homebrew-corekatalogu:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Sprawdź skrót dla starej Formuły:
    $ git log master -- Formula/readline.rb
  1. Znajdź odpowiednią wersję wartości skrótu
    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. Kasa do starej formuły:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Ponownie zainstaluj formułę:
    $ brew reinstall readline
  1. Zresetuj repozytorium

Po wykonaniu tych kroków możesz ponownie zainstalować starą wersję formuły.

Stephen
źródło
1
A ja - jeśli nie masz innych zależności od readline 7, jest to zdecydowanie najmniej zakłócające podejście.
zremisował
to zadziałało również dla mnie, uratowało mnie od aktualizacji znaczków
Rich
Dla mnie też
zadziałało
Kiedy chcesz wrócić do innej readlinezainstalowanej wersji? Jakie są jeszcze inne wady?
Kenny Evitt,
Mam zainstalowany tylko jeden readline, a moja lokalna kasa readline zawiera tylko 8.0, a dziennik nie zawiera żadnych starszych wersji, nawet po pobraniu wszystkiego. Wygląda na to, że nie można zainstalować dla mnie starszej wersji readline, a aktualizacja postgresu może być jedyną opcją
Andy Ray
78

Jeśli sytuacja jest taka, masz wyższą wersję readline powiedz 7.0. Możesz to zrobić

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib
anvy zhang
źródło
5
Musiałem utworzyć link o nazwie „libreadline.6.dylib”, ale była to jedyna sugestia, która zadziałała dla mnie.
Mads Hoel
1
To w połączeniu z brew uninstall --force gawkczym brew install gawkbyło to, co masz mnie i działa. Być może będziesz w stanie po prostubrew reinstall --force gawk
Csteele5
1
Dobry. Używam postgres 10.6, który oczekuje libreadline.7.dylib, ale właśnie zainstalowałem pg_topuaktualnioną wersję libreadline do wersji 8.0 i zepsułem psql. Wykorzystałem twoją sztuczkę, ale uczyniłem ją dowiązaniem symbolicznym ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos
Wspaniale, dziękuje. Działa to na MacOS Mojave bez konieczności odinstalowywania i ponownej instalacji PostgreSQL (co byłoby prawdziwym bólem).
crmpicco
46

Jeśli nie masz zainstalowanego readline, najpierw go zainstaluj:

brew install readline

Dla mnie pojawiał się ten błąd, mimo że zainstalowałem readline. Ponowna instalacja readline załatwiła sprawę:

brew reinstall readline
Troja
źródło
6
ponowna instalacja readline nie zrobiła tego dla mnie, ale odinstalowanie / instalacja bashzrobiła:brew install --build-from-source bash
whatbird
Odkryłem, że najpierw muszę usunąć całą wersję readline (deinstalacja warzenia - force readline). Po ponownej instalacji musiałem wymusić połączenie za pomocą „link do zaparzania - wymuś odczyt”
Wilhelm
Ponowna instalacja bash również była dla mnie poprawką, ale w moim przypadku konkretnie w linii „referensed from” wspomniano bash.
mbafford
Po zainstalowaniu systemu MacOS Sierra napotkałem ten problem. Zrobiłem oba brew reinstall readline(aby uzyskać napar specyficzny dla Sierra) i jednocześnie brew reinstall postgresql94. Ludzie mówili, aby ponownie zainstalować bash, ale nigdy nie miałem tego od samego początku. Tak więc ta odpowiedź i wybrana odpowiedź działały dla mnie.
risa_risa,
readline reinstalacji brew działał dla mnie po przejściu na inne wersje (które działały w przeszłości) przestały działać po aktualizacji do psql9.6
bkunzi01
31

To zadziałało dla mnie

brew switch readline

Spowoduje to wyświetlenie zainstalowanych wersji. Wybierz jedną z nich. Wybrałem 7.0.5

Wtedy pobiegłem

brew switch readline 7.0.5

Wersja readline została zaktualizowana i psqldziałała płynnie.

sindhu_sp
źródło
2
Pracował również dla mnie. psql próbował załadować libreadline.7.dylib, ale użyłem readline 8.0.0. Przejście z wersji 8.0.0 na 7.0.5 rozwiązało problem. Oczekuję, że utworzenie dowiązania symbolicznego (tak jak zrobili to inni) również zadziałałoby, gdybym chciał pozostać na 8.0.0. Ale posiadanie nowszej wersji łącza do starszej wersji jest mylące i może potencjalnie powodować inne problemy.
Dennis
Jak znalazłeś to rozwiązanie? Jestem pod wielkim wrażeniem!
kuzdu
1
Próbowałem tego samego, ale otrzymałem następujący błąd: readline nie ma wersji „7.0.5” w piwnicy. Próbowałem wersji instalacyjnej browaru 7.0.5, ale wyświetla następujący błąd: Brak dostępnej formuły o nazwie „7.0.5”. @ Dennis
Mahesh Mesta
23

to działało dla mnie

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
Jon
źródło
To był również mój problem. Nie używałem naparu i po ostatniej aktualizacji brakowało mi łącza sym. Dzięki!
Matt
Miły! Mój dokładny błąd narzekał na 6.2, moje polecenie jest nieco inne. Błąd był dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, więc użyłem ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier
20

Rozwiązaniem jest ponowne wymuszenie połączenia readline.

brew remove readline
brew install readline
brew link readline --force
Alex Palcuie
źródło
relink nie działało dla mnie, ale działało ponowne instalowanie postgresql.
Konstantin Tichonow
14

Wydaje mi się, że problem dotyczy aktualizacji pakietu readline. postgres próbował użyć /usr/local/opt/readline/lib/libreadline.7.dylib w moim przypadku. Właśnie utworzyłem dowiązanie symboliczne do istniejącej wersji biblioteki /usr/local/opt/readline/lib/libreadline.8.dylib.

pracował dla mnie:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Eugeny Maksimov
źródło
To zadziałało dla mnie. Jestem na psql w wersji 9.6.3 i readline 8.
lacostenycoder
Trzeba przyznać, że jest to trudny sposób rozwiązania problemu, ale napotkałem ten problem po tym, jak niektóre niepowiązane aktualizacje przesunęły moją wersję readline z 7 do 8, a pełna ponowna instalacja Postgres nie była czymś, o czym chciałem się teraz zająć. Jest to małe rozwiązanie, a ryzyko czegoś wpływającego na zmianę w readline wydaje się niewielkie, więc na razie idę z tym dalej. Zgłosi się, jeśli spowoduje to jakiekolwiek problemy.
Scott Roth,
Dzięki za komentarz, zgadzam się z tym problemem. Miałem wiele problemów po aktualizacji do Macina Catalina, więc nie chciałem zagłębiać się w ten problem i użyłem hacka.
Eugeny Maksimov
8

Żadne z tych rozwiązań nie działało dla mnie; Musiałem biec:

brew upgrade bash

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

Anthony Dahanne
źródło
w moim el capitan po aktualizacji do 10.11.6 dostałem ten błąd za każdym razem, gdy otwieram aplikację terminalową, już rozwiązaną przez aktualizację bash
azul
6

Powyższa odpowiedź nie zadziałała, więc chciałem opublikować to, co ostatecznie zadziałało. Na podstawie wątku, który tu znalazłem , musiałem odinstalować readline i zainstalować go ponownie, ale ze źródła.

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

Następnie błąd psql zniknął.

Mark Pruce
źródło
5

Miałem ten problem, a kluczem było dla mnie reinstalljak readlinei postgres. Po ponownej instalacji postgres problem został rozwiązany.

Miki Bales
źródło
5

Innym sposobem na naprawienie psql jest właśnie uruchomiona aktualizacja postgresql, brew upgrade postgresqlponieważ najnowsza wersja używa wersji readline 7.

zegomesjf
źródło
4

Miałem ten problem, gdy przez przypadek zaktualizowałem readline do wersji 7. Odinstalowałem readline i brew przypominam, że 6.3.8 jest nadal zainstalowany. Wygląda na to, że wersja 7 obecnie nie działa z PSQL.

Yuanqi Cao
źródło
4

Próbowałem tych wszystkich poleceń terminalu i nic nie działało, więc postanowiłem to naprawić ręcznie.

Otwórz Finder i naciśnij Command + Shift + G

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

powinieneś zobaczyć wiele wersji tych plików

libreadline.6.dylib
libreadline.7.0.dylib

zmień nazwę dowolnego z nich na bibliotekę, która nie jest załadowana

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib
Priince Abalogu
źródło
Działa dla mnie dobrze
mike_dz 04.0419
3

Próbowałem odpowiedzi na wszystkie podglądy i nic nie działało. Jedyną rzeczą, która naprawdę dla mnie działała, było:

brew link postgresql

finx
źródło
2

Pomogło mi to: odinstaluj wszystkie readline i postgresql

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

i zainstaluj posqtgresql

ph4n70m
źródło
2

Następujące polecenia działały dla mnie:

brew reinstall postgresql
brew postgresql-upgrade-database
Nilansh Bansal
źródło
0

Możesz spróbować brew doctorzobaczyć, co mówi.

Być może wszystko czego potrzebujesz to brew link --overwrite bash.

Dla mnie właśnie zaktualizowałem brew, ponieważ OS X EL Capitan miał pewne uaktualnienie zabezpieczeń, które łączy mój /usrfolder. Podczas aktualizacji brew link bash jest zepsuty i to brew doctormi mówi.

Więc po prostu biegnę brew link --overwrite bashi wszystko jest w porządku.

Hustlion
źródło
0

Możesz sprawdzić, czy masz coś innego do dowiązania symbolicznego postgresql. Wcześniej łączyłem się z pakietem postgres93 , który od maja '17 nie jest obsługiwany i został usunięty. Usunięcie tego linku, a następnie ponowne połączenie działało dla mnie:

brew unlink postgresql93
brew link postgresql
sp89
źródło
0

W moim przypadku poprawna odpowiedź nie rozwiązała problemu.

Problem zaczął się po uruchomieniu brew doctori dodaniu export PATH="/usr/local/bin:$PATH"do mojego pliku ~ / .zshrc.

Usuwanie

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

od ~/.zshrcrozwiązania.

użytkownik9869932
źródło
0

Z jakiegoś nieznanego powodu, gdy ten błąd pojawił się w następnej wersji Readline, mój RVM wydawał się nie być w stanie zlokalizować właściwego, bez względu na to, jak go dowiązałem, rzucając:

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

W końcu rb-readlinedodałem klejnot do mojego Gemfile i zrobiłem inny bundle installi zaczął działać.

Ja ... po prostu nie wiem.

Erik Trautman
źródło