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


112

เมื่อฉันลองเรียกใช้rails consoleฉันได้รับข้อผิดพลาดนี้:

/Users/TuzsNewMacBook/.rvm/gems/ruby-2.3.7/gems/bootsnap-1.3.2/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require':
 dlopen(/Users/TuzsNewMacBook/.rvm/rubies/ruby-2.3.7/lib/ruby/2.3.0/x86_64-darwin18/readline.bundle, 9): 
Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

การค้นหาอย่างรวดเร็วทำให้ฉันมาที่โพสต์นี้และฉันได้ลองทำบางสิ่ง:

brew reinstall postgresql (นี่คือฐานข้อมูลสำหรับโครงการนี้)

และ

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

(Readline เวอร์ชันของฉันคือ 8)

และ brew link readline --force

แต่ไม่มีสิ่งเหล่านี้ได้รับการแก้ไข

ฉันเพิ่งเพิ่มpry-coolline, guardและguard-livereloadอัญมณีให้กับโครงการของฉันหากที่ทำให้แตกต่างใด ๆ (รางคอนโซลปรับโหลดก่อนนั้น) ฉันใช้ macOS รุ่นล่าสุด

(อัปเดต) ฉันใช้ pry rail เป็นคอนโซลรางของฉันถ้ามันสร้างความแตกต่างได้

ความช่วยเหลือใด ๆ ขอบคุณ.


1
พยายามที่จะbrew reinstall readline
MrYoshiji

ไม่ได้ผลขอบคุณ
Jonathan Tuzman

ทำงานให้ฉัน @MrYoshiji! ขอบคุณ!
ปอนเซอร์

คำตอบ:


378

/usr/local/opt/readline/lib/libreadline.7.dylibข้อผิดพลาดที่ดูเหมือนว่าจะถูกโยนเมื่อค้นหา

คุณเคยลอง symlink หรือยัง?

สิ่งที่ชอบ:

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

เพิ่งลองใช้บน macOS Mojave, Ruby 2.5.3p105 และ Rails 5.2.2 และใช้งานได้


ขอบคุณ Hawz เพิ่งลองใช้แล้วไม่ได้ผล ฉันคิดว่าฉันเคยลองสิ่งนี้มาก่อนเช่นกัน ฉันต้องบอกว่า symlink lnนั้นไม่ใช่สิ่งที่ฉันรู้อะไรเกี่ยวกับ: /
Jonathan Tuzman

6
ฉันทำงานให้ฉัน บางที @JonathanTuzman คุณไม่ได้อยู่ใน dir ที่ดี? cd /usr/local/opt/readline/lib
Ulysse BN

7
ต้องbrew link readline --forceสร้างลิงก์ใน/usr/local/opt/readline/lib.
Candland

ฉันจะให้คุณ +10 ถ้าทำได้ ขอบคุณ!
eos87

คำตอบที่แท้จริงคือbrew link readline --forceCandland ซึ่งเหมาะกับฉัน
Rakib Fiha

42

การติดตั้งเวอร์ชัน Ruby ของฉันใหม่ดูเหมือนจะได้รับการแก้ไขแล้ว:

rvm reinstall 2.3.7

11
นี่คือคำตอบหากคุณใช้ rvm เพื่อติดตั้งทับทิม หากเวอร์ชันทับทิมของคุณถูกคอมไพล์เทียบกับเวอร์ชัน Readline ที่ไม่มีอยู่ในระบบของคุณแล้วคุณควรคอมไพล์ทับทิมใหม่เพื่อเชื่อมโยงกับเวอร์ชันใหม่ ฉันเพิ่งพบปัญหานี้ด้วยตัวเองและลองทุกอย่างยกเว้น symlink readline.8.dylib เพื่อยืนใน readline.7.dylib (ซึ่งดูเหมือนจะเป็นความคิดที่ไม่ดีจริงๆแม้ว่าจะดูเหมือนว่าจะได้ผลสำหรับทุกคนส่วนใหญ่ก็ตาม แต่การโหวตคำตอบนั้น .)
Kingdon

4
ฉันใช้ rbenv และใช้ได้ผลrbenv install 2.5.1กับฉันในบริบทของฉัน สิ่งนี้ดำเนินไปด้านข้างหลังจากที่ฉันวิ่งsudo xcode-select -s /Library/Developer/CommandLineToolsไปแก้ไขปัญหาที่พบที่อื่น fwiw
somedirection

