Perpustakaan tidak dimuat: /usr/local/opt/readline/lib/libreadline.6.2.dylib

239

Saya baru saja menginstal posgresql dengan homebrew dan ketika saya melanjutkan mengetikkan perintah

psql

Saya mendapatkan kesalahan berikut:

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

Adakah yang tahu tentang apa yang salah?

hbejgel
sumber
1
Sepertinya tertaut ke readline, tetapi tidak ada. Apakah Anda menghapus pemasangan readline sesudahnya? Bagaimana tepatnya Anda menginstal PostgreSQL dengan homebrew? (Langkah, perintah).
Craig Ringer
1
Kemungkinan dipecahkan oleh stackoverflow.com/questions/42356309/… yang memiliki jawaban lebih ringkas daripada sebagian besar di bawah ini (Anda mungkin tidak perlu menginstal ulang postgres!)
thclark

Jawaban:

373

Saya mendapatkan kesalahan yang sama persis, tetapi jawaban di atas tidak bekerja untuk saya. Saya harus menginstal ulang postgresql.

brew reinstall postgresql

dafunkeemonkee
sumber
5
Yang ini melakukannya untuk saya di El Capitan
Sebastian Sastre
6
Masalah saya tampaknya terkait dengan instalasi python menggunakan brew
guyarad
6
Hati-hati melakukan ini jika Anda belum menggunakan Postgres versi terbaru. Anda harus menginstal ulang Postgres lama di samping yang baru dan kemudian melakukanpg_upgrade
dazonic
7
Ini sangat berat jika Anda tidak ingin kehilangan database lokal Anda. Saya beruntung dengan 'brew switch readline 6.3.8'
Christopher Johnson
4
Jika Anda berpikir menginstal ulang psql adalah langkah radikal untuk apa yang tampak seperti bug kecil, Anda tidak sendirian. Jawaban ini: stackoverflow.com/a/41476592/839876 tampaknya mengatasi masalah nyata yang ditangani sebagian besar jawaban ini.
frandroid
127

Masalah utamanya adalah postgresql Anda berusaha menemukan versi libreadline.6.2.dylibtetapi readlineis Anda7.0 , jadi hanya 7 lib yang ditautkan.

Saya tidak berpikir bahwa upgrade postgresql adalah ide yang bagus, itu tidak mudah dan dapat menyebabkan banyak masalah, terutama ketika Anda sudah memiliki data database.

Apa yang saya lakukan adalah mengganti versi readline. Ketika Anda memeriksa brew info readline, Anda akan menemukan versi yang berbeda, milik saya 6.3.8, jadi saya beralih ke versi itu dengan menjalankan:

$ brew switch readline 6.3.8

Itu akan berubah menjadi 6.3.8 dan membuat tautan:

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

Dalam hal ini, semua lib yang terhubung menjadi 6 versi, dan baris perintah berfungsi:

$ 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

Namun, jika Anda memiliki aplikasi yang berbeda menggunakan versi readline yang berbeda, saya pikir Anda harus mempertimbangkan untuk memutakhirkan.


Pembaruan: 06/02/2019

Bagaimana jika versi lama tidak diinstal?

Homebrewtidak menyediakan cara untuk menginstal rumus versi lama. Dan sejak v2.0.0, itu akan berjalan brew cleanupsebagai perilaku default setiap 30 hari. Oleh karena itu, Anda dapat secara tidak sengaja memperbarui brewdan menghapus versi lama.

Berikut langkah-langkah untuk menginstal versi lama:

  1. Pergi ke homebrew-coredirektori:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Periksa hash untuk Formula lama:
    $ git log master -- Formula/readline.rb
  1. Temukan versi nilai hash yang sesuai
    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. Periksa ke rumus lama:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Pasang kembali formula:
    $ brew reinstall readline
  1. Setel ulang repo

Dengan mengikuti langkah-langkah itu, Anda dapat menginstal ulang versi lama formula.

Stephen
sumber
1
Dan saya - jika Anda tidak memiliki dependensi lain pada readline 7 maka ini jelas merupakan pendekatan yang paling tidak mengganggu.
menggambar
ini berhasil juga untuk saya, menyelamatkan saya dari memperbarui post
Rich
Bekerja untuk saya juga ... solusi yang jauh lebih bersih daripada memperbarui seluruh databse
sromit
Kapan seseorang ingin beralih kembali ke versi apa pun readlineyang diinstal? Kelemahan lain apa yang ada untuk melakukan ini?
Kenny Evitt
Saya hanya memiliki satu readline yang diinstal, dan checkout lokal saya dari readline hanya berisi 8.0, dan log tidak memiliki komitmen versi yang lebih lama, bahkan setelah mengambil semuanya. Sepertinya tidak mungkin menginstal versi readline yang lama untuk saya, dan memutakhirkan postgres mungkin satu-satunya pilihan
Andy Ray
78

Jika situasinya Anda memiliki readline versi yang lebih tinggi katakanlah 7.0. Kamu bisa melakukan ini

