ไม่ได้โหลดไลบรารี: /usr/local/opt/readline/lib/libreadline.6.2.dylib


239

ฉันเพิ่งติดตั้ง posgresql กับ homebrew และเมื่อฉันไปพิมพ์คำสั่ง

psql

ฉันได้รับข้อผิดพลาดต่อไปนี้:

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

ไม่มีใครมีความคิดเกี่ยวกับสิ่งที่ผิดหรือเปล่า?


1
ดูเหมือนว่ามันจะเชื่อมโยงกับ readline แต่ไม่มีอยู่ คุณถอนการติดตั้ง readline หลังจากนั้น วิธีว่าคุณไม่ติดตั้ง PostgreSQL กับ homebrew? (ขั้นตอน commandS)
Craig Ringer

1
แก้ไขได้โดยstackoverflow.com/questions/42356309/ซึ่งมีคำตอบสั้น ๆ มากกว่าส่วนใหญ่ด้านล่าง (คุณอาจไม่ต้องติดตั้ง postgres ใหม่!)
thclark

คำตอบ:


373

ฉันได้รับข้อผิดพลาดเดียวกันแน่นอน แต่คำตอบข้างต้นไม่ได้ผลสำหรับฉัน ฉันต้องติดตั้ง postgresql ใหม่

brew reinstall postgresql


5
อันนี้ทำเพื่อฉันที่ El Capitan
Sebastian Sastre

6
ดูเหมือนว่าปัญหาของฉันเกี่ยวข้องกับการติดตั้ง python โดยใช้ brew
guyarad

6
โปรดใช้ความระมัดระวังหากคุณยังไม่ได้ใช้ Postgres เวอร์ชันล่าสุด คุณจะต้องติดตั้ง Postgres เก่าควบคู่ไปกับใหม่แล้วทำ apg_upgrade
dazonic

7
นี่เป็นเรื่องที่หนักมากหากคุณไม่ต้องการสูญเสียฐานข้อมูลท้องถิ่นของคุณ ฉันโชคดีกับ 'brew switch readline 6.3.8'
Christopher Johnson

4
หากคุณคิดว่าการติดตั้ง psql เป็นขั้นตอนที่รุนแรงสำหรับสิ่งที่ดูเหมือนว่าเป็นข้อบกพร่องเล็ก ๆ คุณไม่ได้อยู่คนเดียว คำตอบนี้: stackoverflow.com/a/41476592/839876ดูเหมือนจะแก้ปัญหาจริงที่คำตอบส่วนใหญ่ทำงานได้
frandroid

127

ปัญหาหลักคือ postgresql ของคุณพยายามค้นหาlibreadline.6.2.dylibแต่readlineรุ่นของคุณ7.0ดังนั้นจึงมีการเชื่อมโยง lib ของ 7 เท่านั้น

ฉันไม่คิดว่าการอัพเกรด postgresql เป็นความคิดที่ดีมันไม่ใช่เรื่องง่ายและอาจทำให้เกิดปัญหามากโดยเฉพาะเมื่อคุณมีฐานข้อมูลอยู่แล้ว

readlineสิ่งที่ฉันทำคือการสลับรุ่นของ เมื่อคุณตรวจสอบbrew info readlineคุณจะพบกับรุ่นที่แตกต่างกันเป็นของฉัน6.3.8ดังนั้นฉันจึงเปลี่ยนเป็นรุ่นนั้นโดยดำเนินการ:

$ brew switch readline 6.3.8

มันจะเปลี่ยนเป็น 6.3.8 และสร้างลิงค์:

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

ในกรณีนี้ lib ที่เชื่อมโยงทั้งหมดจะกลายเป็น 6 เวอร์ชันและบรรทัดคำสั่งทำงานได้

$ 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

อย่างไรก็ตามหากคุณมีแอพที่แตกต่างกันโดยใช้ readline เวอร์ชันต่าง ๆ ฉันคิดว่าคุณควรพิจารณาอัปเกรด


อัปเดต: 06/02/2019