1
หากคุณใช้บันเดิลเลอร์คุณอาจพบในภายหลังว่าคุณจำเป็นต้องbundle installติดตั้งอัญมณีใหม่ที่มีนามสกุลดั้งเดิม
ฟอง

27

คุณสามารถลอง

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

คุณมาถูกทางแล้ว แต่ดูเหมือนว่ารางจะมองหา libreadline.7.dylib และ libreadline.7.dylib ไม่อยู่ในโฟลเดอร์


1
ปัญหาจะปรากฏขึ้นอีกครั้งเมื่อฉันเรียกใช้ 'การอัปเกรดการชง' แต่วิธีนี้ใช้งานได้ดีและแก้ไขได้
Iwan B.

17

ใช่คำตอบที่ดีที่สุดคือการติดตั้งใหม่

คุณสามารถรับเวอร์ชันได้อย่างง่ายดายโดยพิมพ์:

ruby -v

ด้วยrbenvคำสั่งคือ:

rbenv install 2.3.7

กับrvm:

rvm reinstall 2.3.7

การเรียกใช้rbenv install <ruby-version>ล้มเหลวด้วย"คราด" จากความขัดแย้งของคราดกับการเรียกใช้งานที่ติดตั้งจากข้อขัดแย้งredis-rack ฉันต้องวิ่งrbenv uninstall <ruby-version> && rbenv install <ruby-version>
Hirurg103

7

วิธีง่ายๆที่ไม่เกี่ยวข้องกับการสร้าง RVM gemset หรือ sym-linked libraries ของคุณขึ้นมาใหม่

เพิ่มใน Gemfile ของคุณ:

gem 'rb-readline'

หากคุณกำลังทำกลุ่มบันเดิลเลอร์

group :development do
  gem 'rb-readline'
end

จากนั้นเรียกใช้

> bundle

โปรดแจ้งให้เราทราบหากไม่ได้ผล


4

ส่วนใหญ่มักเกิดในแอปพลิเคชัน Ruby ซึ่งเกิดจากอัญมณีที่มีนามสกุล (อัญมณีที่กล่าวว่า "Building native extensions .. ") ซึ่งสร้างขึ้นโดยใช้เวอร์ชันเฉพาะในกรณีreadlineนี้

โดยทั่วไปมีสองวิธี:

คุณสามารถเชื่อมโยงอัญมณีเวอร์ชัน 8 กับเวอร์ชันที่ขาดหายไปได้ วิธีนี้จะได้ผลในหลาย ๆ กรณี แต่ถ้าความเข้ากันได้แบบย้อนกลับเสียก็จะไม่

หรือถ้าอัญมณีจริงสนับสนุน 8 รุ่นคุณสามารถติดตั้งที่เฉพาะเจาะจงอัญมณีหรือ "เก่าแก่" gem pristine --allมันโดยการเรียกใช้

แก้ไข : ในขอบเขตของ "สิ่งที่ฉันได้ลองแล้ว" การติดตั้ง PostgreSQL ใหม่ยังเป็นหนึ่งในไบนารีที่สร้างขึ้นโดยใช้เวอร์ชันเฉพาะซึ่งอาจต้องมีการสร้างใหม่เพื่อทำงานกับไลบรารีระบบเช่น readline


อ๊าก! Pristine ก็ไม่ได้แก้ไขเช่นกัน ฉันควรติดตั้ง PostgreSQL ใหม่อย่างแม่นยำเพียงใดโดยไม่ทำลายการเชื่อมต่อกับฐานข้อมูลปัจจุบันของฉัน (แน่นอนว่าคำตอบอาจเป็น "นั่นไม่ใช่เรื่องน่ากังวล" เท่าที่ฉันรู้)
Jonathan Tuzman

4

มีปัญหานี้:

dyld: Library not loaded: /usr/local/opt/mpfr/lib/libmpfr.4.dylib

กำลังทำ ...

cd /usr/local/opt/mpfr/lib/
ln -s libmpfr.dylib libmpfr.4.dylib

ทำเคล็ดลับสำหรับฉันสำหรับ macOS Catalina


2

