ก่อให้เกิดการอัพเกรดก่อให้เกิด Vim บน OS X (dyld: ไม่ได้โหลดไลบรารี)


47

ฉันไม่ได้วิ่งbrew update && brew upgradeมานานแล้ว

ฉันเพิ่งทำการอัพเกรดครั้งใหญ่ซึ่งทำให้ Vim ของฉันพัง

นี่คือสิ่งที่ฉันได้หลังจากใช้งานvim:

dyld: Library not loaded: /usr/local/opt/ruby/lib/libruby.2.3.0.dylib
  Referenced from: /usr/local/bin/vim
  Reason: image not found
Trace/BPT trap: 5

ฉันเคยเจอเว็บไซต์บางแห่งแล้ว แต่ก็ไม่มีประโยชน์เลย

พวกเขาบอกว่ามันอาจเกี่ยวข้องกับrvmแต่brew uninstall vim; rvm system; brew install vimไม่ได้ช่วย ฉันพยายามติดตั้ง MacVim ใหม่อีกครั้ง แต่ไม่สามารถแก้ปัญหาได้

การเพิ่มexport PATH="/usr/local/bin:$PATH"ลงในของฉัน.bash_profileก็ไม่ได้ช่วยอะไรเช่นกัน

นี่คือรายการสำหรับการอ้างอิงในอนาคต:

เกิดอะไรขึ้นกับเสียงเรียกเข้าของฉัน ฉันจะแก้ไขได้อย่างไร


ตอนนี้บางทีคุณอาจลอง: xcode-select --installแล้วbrew upgradeตามข้อเสนอแนะในส่วนMacOS อัพเกรดที่ปัญหาที่พบบ่อย
เรียว

คำตอบ:


48

วิธีการแก้

ลองติดตั้งใหม่rubyและvimเช่น

brew reinstall ruby vim

การแก้ไขปัญหา

นี่คือคำแนะนำอื่น ๆ หากด้านบนไม่ช่วย:

  • ค้นหาอ้างอิงใด ๆDYLD_LIBRARY_PATH, DYLD_FALLBACK_LIBRARY_PATHหรือDYLD_FRAMEWORK_PATHตัวแปรด้านสิ่งแวดล้อมและลบออกจากเชลล์สคริปต์เริ่มต้น (เช่น~/.bashrc, ~/.bash_profileฯลฯ )

3
เพิ่งอัพเกรดเป็นเซียร์ราระดับสูงและนี่เป็นการหลอกลวง! ขอบคุณ
e_x_p

1
ฉันมีปัญหากับ mac vim ดังนั้นฉันจึงใช้อันนี้แทน brew reinstall ruby macvimและใช้งานได้อย่างมีเสน่ห์ :)
Crisoforo Gaspar

6
หลังจากอัปเกรดเป็นเซียร์ราสูงฉันรันbrew updateและbrew upgradeอัพเกรดซอฟต์แวร์เป็นเวอร์ชันเซียร์ราสูงและแก้ไขปัญหาของฉัน
maffo

27

TL; DR

brew link --overwrite ruby

รายละเอียด

จริงๆแล้วมันกลับกลายเป็นว่าค่อนข้างง่าย ฉันทำตามคำแนะนำเพื่อเรียกใช้brew doctorและฉันได้รับผลลัพธ์เหล่านี้:

Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
    ruby

brew link rubyดังนั้นผมจึงวิ่ง นี่คือสิ่งที่ฉันได้รับ:

Linking /usr/local/Cellar/ruby/2.3.1... v
Error: Could not symlink bin/rake
Target /usr/local/bin/rake
already exists. You may want to remove it:
  rm '/usr/local/bin/rake'

เป็นผลให้ฉันตัดสินใจที่จะทำงานbrew link --overwrite rubyและตอนนี้เป็นกลุ่มของฉันทำงานอีกครั้ง!


2
ประณามbrew upgradeนี้อึให้ฉันมาก ขอบคุณมากที่เสนอชุดคำสั่งที่ชัดเจนเพื่อแก้ไขปัญหานี้
Sukima

7

ฉันพบข้อผิดพลาดที่คล้ายกันเมื่อทำbrew upgradeที่ libperl ไม่โหลด

dyld: Library not loaded: /usr/local/opt/perl/lib/perl5/5.24.1/darwin-thread-multi-2level/CORE/libperl.dylib
  Referenced from: /usr/local/Cellar/vim/8.0.0636/bin/vim
  Reason: image not found

แก้ไขคือการติดตั้งการพึ่งพาและ vim ที่ติดตั้งใหม่:

brew uninstall --ignore-dependencies perl
brew uninstall vim
brew install vim

