Thư viện không được tải: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

Tôi vừa cài đặt posgresql với homebrew và khi tôi tiếp tục gõ lệnh

psql

Tôi nhận được lỗi sau đây:

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

Có ai có bất cứ ý tưởng về những gì sai?


1
Có vẻ như nó được liên kết với readline, nhưng nó không có mặt. Bạn đã gỡ cài đặt readline sau đó? Làm thế nào chính xác đã bạn cài đặt PostgreSQL với homebrew? (Các bước, lệnh).
Craig Ringer

1
Có khả năng được giải quyết bằng stackoverflow.com/questions/42356309/ mà có câu trả lời ngắn gọn hơn hầu hết các câu hỏi dưới đây (có lẽ bạn không cần phải cài đặt lại postgres!)
thclark 20/12/18

Câu trả lời:


373

Tôi đã nhận được cùng một lỗi chính xác, nhưng các câu trả lời ở trên không làm việc cho tôi. Tôi đã phải cài đặt lại postgresql.

brew reinstall postgresql


5
Điều này đã làm điều đó cho tôi trên El Capitan
Sebastian Sastre

6
Vấn đề của tôi dường như có liên quan đến việc cài đặt python bằng cách sử dụng brew
Guyarad

6
Hãy cẩn thận làm điều này nếu bạn chưa có phiên bản Postgres mới nhất. Bạn sẽ cần phải cài đặt lại Postgres cũ cùng với cái mới và sau đó thực hiệnpg_upgrade
dazonic

7
Điều này rất nặng tay nếu bạn không muốn mất cơ sở dữ liệu địa phương. Tôi đã có may mắn với 'brew switch readline 6.3.8'
Christopher Johnson

4
Nếu bạn nghĩ rằng cài đặt lại psql là một bước cơ bản cho những gì có vẻ như là một lỗi nhỏ, thì bạn không đơn độc. Câu trả lời này: stackoverflow.com/a/41476592/839876 dường như giải quyết vấn đề thực sự mà hầu hết các câu trả lời này hoạt động xung quanh.
frandroid

127

Vấn đề chính là postgresql của bạn đã cố gắng tìm libreadline.6.2.dylibnhưng readlinephiên bản của bạn 7.0, vì vậy chỉ có lib của 7 được liên kết.

Tôi không nghĩ việc nâng cấp postgresql là một ý tưởng hay, nó không dễ dàng và có thể gây ra nhiều vấn đề, đặc biệt là khi bạn đã có dữ liệu cơ sở dữ liệu.

Những gì tôi làm, là để chuyển đổi phiên bản của readline. Khi bạn kiểm tra brew info readline, bạn sẽ tìm thấy các phiên bản khác nhau, là của tôi 6.3.8, vì vậy tôi chuyển sang phiên bản đó bằng cách thực hiện:

$ brew switch readline 6.3.8

Nó sẽ thay đổi thành 6.3.8 và tạo liên kết:

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

Trong trường hợp này, tất cả các lib được liên kết trở thành 6 phiên bản và dòng lệnh hoạt động:

$ 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

Tuy nhiên, nếu bạn có các ứng dụng khác nhau sử dụng phiên bản readline khác nhau, tôi nghĩ bạn nên xem xét nâng cấp.


Cập nhật: 06/02/2019

Nếu phiên bản cũ không được cài đặt thì sao?

Homebrewkhông cung cấp cách cài đặt công thức phiên bản cũ. Và kể từ v2.0.0, nó sẽ chạy brew cleanupnhư các hành vi mặc định cứ sau 30 ngày. Do đó, bạn có thể vô tình cập nhật brewvà xóa phiên bản cũ.

Dưới đây là các bước để cài đặt phiên bản cũ:

  1. Chuyển đến homebrew-corethư mục:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. Kiểm tra hàm băm cho Công thức cũ:
    $ git log master -- Formula/readline.rb
  1. Tìm phiên bản tương ứng của giá trị băm
    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. Thanh toán theo công thức cũ:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. Cài đặt lại công thức:
    $ brew reinstall readline
  1. Đặt lại repo

Thực hiện theo các bước đó, bạn có thể cài đặt lại phiên bản công thức cũ.


1
Và tôi - nếu bạn không có sự phụ thuộc nào khác vào đường dẫn số 7 thì đây chắc chắn là cách tiếp cận ít gây rối nhất.
đã vẽ

này làm việc cho tôi cũng có, cứu tôi khỏi postges cập nhật
Giàu

Làm việc cho tôi cũng vậy ... giải pháp sạch hơn nhiều so với cập nhật toàn bộ cơ sở dữ liệu
sromit

Khi nào người ta muốn chuyển trở lại bất kỳ phiên bản nào khác readlineđã được cài đặt? Những nhược điểm khác là gì để làm điều này?
Kenny Evitt

Tôi chỉ có một dòng đọc được cài đặt và kiểm tra cục bộ của dòng chỉ đọc 8.0 và nhật ký không có bất kỳ cam kết phiên bản cũ nào, ngay cả sau khi tìm nạp mọi thứ. Có vẻ như tôi không thể cài đặt phiên bản cũ hơn cho tôi và nâng cấp bưu điện có thể là lựa chọn duy nhất
Andy Ray