จะทำอย่างไรถ้าไม่ได้ติดตั้งเวอร์ชั่นเก่า

Homebrewไม่มีวิธีในการติดตั้งสูตรเวอร์ชันเก่า และตั้งแต่ v2.0.0 มันจะทำงานbrew cleanupเป็นพฤติกรรมเริ่มต้นทุก ๆ 30 วัน ดังนั้นคุณอาจอัปเดตbrewและลบเวอร์ชันเก่าโดยไม่ตั้งใจ

นี่คือขั้นตอนในการติดตั้งเวอร์ชั่นเก่า:

  1. ไปที่homebrew-coreไดเรกทอรี:
    $ cd $(brew --repository)/Library/Taps/homebrew/homebrew-core
  1. ตรวจสอบแฮชสำหรับสูตรเก่า:
    $ git log master -- Formula/readline.rb
  1. ค้นหาเวอร์ชันแฮชที่สอดคล้องกัน
    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. ชำระเงินเป็นสูตรเก่า:
    $ git checkout 1dd4221c35716d6bec363ad3425ef93ffe7d9b9f Formula/readline.rb
  1. ติดตั้งสูตรอีกครั้ง:
    $ brew reinstall readline
  1. รีเซ็ต repo

ทำตามขั้นตอนเหล่านี้คุณสามารถติดตั้งสูตรเวอร์ชันเก่าอีกครั้ง


1
และฉัน - ถ้าคุณไม่มีการพึ่งพาอื่น ๆ ใน readline 7 แล้วนี่เป็นวิธีที่รบกวนน้อยที่สุด
วาด

สิ่งนี้ได้ผลกับฉันเช่นกันช่วยฉันจากการอัปเดต Postges
Rich

ทำงานให้ฉันด้วย ... โซลูชันที่สะอาดกว่าการอัปเดตฐานข้อมูลทั้งหมด
sromit

เมื่อใดที่จะต้องการเปลี่ยนกลับเป็นเวอร์ชันอื่นreadlineที่ติดตั้งไว้ มีข้อเสียอะไรอีกที่ทำเช่นนี้?
Kenny Evitt

ฉันมีการติดตั้ง readline เพียงอันเดียวและการชำระเงิน readline ในเครื่องของฉันมีเพียง 8.0 และบันทึกนั้นไม่มีเวอร์ชั่นเก่ากว่าแม้หลังจากดึงข้อมูลทุกอย่างแล้ว ดูเหมือนว่าเป็นไปไม่ได้ที่จะติดตั้ง readline เวอร์ชันเก่าสำหรับฉันและการอัพเกรด postgres อาจเป็นทางเลือกเดียวเท่านั้น
Andy Ray

78

หากสถานการณ์คือคุณมี readline เวอร์ชันที่สูงกว่าบอกว่า 7.0 คุณสามารถทำได้

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

5
ฉันต้องสร้างลิงค์ชื่อ "libreadline.6.dylib" แต่นี่เป็นคำแนะนำเดียวที่เหมาะกับฉัน
Mads Hoel

1
สิ่งนี้ประกอบกับbrew uninstall --force gawkและbrew install gawkเป็นสิ่งที่ทำให้ฉันตื่นตัว คุณอาจจะสามารถbrew reinstall --force gawk
Csteele5

1
สิ่งที่ดี. ฉันใช้ postgres 10.6 ซึ่งคาดว่า libreadline.7.dylib แต่ฉันเพิ่งติดตั้งpg_topซึ่งอัพเกรด libreadline เป็น 8.0 และ psql ที่เสียหาย ฉันใช้กลอุบายของคุณยกเว้นทำให้มันเป็น symlink ln -s libreadline.8.0.dylib libreadline.7.dylib
Davos

ยอดเยี่ยมขอบคุณ สิ่งนี้ใช้ได้กับ MacOS Mojave โดยไม่ต้องถอนการติดตั้งและติดตั้ง PostgreSQL อีกครั้ง (ซึ่งน่าจะเป็นความเจ็บปวดอย่างแท้จริง)
crmpicco