ดังนั้นฉันได้ตรวจสอบคำตอบสองสามข้อที่นี่ แต่ฉันไม่คิดว่าพวกเขาสามารถทำงานกับการติดตั้ง mac vanilla Mojave ได้ ฉันใช้ 10.14.4 ในขณะที่ฉันทำสิ่งเหล่านี้:

  • รับ homebrew จากhttps://brew.sh

  • $ brew install coreutils: สิ่งนี้ติดตั้ง gnu coreutils pkg สำหรับ mac เราต้องการgreadlinkจากสิ่งนี้เนื่องจาก readlink ของ macOSX ไม่เหมือนกับลิงก์อ่าน gnu มันสับสนมาก แต่ก็คือชีวิตในแมคแลนด์

  • $ echo 'alias readlink=greadlink' >> ~/.bash_aliasesฉันพบว่า macs readlink ขาดไปเล็กน้อยดังนั้นฉันจึงลบล้างลิงก์อ่านที่มีอยู่โดยใช้นามแฝง greadlink (คุณสามารถทำให้สิ่งนี้ใช้งานได้โดยผู้ใช้ทุกคน$ alias readlink=greadlink >> /etc/bashrcซึ่งจะทำให้ผู้ใช้ทุกคนสามารถใช้งานได้

  • $ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylibฉันเชื่อมโยง.8.ไฟล์ที่ลิงก์ไว้แล้วแทนที่จะเป็น ".8.0" เพราะถ้าได้รับการอัปเดต.8.1.แล้วลิงก์อ่านของฉันจะไม่หยุดทำงานหรือพลาดคุณสมบัติในไลบรารี ฉันค่อนข้างแน่ใจว่าเราจะฟอร์แมต mac ของเราก่อนที่ 9+ จะออกมา


0

ฉันอยากจะแนะนำให้เทียบกับไลบรารีเนทีฟ symlink'ing ด้วยตนเอง Aas ของ OS X 10.4 มาตรฐานรวมถึงไลบรารีพา ธ/usr/includeไม่ได้ใช้อีกต่อไปและถูกล็อคโดย SIP (ทำให้ยากต่อการย้ายสิ่งของไป)

เรือแอปเปิ้ล“ติดตั้งดั้งเดิม” สำหรับคุณที่จะสามารถติดตั้งหัวใน“สถานที่ตั้งเก่า” brewซึ่งจะแก้ไขเส้นทางของคุณอย่างถูกต้องพบว่าส่วนหัวติดตั้งผ่าน

cp /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg ~/Desktop && open ~/Desktop/macOS_SDK_headers_for_macOS_10.14.pkg`

ดูรายละเอียดเกี่ยวกับสิ่งที่เกิดขึ้นได้ที่นี่


นี้จะทำงานด้วยตนเองหลังจาก symlinking libreadline.8.dylibเพื่อlibreadline.7.dylibที่ขาดหายไป เช่นรันคำสั่ง:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
David Schumann

0

lftpปัญหาของฉันเป็นเพียงแค่เดียวกันเมื่อทำงาน

เพียงแค่ใช้งานbrew upgradeได้ช่วยแก้ปัญหาของฉันเนื่องจากมีการอัปเดต (อื่น ๆ ):

readline 8.0.0_1 -> 8.0.1
lftp 4.8.4 -> 4.8.4_2

0

ความเป็นมา: สิ่งนี้เกิดขึ้นเมื่อฉันพยายามติดตั้ง tig แต่ฉันคิดว่านี่เป็นปัญหาทั่วไปที่คุณอาจมีที่คุณต้องเชื่อมโยงซอฟต์แวร์ที่ติดตั้งด้วยตนเองเข้ากับเส้นทางที่ถูกต้องที่ซอฟต์แวร์อื่นต้องการ

หากคุณไม่พบ readline ที่ติดตั้งบน Mac ของคุณคุณควรเรียกใช้

brew install readline

หลังจากที่คุณติดตั้งครบกำหนดเวลาชงจะขอให้คุณเชื่อมโยง แต่จริงๆแล้วคุณไม่สามารถเชื่อมโยงโดยการเรียกใช้

brew link readline

แม้คุณจะไม่สามารถเชื่อมโยงโดยการเรียกใช้

sudo brew link readline

Mac OS จะเตือนคุณว่านี่เป็นอันตรายอย่างยิ่งและไม่ให้คุณทำ

Readline เวอร์ชันล่าสุดคือเวอร์ชัน 8 ดังนั้นคุณจะเห็นข้อความแสดงข้อผิดพลาดเช่น

Library not loaded: /usr/local/opt/readline/lib/libreadline.8.dylib

กำหนดเวลาติดตั้งเบียร์ที่

/usr/local/Cellar/readline/8.0.4

ดังนั้นคุณต้องเชื่อมโยงกับสถานที่ที่ซอฟต์แวร์ของคุณต้องการด้วยตนเองโดยใช้คำสั่ง ls

ln -s /usr/local/Cellar/readline/8.0.4 /usr/local/opt/readline

สนุก!

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