78

Nếu tình hình là bạn có một phiên bản cao hơn thì đọc 7.0. Bạn có thể làm được việc này

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

5
Tôi đã phải tạo liên kết có tên "libreadline.6.dylib" nhưng đây là gợi ý duy nhất phù hợp với tôi.
Mads Hoel

1
Điều này kết hợp với brew uninstall --force gawkvà sau đó brew install gawklà những gì đã đưa tôi lên và chạy. Bạn cũng có thể chỉ cầnbrew reinstall --force gawk
Csteele5

1
Tốt một. Tôi đang chạy postgres 10.6, dự kiến ​​libreadline.7.dylib nhưng tôi vừa cài đặt pg_topđã nâng cấp libreadline lên 8.0 và phá vỡ psql. Tôi đã sử dụng mánh khóe của bạn, ngoại trừ biến nó thành một liên kết tượng trưng ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos

Cảm ơn vô cùng. Điều này hoạt động trên MacOS Mojave mà không phải gỡ cài đặt và cài đặt lại PostgreSQL (đây sẽ là một nỗi đau thực sự).
crmpicco

46

Nếu bạn chưa cài đặt readline, trước tiên hãy cài đặt nó:

brew install readline

Đối với tôi, tôi đã nhận được lỗi này, mặc dù tôi đã cài đặt sẵn đường dẫn. Cài đặt lại readline đã thực hiện thủ thuật:

brew reinstall readline

6
cài đặt lại readline không làm điều đó cho tôi, nhưng gỡ cài đặt / cài đặt bashđã làm:brew install --build-from-source bash
whatbird

Tôi thấy rằng trước tiên tôi phải xóa tất cả các bản tóm tắt của readline (gỡ cài đặt brew - Force readline). Sau khi tôi cài đặt lại, tôi phải buộc liên kết nó với "brew link - Force readline"
Wilhelm

Cài đặt lại bash cũng là cách khắc phục đối với tôi, nhưng trong trường hợp của tôi, dòng "tham chiếu từ" được đề cập cụ thể là bash.
mbafford

Sau khi cài đặt MacOS Sierra, tôi đã gặp phải vấn đề này. Tôi đã làm cả hai brew reinstall readline(để có được loại bia đặc trưng của Sierra) và trong khi đó brew reinstall postgresql94. Mọi người nói để cài đặt lại bash nhưng tôi không bao giờ có nó để bắt đầu. Vì vậy, câu trả lời này và câu trả lời được lựa chọn đều làm việc cho tôi.
risa_risa

brew cài đặt lại readline làm việc cho tôi sau khi chuyển sang các phiên bản khác (đã hoạt động trong quá khứ) không còn hoạt động sau khi nâng cấp lên psql9.6
bkunzi01

31

Điều này làm việc cho tôi

brew switch readline

Điều này sẽ hiển thị các phiên bản bạn đã cài đặt. Chọn một trong số họ. Tôi đã chọn 7.0.5

Sau đó tôi chạy

brew switch readline 7.0.5

Phiên bản readline đã được cập nhật và psqlchạy trơn tru.


2
Cũng làm việc cho tôi. psql đã cố tải libreadline.7.dylib, nhưng tôi đang sử dụng readline 8.0.0. Chuyển từ 8.0.0 sang 7.0.5 đã giải quyết được vấn đề. Tôi hy vọng rằng việc tạo một liên kết tượng trưng (như những người khác đã làm) cũng sẽ hoạt động, nếu tôi muốn ở lại 8.0.0. Nhưng có một phiên bản mới hơn liên kết đến một phiên bản cũ hơn là sai lệch và có khả năng gây ra các vấn đề khác.
Dennis

Làm thế nào bạn tìm thấy giải pháp này? Tôi rất ấn tượng!
kuzdu

1
Tôi đã thử tương tự, nhưng gặp lỗi sau: readline không có phiên bản "7.0.5" trong Hầm. Tôi đã thử cài đặt brewline 7.0.5, nhưng nó hiển thị lỗi sau: Không có công thức có sẵn với tên "7.0.5". @ Dennis
Mahesh Mesta

23

cái này làm việc cho tôi

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

Đây là vấn đề của tôi là tốt. Tôi đã không sử dụng brew và bị thiếu liên kết sym sau khi cập nhật mới nhất. Cảm ơn!
Matt

Đẹp! Lỗi chính xác của tôi phàn nàn về 6.2, lệnh của tôi hơi khác một chút. Lỗi là dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib, vì vậy tôi đã sử dụng ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib.
Tyler Collier

20

Giải pháp là buộc liên kết lại đường đọc lại.

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

Relink không hoạt động với tôi, nhưng cài đặt lại postgresql đã hoạt động.
Konstantin Tikhonov

14

Dường như với tôi vấn đề là về gói cập nhật. postgres đã thử sử dụng /usr/local/opt/readline/lib/libreadline.7.dylib trong trường hợp của tôi. Vì vậy, tôi chỉ tạo một liên kết tượng trưng đến phiên bản hiện có của thư viện /usr/local/opt/readline/lib/libreadline.8.dylib.