46

หากคุณไม่ได้ติดตั้ง readline ไว้ให้ทำการติดตั้งก่อน:

brew install readline

สำหรับฉันฉันได้รับข้อผิดพลาดนี้แม้ว่าฉันได้ติดตั้ง readline แล้วก็ตาม เคล็ดลับการติดตั้ง readline อีกครั้งได้ทำการหลอกลวง:

brew reinstall readline

6
readline ที่ติดตั้งใหม่ไม่ได้ทำเพื่อฉัน แต่ถอนการติดตั้ง / ติดตั้งbashทำได้:brew install --build-from-source bash
whatbird

ฉันพบว่าฉันต้องลบ readline ทั้งหมดก่อน (ชงถอนการติดตั้ง - บังคับ readline) หลังจากติดตั้งใหม่ฉันต้องบังคับให้เชื่อมโยงกับ "ชงลิงค์
วิลเฮล์ม

การติดตั้ง bash ใหม่เป็นการแก้ไขสำหรับฉันเช่นกัน แต่ในกรณีของฉันบรรทัด "อ้างอิงจาก" กล่าวถึงการทุบตีโดยเฉพาะ
mbafford

หลังจากติดตั้ง MacOS Sierra ฉันพบปัญหานี้แล้ว ฉันไม่ได้ทั้งสองbrew reinstall readline(ที่จะได้รับการชงเซียที่เฉพาะเจาะจง) brew reinstall postgresql94และในขณะที่มัน มีคนพูดว่าติดตั้งทุบตีใหม่ แต่ฉันไม่เคยเริ่มต้นด้วยซ้ำ ดังนั้นคำตอบนี้และคำตอบที่เลือกนั้นใช้ได้ทั้งฉัน
risa_risa

Brew readline ที่ติดตั้งใหม่ทำงานให้ฉันหลังจากเปลี่ยนไปใช้เวอร์ชันอื่น (ซึ่งเคยทำงานในอดีต) ไม่ทำงานอีกต่อไปหลังจากอัปเกรดเป็น psql9.6
bkunzi01

31

สิ่งนี้ใช้ได้สำหรับฉัน

brew switch readline

นี่จะแสดงเวอร์ชันที่คุณติดตั้งไว้ เลือกหนึ่งอันจากพวกเขา ฉันเลือก 7.0.5

จากนั้นฉันก็วิ่ง

brew switch readline 7.0.5

รุ่น readline ได้รับการอัปเดตและpsqlดำเนินไปอย่างราบรื่น


2
ทำงานให้ฉันด้วย psql พยายามโหลดlibreadline.7.dylibแต่ฉันใช้ readline 8.0.0 การเปลี่ยนจาก 8.0.0 เป็น 7.0.5 ช่วยแก้ปัญหาได้ ฉันคาดหวังว่าการสร้าง symlink (อย่างที่คนอื่นทำ) จะใช้ได้ถ้าฉันต้องการอยู่ที่ 8.0.0 แต่การมีลิงค์เวอร์ชั่นใหม่กว่าไปยังเวอร์ชั่นที่เก่ากว่านั้นทำให้เข้าใจผิดและอาจทำให้เกิดปัญหาอื่น ๆ
Dennis

คุณพบโซลูชันนี้ได้อย่างไร ฉันประทับใจมาก!
kuzdu

1
ฉันลองเหมือนกัน แต่ได้รับข้อผิดพลาดต่อไปนี้: readline ไม่มีรุ่น "7.0.5" ในห้องใต้ดิน ฉันพยายามชงติดตั้ง readline 7.0.5 แต่มันแสดงข้อผิดพลาดต่อไปนี้: ไม่มีสูตรที่ใช้ชื่อ "7.0.5" @ Dennis
Mahesh Mesta

23

สิ่งนี้ใช้ได้สำหรับฉัน

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