cd /usr/local/opt/readline/lib    
ln libreadline.7.0.dylib libreadline.6.2.dylib
anvy zhang
sumber
5
Saya harus membuat tautan bernama "libreadline.6.dylib" tetapi ini adalah satu-satunya saran yang berfungsi untuk saya.
Mads Hoel
1
Ini bersamaan dengan brew uninstall --force gawkdan kemudian brew install gawkadalah apa yang membuat saya berdiri dan berlari. Anda mungkin juga bisabrew reinstall --force gawk
Csteele5
1
Bagus Saya menjalankan postgres 10.6 yang mengharapkan libreadline.7.dylib tapi saya baru saja menginstal pg_topyang meningkatkan libreadline ke 8.0 dan memutus psql. Saya menggunakan trik Anda, kecuali membuatnya menjadi symlink ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos
Luar biasa terima kasih. Ini bekerja pada MacOS Mojave tanpa harus menghapus dan menginstal ulang PostgreSQL (yang akan sangat menyusahkan).
crmpicco
46

Jika Anda belum menginstal readline, instal dulu:

brew install readline

Bagi saya, saya mendapatkan kesalahan ini, meskipun saya sudah menginstal readline. Menginstal ulang readline melakukan trik:

brew reinstall readline
Troy
sumber
6
menginstal ulang readline tidak melakukannya untuk saya, tetapi uninstall / install bashlakukan:brew install --build-from-source bash
whatbird
Saya menemukan bahwa saya harus menghapus semua verison dari readline terlebih dahulu (brew uninstall --force readline). Setelah saya instal ulang, saya harus memaksa tautannya dengan "brew link --force readline"
Wilhelm
Menginstal ulang bash adalah perbaikan untuk saya juga, tetapi dalam kasus saya, baris "direferensikan" dari bash disebutkan secara spesifik.
mbafford
Setelah menginstal MacOS Sierra, saya mengalami masalah ini. Saya melakukan keduanya brew reinstall readline(untuk mendapatkan minuman khusus Sierra) dan pada saat itu brew reinstall postgresql94,. Orang-orang mengatakan untuk menginstal ulang bash tetapi saya tidak pernah memulainya. Jadi jawaban ini dan jawaban yang dipilih sama-sama bekerja untuk saya.
risa_risa
brew instal ulang readline bekerja untuk saya setelah beralih ke versi lain (yang telah bekerja di masa lalu) tidak lagi berfungsi setelah memutakhirkan ke psql9.6
bkunzi01
31

Ini berhasil untuk saya

brew switch readline

Ini akan menampilkan versi yang telah Anda instal. Pilih satu dari mereka. Saya memilih 7.0.5

Saya kemudian berlari

brew switch readline 7.0.5

Versi readline diperbarui, dan psqlberjalan dengan lancar.

sindhu_sp
sumber
2
Juga bekerja untuk saya. psql mencoba memuat libreadline.7.dylib, tapi saya menggunakan readline 8.0.0. Beralih dari 8.0.0 ke 7.0.5 memecahkan masalah. Saya berharap membuat symlink (seperti yang dilakukan orang lain) juga akan berfungsi, jika saya ingin tetap menggunakan 8.0.0. Tetapi memiliki tautan versi yang lebih baru ke versi yang lebih lama adalah menyesatkan dan berpotensi menyebabkan masalah lain.
Dennis
Bagaimana Anda menemukan solusi ini? Saya sangat terkesan!
kuzdu
1
Saya mencoba yang sama, tetapi mendapat kesalahan berikut: readline tidak memiliki versi "7.0.5" di Cellar. Saya mencoba membuat install 7.0.5 readline, tetapi menunjukkan kesalahan berikut: Tidak ada formula dengan nama "7.0.5". @ Dennis
Mahesh Mesta
23

ini berhasil untuk saya

ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.dylib
Jon
sumber
Ini juga masalah saya. Saya tidak menggunakan minuman dan kehilangan tautan sym setelah pembaruan terbaru. Terima kasih!
Matt
Bagus! Kesalahan persis saya mengeluh tentang 6.2, perintah saya sedikit berbeda. Kesalahannya dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, jadi saya menggunakan ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier
20

Solusinya adalah dengan memaksa tautan readline lagi.

brew remove readline
brew install readline
brew link readline --force
Alex Palcuie
sumber
relink tidak berfungsi untuk saya, tetapi menginstal ulang postgresql berhasil.
Konstantin Tikhonov
14

Menurut saya masalahnya adalah tentang pembaruan paket readline. postgres mencoba menggunakan /usr/local/opt/readline/lib/libreadline.7.dylib dalam kasus saya. Jadi saya baru saja membuat symlink ke versi perpustakaan yang ada /usr/local/opt/readline/lib/libreadline.8.dylib.