đã làm cho tôi:

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

Điều này làm việc cho tôi. Tôi đang dùng phiên bản psql 9.6.3 và readline 8.
lacostenycoder

Phải thừa nhận rằng đây là một cách khó khăn để khắc phục sự cố, nhưng tôi đã gặp phải vấn đề này sau khi một số nâng cấp không liên quan đã đẩy phiên bản đọc của tôi từ 7 lên 8, và cài đặt lại Postgres đầy đủ không phải là điều tôi muốn giải quyết ngay bây giờ. Đây là một giải pháp dấu chân nhỏ và nguy cơ thay đổi mức độ ảnh hưởng trong đường đọc có vẻ nhỏ, vì vậy tôi sẽ tiếp tục với điều này ngay bây giờ và tiếp tục. Sẽ báo cáo lại nếu nó gây ra bất kỳ vấn đề nào.
Scott Roth

Cảm ơn đã bình luận, tôi đồng ý vấn đề này. Tôi đã gặp rất nhiều vấn đề sau khi cập nhật lên macos catalina, vì vậy tôi không muốn tìm hiểu vấn đề này và sử dụng bản hack.
Eugeny Maksimov


6

Câu trả lời ở trên không hiệu quả với tôi vì vậy tôi muốn đăng những gì cuối cùng đã hoạt động. Dựa trên một chủ đề tôi tìm thấy ở đây , tôi đã phải gỡ cài đặt readline và cài đặt lại nhưng từ nguồn.

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

Sau đó, lỗi psql đã biến mất.


5

Tôi đã có vấn đề này, và chìa khóa cho tôi là reinstallcả hai readlinepostgres. Sau khi postgres được cài đặt lại, vấn đề đã được giải quyết.


5

Một cách khác để sửa lỗi psql là cập nhật postgresql chỉ chạy brew upgrade postgresqlvì phiên bản mới nhất sẽ sử dụng phiên bản readline 7.


4

Tôi gặp vấn đề này khi tôi cập nhật tình trạng đọc lên phiên bản 7 một cách tình cờ. Tôi đã gỡ cài đặt readline và brew nhắc tôi 6.3.8 vẫn được cài đặt. Có vẻ như phiên bản 7 không hoạt động với PSQL vào lúc này.


4

Tôi đã thử tất cả các lệnh đầu cuối này và không có gì hoạt động nên quyết định sửa nó bằng tay ..

Mở công cụ tìm và nhấn lệnh + shift + g

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

bạn sẽ thấy nhiều phiên bản của những tập tin này

libreadline.6.dylib
libreadline.7.0.dylib

đổi tên bất kỳ trong số chúng thành thư viện nào không được tải

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

Hoạt động tốt với tôi
mike_dz

3

Tôi đã thử tất cả các câu trả lời xem trước, và không có gì làm việc. Điều duy nhất thực sự hiệu quả với tôi là:

brew link postgresql


2

Điều này đã giúp tôi: gỡ cài đặt tất cả readline và postgresql

xuất CPPFLAGS = -I / usr / local / opt / readline / bao gồm xuất LDFLAGS = -L / usr / local / opt / readline / lib

và cài đặt posqtgresql


2

Các lệnh sau làm việc cho tôi:

brew reinstall postgresql
brew postgresql-upgrade-database


0

Bạn có thể thử brew doctorvà xem những gì nó nói.

Có thể tất cả những gì bạn cần là brew link --overwrite bash.

Đối với tôi, tôi vừa nâng cấp brew vì OS X EL Capitan có một số nâng cấp bảo mật liên quan đến /usrthư mục của tôi . Trong quá trình nâng cấp bia, liên kết bash bị hỏng và đây là những gì brew doctorcho tôi biết.

Vì vậy, tôi chỉ cần chạy brew link --overwrite bashvà mọi thứ đều ổn.


0

Bạn có thể muốn kiểm tra nếu bạn có bất cứ điều gì khác được liên kết với postgresql. Trước đây tôi đã liên kết với gói postgres93 , tính đến ngày 17 tháng 5, không được hỗ trợ và đã bị xóa. Xóa liên kết đó và sau đó làm lại cho tôi:

brew unlink postgresql93
brew link postgresql

0

Trong trường hợp của tôi, câu trả lời đúng không khắc phục được vấn đề.

Sự cố bắt đầu sau khi chạy brew doctorvà thêm export PATH="/usr/local/bin:$PATH"vào tệp ~ / .zshrc của tôi.

Đang gỡ bỏ

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

từ ~/.zshrcđã giải quyết nó.


0

Vì một số lý do không rõ, khi lỗi này xuất hiện cho phiên bản Readline tiếp theo, RVM của tôi dường như không thể xác định đúng vị trí cho dù tôi có liên kết với nó như thế nào, ném:

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

rb-readlineCuối cùng tôi đã thêm đá quý vào Gemfile của mình và làm một cái khác bundle installvà nó bắt đầu hoạt động.

Tôi ... chỉ không biết.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.