นี่คือปัญหาของฉันเช่นกัน ฉันไม่ได้ใช้การชงและไม่มีการเชื่อมโยง sym หลังจากการปรับปรุงล่าสุด ขอบคุณ!
แมตต์

ดี! ข้อผิดพลาดที่แน่นอนของฉันบ่นเกี่ยวกับ 6.2 คำสั่งของฉันแตกต่างกันเล็กน้อย ข้อผิดพลาดที่เป็นดังนั้นฉันใช้dyld: Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib ln -s /usr/local/opt/readline/lib/libreadline.7.0.dylib /usr/local/opt/readline/lib/libreadline.6.2.dylib
Tyler Collier

20

ทางออกคือการบังคับให้เชื่อมโยงของ readline อีกครั้ง

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

relink ใช้งานไม่ได้สำหรับฉัน แต่การติดตั้ง postgresql ใหม่
Konstantin Tikhonov

14

สำหรับฉันดูเหมือนว่าปัญหาเกี่ยวกับแพคเกจ readline ของการปรับปรุง postgres พยายามใช้ / usr/local/opt/readline/lib/libreadline.7.dylib ในกรณีของฉัน ดังนั้นฉันเพิ่งสร้าง symlink ไปยังไลบรารี่รุ่นปัจจุบัน / usr/local/opt/readline/lib/libreadline.8.dylib

ทำงานให้ฉัน:

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

สิ่งนี้ใช้ได้สำหรับฉัน ฉันใช้ psql รุ่น 9.6.3 และ readline 8
lacostenycoder

เป็นที่ยอมรับว่าเป็นวิธีแฮ็กที่จะแก้ไขปัญหา แต่ฉันพบปัญหานี้หลังจากการอัปเกรดที่ไม่เกี่ยวข้องบางอย่างผลักเวอร์ชัน readline ของฉันจาก 7 เป็น 8 และ Postgres แบบเต็มติดตั้งใหม่ไม่ใช่สิ่งที่ฉันต้องการแก้ไขปัญหาในตอนนี้ นี่เป็นโซลูชันขนาดเล็กและความเสี่ยงของบางสิ่งบางอย่างที่มีผลกระทบต่อการเปลี่ยนแปลงใน readline ดูเหมือนจะน้อยมากดังนั้นตอนนี้ฉันจะดำเนินเรื่องนี้ต่อไป จะรายงานกลับหากมีปัญหาใด ๆ เกิดขึ้นในบรรทัด
Scott Roth

ขอบคุณสำหรับความคิดเห็นฉันเห็นด้วยกับปัญหานี้ ฉันมีปัญหามากมายหลังจากอัปเดตเป็น macos catalina ดังนั้นฉันไม่ต้องการขุดลงในปัญหานี้และใช้แฮ็ค
Eugeny Maksimov

8

ไม่มีวิธีแก้ปัญหาเหล่านั้นที่เหมาะกับฉัน ฉันต้องวิ่ง:

brew upgrade bash

จาก: https://github.com/Homebrew/homebrew-core/issues/5799


ใน El Capitan ของฉันหลังจากที่อัพเกรด 10.11.6 มีข้อผิดพลาดนี้มากเกินไปในแต่ละครั้งที่เปิดแอปพลิเค terminal, แก้ไขแล้วโดยการอัพเกรดทุบตี
Azul

6

คำตอบข้างต้นไม่ได้ผลสำหรับฉันดังนั้นฉันต้องการโพสต์สิ่งที่ได้ผลในที่สุด จากหัวข้อที่ฉันพบที่นี่ฉันต้องถอนการติดตั้ง readline และติดตั้งอีกครั้ง

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

หลังจากนั้นข้อผิดพลาด psql ก็หายไป


5

ผมมีปัญหานี้และที่สำคัญสำหรับฉันคือการreinstallที่ทั้งสองและreadline postgresเมื่อติดตั้ง postgres ใหม่ปัญหาได้รับการแก้ไข


5

