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?


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


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.


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

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

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.


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

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

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

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


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.


5

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


5

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


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.


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

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


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


2

Perintah berikut ini bekerja untuk saya:

brew reinstall postgresql
brew postgresql-upgrade-database


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.


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

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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.