1
ข้อผิดพลาดของฉันเกี่ยวข้องกับไลบรารี ruby ​​ใน op แต่หลังจากพยายามแก้ไขการเชื่อมโยงบางอย่างฉันพบว่าฉันต้องการถอนการติดตั้ง / ติดตั้ง vim ฉันเพิ่งปรับปรุงทับทิม
Jerome

ฉันพบขั้นตอนเดียวกันนี้ที่นี่github.com/Homebrew/brew/issues/2356#issuecomment-301830565และทำงานได้
gabe

4

สำหรับฉันฉันพบว่าการชงอย่างใดที่ติดตั้ง macvim และมันยังคงขัดแย้งกับกลุ่มสต็อกระบบปฏิบัติการ พยายามใช้ vim ปกติและรันคำสั่ง git เช่นข้อผิดพลาดที่สร้างขึ้นเหล่านี้:

$ git commit --amend
dyld: Library not loaded: /System/Library/Perl/5.16/darwin-thread-multi-2level/CORE/libperl.dylib
  Referenced from: /usr/local/Cellar/macvim/7.4-73/MacVim.app/Contents/MacOS/Vim
  Reason: image not found
error: vi died of signal 6
error: There was a problem with the editor 'vi'.
Please supply the message using either -m or -F option.

ดังนั้นฉันจึงไปข้างหน้าและถอนการติดตั้งแพคเกจที่เกี่ยวข้องกับเสียงเรียกเข้าที่ผู้ผลิตได้ติดตั้ง:

$ brew list

และลบ macvim ด้วยการ$ brew uninstall macvimแก้ไขปัญหา


นี่คือปัญหาของฉันเช่นกัน คำตอบที่ดี; ขอบคุณ!
rotarydial

1

ฉันลองติดตั้งใหม่เชื่อมโยงลบเวอร์ชันที่มีอยู่ทั้งหมดออกเพื่อทับทิมและกลุ่ม แต่ไม่มีอะไรช่วยได้จริงๆ

ดังนั้นฉันเพิ่งตัดสินใจเปลี่ยนชื่อไฟล์ dylib ของฉันจาก

/usr/local/opt/ruby/lib/libruby.2.3.dylib

ไปยัง

/usr/local/opt/ruby/lib/libruby.2.3.0.dylib

ผลลัพธ์ของการเปลี่ยนชื่อนั้นก็คือมันทำงานได้ดีอย่างสมบูรณ์แบบในขณะนี้


คุณอาจต้องการพิจารณาใช้ symlink ที่นี่แทนการเปลี่ยนชื่อไฟล์ดังนั้นสิ่งใดก็ตามที่ libruby2.3.dylib ที่อ้างอิงถึงก็ไม่แตก
Derwent

0

หากคุณได้รับข้อความเช่นนี้:

dyld: Library not loaded: /usr/local/opt/ruby/lib/libruby.2.4.1.dylib
  Referenced from: /usr/local/bin/vim
  Reason: image not found
error: vim died of signal 6
error: There was a problem with the editor 'vim'.
Please supply the message using either -m or -F option.

และคุณจัดการ Ruby ของคุณโดยใช้ rvm จากนั้นการตั้งค่าตัวแปรสภาพแวดล้อมหนึ่งอย่างเหมาะสมควรทำให้ vim ของคุณทำงานได้

ทำตามขั้นตอนเหล่านี้เพื่อดูว่ามันใช้กับสภาพแวดล้อมของคุณ:

DYLD_LIBRARY_PATH ถูกกำหนดและถูกต้องหรือไม่:

$ env|grep DYLD_LIBRARY_PATH

ทับทิมติดตั้งอยู่ที่ไหน

$ type ruby
ruby is hashed (/Users/<USER>/.rvm/rubies/ruby-2.4.1/bin/ruby)

นั่นแสดงว่าทับทิมของฉันจัดการโดย rvm

ตั้งอยู่ที่ไหน libruby.2.4.1.dylib?

find /Users/<USER>/.rvm/rubies/ruby-2.4.1  -name "*.dylib"

เพิ่มไดเรกทอรี "lib" และผนวกเข้ากับไฟล์เริ่มต้นของคุณ:

echo -e "\nexport DYLD_LIBRARY_PATH=/Users/<USER>/.rvm/rubies/ruby-2.4.1/lib" >> ~/.bashrc

หมายเหตุ: ใช้ไฟล์เริ่มต้นที่เคย (~ / .profile, ~ / bash_exports, ฯลฯ ) ที่เหมาะสมกับเวิร์กสเตชันของคุณ

ตอนนี้เมื่อคุณเริ่มต้นเซสชันเทอร์มินัลใหม่กลุ่มของคุณควรจะทำงานอีกครั้ง


0

ในกรณีของฉันปรากฎว่า ruby ​​ได้รับการติดตั้ง แต่ด้วยเหตุผลที่ไม่ได้เชื่อมโยงดังนั้น:

ชงลิงค์ทับทิม


0

ข้อผิดพลาดของฉัน (สิ่งนี้เกิดขึ้นหลังจากอัพเดต homebrew):

dyld: ไลบรารีไม่ได้โหลด: /usr/local/opt/ruby/lib/libruby.2.6.dylib อ้างอิงจาก: / usr / local / bin / vim เหตุผล: ไม่พบภาพ [1] 2800 abort vim

นี่ใช้เวลาหนึ่งชั่วโมงในชีวิตของฉัน ทางออกของฉัน:

ติดตั้ง ruby ​​$ brew ติดตั้ง ruby ​​อีกครั้ง

ข้อเสนอแนะจาก Homebrew:

ruby เป็น keg-only เท่านั้นซึ่งหมายความว่ามันไม่ได้เชื่อมโยงกับ / usr / local เนื่องจาก macOS ได้จัดเตรียมซอฟต์แวร์นี้ไว้แล้วและการติดตั้งเวอร์ชันอื่นแบบขนานอาจทำให้เกิดปัญหาได้ทุกประเภท

หากคุณต้องการทับทิมก่อนอื่นให้รัน PATH: echo 'export PATH = "/ usr / local / opt / ruby ​​/ bin: $ PATH"' >> ~ / .zshrc

เพื่อให้คอมไพเลอร์หาทับทิมคุณอาจต้องตั้งค่า: export LDFLAGS = "- L / usr / local / opt / ruby ​​/ lib" export CPPFLAGS = "- I / usr / local / opt / ruby ​​/ include"

สำหรับ pkg-config เพื่อค้นหาทับทิมคุณอาจต้องตั้งค่า: ส่งออก PKG_CONFIG_PATH = "/ usr / local / opt / ruby ​​/ lib / pkgconfig" ==> สรุป🍺 /usr/local/Cellar/ruby/2.6.3: 19,372 ไฟล์ , 32.4MB ข้อผิดพลาด: ไม่สามารถลบถังสำรองทับทิมได้! ทำด้วยตนเอง: sudo rm -rf /usr/local/Cellar/ruby/2.4.2_1 ติดตั้งซ้ำ

ฉันทำตามคำแนะนำของ homebrew และลบถังสำรองทับทิมด้วยตนเอง

$ sudo rm -rf /usr/local/Cellar/ruby/2.4.2_1 ติดตั้งซ้ำ

หลังจากป้อนรหัสผ่านและพยายามเปิดเป็นกลุ่มอีกครั้งด้วย

$ vim

เสียงเรียกนั้นเปิดขึ้นและฉันก็ยิ้มเล็กน้อยและปัดเหงื่อออกไป :)


-1

ฉันหยุดใช้ Homebrew เนื่องจากปัญหาและปัญหาด้านความปลอดภัยทั้งหมด

ไม่ว่าในกรณีใดฉันอัพเกรดจากOSX Yosemiteเป็นOSX High Sierraและ macvim หยุดทำงานในเทอร์มินัล ฉันได้รับข้อผิดพลาด:

dyld: Library not loaded: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/libruby.2.0.0.dylib
  Referenced from: /Applications/MacVim.app/Contents/MacOS/Vim
  Reason: image not found
Abort trap: 6

ฉันลอง EXPORT กำลังหาเส้นทางเหมือนในคำตอบของ I3x แต่ฉันยังคงได้รับข้อผิดพลาดเดียวกัน (ใช่ฉันเปิดหน้าต่างเทอร์มินัลใหม่)

ดังนั้นฉันจึงดาวน์โหลดmacvimอีกครั้ง เมื่อฉันได้รับแจ้งว่ามี MacVim.app อยู่ในคอมพิวเตอร์ของฉันฉันหยุดการติดตั้งและฉันเปลี่ยนชื่อเป็น MacVim_original.app จากนั้นฉันจะติดตั้ง macvim ใหม่ หลังจากนั้น macvim ก็ทำงานใน Terminal อีกครั้ง ฉันเปิดมันด้วยคำสั่งทางลัด:

$ m 1.py 

1
เมื่อสร้างข้อความเช่น“ ปัญหาทั้งหมดและปัญหาด้านความปลอดภัย” ให้พิจารณารวมถึงลิงก์ไปยังเอกสารประกอบ (=
ELLIOTTCABLE

google.com
7stud

เอ้อ เพลิดเพลินไปกับ downvote ของคุณแล้ว ฉันเพียงแค่เสนอคำอธิบายว่าทำไมคุณถึงได้รับเช่นเดียวกับวิธีปฏิบัติที่ได้รับการยอมรับ (เช่นการอ้างอิงแหล่งที่มาของคุณ) ที่นี่ใน Stack Exchange ¯\_(ツ)_/¯
ELLIOTTCABLE

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