อีกวิธีในการแก้ไข psql ก็คือการอัพเดต postgresql ที่กำลังทำงานอยู่ brew upgrade postgresqlเนื่องจากเวอร์ชันล่าสุดจะใช้ readline 7 version


4

ฉันมีปัญหานี้เมื่อฉันอัปเดต readline เป็นเวอร์ชัน 7 โดยไม่ได้ตั้งใจ ฉันถอนการติดตั้ง readline และก่อเตือนฉัน 6.3.8 ยังคงติดตั้ง ดูเหมือนว่ารุ่น 7 จะไม่ทำงานกับ PSQL ในขณะนี้


4

ฉันลองใช้คำสั่งเทอร์มินัลเหล่านี้และไม่มีอะไรทำงานเลยตัดสินใจแก้ไขด้วยตนเอง ..

เปิดตัวค้นหา และกด คำสั่ง + shift + g

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

คุณควรเห็นไฟล์เหล่านี้หลายเวอร์ชัน

libreadline.6.dylib
libreadline.7.0.dylib

เปลี่ยนชื่อใด ๆ ของพวกเขาเป็นห้องสมุดใดที่ไม่ได้โหลด

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

ทำงานได้ดีสำหรับฉัน
mike_dz

3

ฉันลองคำตอบตัวอย่างทั้งหมดและไม่มีอะไรทำงาน สิ่งเดียวที่ได้ผลสำหรับฉันคือ:

brew link postgresql


2

สิ่งนี้ช่วยฉันได้: ถอนการติดตั้ง readline และ postgresql ทั้งหมด

ส่งออก CPPFLAGS = -I / usr / local / opt / readline / รวมการส่งออก LDFLAGS = -L / usr / local / opt / readline / lib

และติดตั้ง posqtgresql




0

คุณสามารถลองbrew doctorและดูว่ามันพูดอะไร

brew link --overwrite bashอาจจะเป็นสิ่งที่คุณต้องการคือ

สำหรับฉันฉันเพิ่งอัพเกรดชงตั้งแต่ OS X EL Capitan มีการอัพเกรดความปลอดภัยบางอย่างที่เชื่อมโยง/usrโฟลเดอร์ของฉัน ในระหว่างการอัพเกรด Brew ลิงก์ bash นั้นขาดและนี่คือสิ่งที่brew doctorบอกฉัน

ดังนั้นฉันจึงวิ่งbrew link --overwrite bashและทุกอย่างเรียบร้อยดี


0

คุณอาจต้องการตรวจสอบว่าคุณมีสิ่งอื่นที่เชื่อมโยงpostgresqlหรือไม่ ก่อนหน้านี้ฉันเคยเชื่อมโยงกับแพ็คเกจpostgres93ซึ่งเมื่อวันที่ 17 พฤษภาคมไม่ได้รับการสนับสนุนและถูกลบออกไป การลบลิงก์นั้นจากนั้นทำการลิงก์อีกครั้งสำหรับฉัน:

brew unlink postgresql93
brew link postgresql

0

ในกรณีของฉันคำตอบที่ถูกต้องไม่สามารถแก้ปัญหาได้

ปัญหาเริ่มต้นหลังจากทำงานbrew doctorและเพิ่มexport PATH="/usr/local/bin:$PATH"ลงในไฟล์ ~ / .zshrc ของฉัน

การถอด

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

จาก~/.zshrcได้รับการแก้ไข


0

ด้วยเหตุผลบางอย่างที่ไม่ทราบสาเหตุเมื่อข้อผิดพลาดนี้ปรากฏขึ้นสำหรับ Readline รุ่นถัดไป RVM ของฉันดูเหมือนจะไม่สามารถค้นหาตำแหน่งที่ถูกต้องได้ไม่ว่าฉันจะเชื่อมโยงมันเข้าด้วยกันโดยการโยน:

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

ฉันลงเอยด้วยการเพิ่มอัญมณีrb-readlineใน Gemfile ของฉันและทำสิ่งอื่นbundle installและมันก็เริ่มทำงานได้

ฉัน ... ไม่รู้สิ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.