bekerja untuk saya:

ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
Eugeny Maksimov
sumber
Ini berhasil untuk saya. Saya menggunakan psql versi 9.6.3 dan readline 8.
lacostenycoder
Memang ini adalah cara hacky untuk memperbaiki masalah ini, tetapi saya mengalami masalah ini setelah beberapa upgrade yang tidak berhubungan mendorong versi readline saya dari 7 ke 8, dan instal ulang Postgres lengkap bukanlah sesuatu yang ingin saya atasi saat ini. Ini adalah solusi tapak kecil dan risiko perubahan yang berdampak pada readline tampaknya kecil, jadi saya akan menggunakan ini untuk saat ini dan melanjutkan. Akan melaporkan kembali jika menyebabkan masalah apa pun di telepon.
Scott Roth
Terima kasih atas komentarnya, saya setuju masalah ini. Saya punya banyak masalah setelah memperbarui ke macos catalina, jadi saya tidak ingin menggali masalah ini dan menggunakan peretasan.
Eugeny Maksimov
8

Tidak ada solusi yang bekerja untuk saya; Saya harus lari:

brew upgrade bash

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

Anthony Dahanne
sumber
di el capitan saya setelah memutakhirkan ke 10.11.6 mendapatkan kesalahan ini juga setiap kali membuka aplikasi terminal, sudah diselesaikan dengan memutakhirkan bash
azul
6

Jawaban di atas tidak berhasil untuk saya, jadi saya ingin memposting apa yang akhirnya berhasil. Berdasarkan utas yang saya temukan di sini , saya harus mencopot pemasangan readline dan menginstalnya lagi tetapi dari sumber.

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

Setelah itu kesalahan psql hilang.

Tandai Pruce
sumber
5

Saya memiliki masalah ini, dan kunci bagi saya adalah untuk reinstallkeduanya readlinedan postgres. Setelah postgres diinstal ulang, masalah terselesaikan.

Micah Bales
sumber
5

Cara lain untuk memperbaiki psql adalah memperbarui postgresql yang hanya berjalan brew upgrade postgresqlkarena versi terbaru akan menggunakan versi readline 7.

zegomesjf
sumber
4

Saya mengalami masalah ini ketika saya memperbarui readline ke versi 7 secara tidak sengaja. Saya mencopot pemasangan readline dan mengingatkan saya pada 6.3.8 masih diinstal. Tampaknya versi 7 tidak bekerja dengan PSQL saat ini.

Yuanqi Cao
sumber
4

Saya mencoba semua perintah terminal ini dan tidak ada yang berhasil sehingga memutuskan untuk memperbaikinya secara manual ..

Buka finder dan tekan perintah + shift + g

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

Anda akan melihat banyak versi file-file ini

libreadline.6.dylib
libreadline.7.0.dylib

ganti nama mereka ke perpustakaan mana pun yang tidak dimuat

this is: /usr/local/opt/readline/lib/libreadline.6.2.dylib
mine was: /usr/local/opt/readline/lib/libreadline.6.dylib
Priince Abalogu
sumber
Bekerja dengan baik untuk saya
mike_dz
3

Saya mencoba semua jawaban preview, dan tidak ada yang berhasil. Satu-satunya hal yang benar-benar bekerja untuk saya adalah:

brew link postgresql

finx
sumber
2

Ini membantu saya: uninstall semua readline dan postgresql

ekspor CPPFLAGS = -I / usr / lokal / opt / readline / termasuk LDFLAGS ekspor = -L / usr / local / opt / readline / lib

dan instal posqtgresql

ph4n70m
sumber
2

Perintah berikut ini bekerja untuk saya:

brew reinstall postgresql
brew postgresql-upgrade-database
nilansh bansal
sumber
0

Anda bisa mencoba brew doctordan melihat apa yang dikatakannya.

Mungkin yang Anda butuhkan hanyalah brew link --overwrite bash.

Bagi saya, saya baru saja mengupgrade minuman sejak OS X EL Capitan memiliki beberapa peningkatan keamanan yang menyertakan /usrfolder saya . Selama peningkatan minuman, tautan bash rusak, dan inilah yang brew doctormemberitahu saya.

Jadi saya hanya berlari brew link --overwrite bashdan semuanya baik-baik saja.

Hustlion
sumber
0

Anda mungkin ingin memeriksa apakah Anda memiliki hal lain yang disinkronkan postgresql. Saya sebelumnya telah ditautkan ke paket postgres93 , yang, pada Mei 17, tidak didukung dan telah dihapus. Menghapus tautan itu dan kemudian menautkan kembali berfungsi untuk saya:

brew unlink postgresql93
brew link postgresql
sp89
sumber
0

Dalam kasus saya, jawaban yang benar tidak memperbaiki masalah.

Masalahnya dimulai setelah berjalan brew doctordan menambahkanexport PATH="/usr/local/bin:$PATH" ke file ~ / .zshrc saya.

Menghapus

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

dari ~/.zshrcmendapatkannya dipecahkan.

pengguna9869932
sumber
0

Untuk beberapa alasan yang tidak diketahui, ketika kesalahan ini muncul untuk versi Readline berikutnya, RVM saya sepertinya tidak dapat menemukan yang benar tidak peduli bagaimana saya menyinkronkannya, melemparkan:

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

Saya akhirnya menambahkan permata rb-readlineke Gemfile saya dan melakukan yang lainbundle install dan mulai bekerja.

Aku ... tidak tahu.

Erik Trautman
sumber