Kitaplık yüklenmedi: /usr/local/opt/readline/lib/libreadline.7.dylib


112

Çalıştırmayı denediğimde rails consoleşu hatayı alıyorum:

/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)

Hızlı bir arama beni bu gönderiye götürdü ve birkaç şey denedim:

brew reinstall postgresql (bu aslında bu projenin DB'sidir)

ve

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

(benim okuma satırı sürümüm 8)

ve brew link readline --force

Ancak bunların hiçbiri sorunu çözmedi.

Geçenlerde eklendi pry-coolline, guardve guard-livereloadprojeme taşlar Bir değişiklik (o önce konsol yüklenen cezası raylar) eğer. En son macOS'ları kullanıyorum.

(Güncelleme) Herhangi bir fark yaratırsa, ray konsolu olarak gözetleme rayları kullanıyorum.

Herhangi bir yardım? Teşekkürler.


1
deneyinbrew reinstall readline
MrYoshiji

işe yaramadı, teşekkürler
Jonathan Tuzman

Benim için çalıştı @MrYoshiji! Teşekkürler!
spons

Yanıtlar:


376

arama sırasında hata atılmış gibi görünüyor /usr/local/opt/readline/lib/libreadline.7.dylib.

Bunu sembolik bağlamaya çalıştın mı?

Yani şöyle bir şey:

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

Bunu macOS Mojave, ruby ​​2.5.3p105 ve Rails 5.2.2'de denedim ve işe yaradı.


Teşekkürler Hawz. Sadece denedim ve işe yaramadı. Sanırım bunu daha önce de denedim. Sembolik bağın ve lnaslında hakkında bildiğim şeyler olmadığını söylemeliyim : /
Jonathan Tuzman

6
Kendim için çalıştım Belki @JonathanTuzman iyi dizinde değildiniz? cd /usr/local/opt/readline/lib
Ulysse BN

7
Gerekiyordu brew link readline --forcebağlantıları oluşturmak için /usr/local/opt/readline/lib.
Candland

Elimde olsa sana +10 verirdim. Teşekkürler!
eos87

Gerçek cevap, brew link readline --forcebenim için çalışan
Candland'dan

42

Ruby sürümümü yeniden yüklemek sorunu çözmüş gibi görünüyor:

rvm reinstall 2.3.7

11
Ruby'yi kurmak için rvm kullandıysanız, cevap budur. Ruby sürümünüz artık sisteminizde bulunmayan bir readline sürümüne karşı derlenmişse, Ruby'yi yeni sürüme bağlayacak şekilde yeniden derlemelisiniz. Bu konuyla az önce kendim karşılaştım ve readline.8.dylib'i readline.7.dylib için sembolize etmek dışında her şeyi denedim (ki bu, herkes için işe yaramış gibi görünse bile, bu yanıtı yükseltmek için gerçekten kötü bir fikir gibi görünüyor .)
Kingdon

4
Benim bağlamımda rbenv ve rbenv install 2.5.1çalıştı. Bu sudo xcode-select -s /Library/Developer/CommandLineTools, başka bir yerde yaşadığım bir sorunu düzeltmek için koştuğumdan sonra yana doğru gitti . fwiw
somedirection

1
Paketleyiciyi kullanıyorsanız, daha sonra bundle installmücevherleri yerel uzantılarla yeniden yüklemeniz gerektiğini fark edebilirsiniz .
spume

27

deneyebilir misin

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

doğru yoldasınız, ancak görünüşe göre raylar libreadline.7.dylib ve libreadline.7.dylib'i arıyor gibi görünüyor. klasörde yok.


1
Sorun, 'demleme güncellemesi'ni çalıştırdığımda yeniden ortaya çıkıyor, ancak bu çözüm iyi çalışıyor ve
Iwan B.


7

RVM mücevher setinizi yeniden oluşturmayı VEYA sym-link kitaplıklarını oluşturmayı içermeyen çok basit bir çözüm.

Gemfile'ınıza ekleyin:

gem 'rb-readline'

Paketleyici gruplar yapıyorsanız

group :development do
  gem 'rb-readline'
end

O zaman koş

> bundle

İşe yaramazsa bana haber ver.


4

Çoğu zaman Ruby uygulamalarında, bunun nedeni uzantılara sahip olan mücevherler ("Yerel uzantılar oluşturmak .." yazan mücevherler), bu durumda, belirli bir sürüm kullanılarak oluşturulmuştur. readline .

Temel olarak iki çözüm var:

Ya, gem'in 8. sürümünü, eksik olan sürümle sembolik bağlayabilirsiniz. Bu birçok durumda işe yarayacaktır, ancak geriye dönük uyumluluk bozulursa işe yaramayacaktır.

Veya gem aslında sürüm 8'i destekliyorsa, bu belirli mücevheri yeniden yükleyebilir veya çalıştırarak "bozulmamış" hale getirebilirsiniz gem pristine --all.

DÜZENLEME : "Denediklerim" kapsamında, PostgreSQL'i yeniden yüklemek, aynı zamanda readline gibi bir sistem kitaplığıyla çalışmak için yeniden yapılandırmayı da gerektirebilecek belirli bir sürüm kullanılarak oluşturulmuş ikili dosyalardan biridir.


Ah! Pristine da düzeltmedi. PostgreSQL'i mevcut DB ile herhangi bir bağlantıyı kesmeden ne kadar hassas bir şekilde yeniden kurmalıyım? (elbette cevap "bu bir endişe değil" olabilir, her şeyi bildiğim kadarıyla).
Jonathan Tuzman

4

Bu sorunu aldım:

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

yapıyor ...

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

macOS Catalina için benim için hile yaptı


2

Bu yüzden burada birkaç cevabı kontrol ettim ama vanilya Mojave mac kurulumu ile çalışabileceklerini sanmıyorum. Bunları yaparken 10.14.4 kullanıyorum:

  • https://brew.sh adresinden homebrew alın

  • $ brew install coreutils: bu, mac için gnu coreutils pkg yükler, biz bundan istiyoruz greadlinkçünkü macOSX'in readlink'i gnu readlink ile aynı değildir. Son derece kafa karıştırıcı ama Macland'daki yaşam böyle.

  • $ echo 'alias readlink=greadlink' >> ~/.bash_aliasesMac'lerin okuma bağlantısını biraz eksik buldum, bu yüzden greadlink'i takma ad olarak mevcut okuma bağlantısını geçersiz kıldım. (bunu tüm kullanıcılar tarafından $ alias readlink=greadlink >> /etc/bashrckullanılabilir hale getirerek her kullanıcının onu kullanabilmesini sağlayabilirsiniz.

  • $ ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib.8.".8.0" yerine zaten bağlanmış dosyayı bağladım. dosya çünkü o zaman güncellenecek olsaydı, .8.1.okuma bağlantım kitaplıktaki özellikleri kırmaz veya kaçırmaz. Mac'lerimizi 9+ çıkmadan önce biçimlendireceğimizden oldukça eminim.


0

Yerel kitaplıkların manuel olarak sembolik bağlantısının yapılmamasını tavsiye ederim. Aas OS X 10.4, standart kitaplık yolunu içerir/usr/include artık kullanılmamaktadır ve SIP tarafından kilitlenmiştir (nesnelerin taşınmasını zorlaştırır).

Apple, başlıkları "eski konuma" yükleyebilmeniz için size bir "eski yükleyici" gönderir ve bu da, üzerinden yüklenen başlıkları doğru bir şekilde bulma yolunuzu çözecektir 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`

Neler olup bittiğine dair ayrıntılı bir yazı için buraya bakın .


Bu, yalnızca eksik olana elle sembolik libreadline.8.dylibbağlantı libreadline.7.dyliboluşturduktan sonra çalıştı . yani komut çalıştır:ln -s /usr/local/opt/readline/lib/libreadline.8.dylib /usr/local/opt/readline/lib/libreadline.7.dylib
David Schumann

0

Benim problemim koşarken de aynıydı lftp.

Sadece koşmak brew upgrade, güncellendiği gibi sorunumu çözdü (diğerleri arasında):

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

0

Arka plan: Bu, tig'i yüklemeye çalıştığımda oldu, ancak bunun, kurulu yazılımı başka bir yazılımın istediği doğru yola manuel olarak bağlamanız gerekebilecek yaygın bir sorun olduğunu düşünüyorum.

Mac'inizde yüklü okuma satırı bulamıyorsanız, şunu çalıştırmalısınız:

brew install readline

Son tarihi yükledikten sonra, brew sizden onu bağlamanızı isteyecektir. Ama aslında koşarak bağlantı kuramazsınız

brew link readline

Sen bile koşarak bağlantı kuramazsın

sudo brew link readline

Mac OS sizi bunun son derece tehlikeli olduğu konusunda uyaracak ve bunu yapmanızı engelleyecektir.

Readline'ın en son sürümü sürüm 8'dir, bu nedenle aşağıdaki gibi hata mesajlarını göreceksiniz:

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

Demlemek için son tarih

/usr/local/Cellar/readline/8.0.4

Bu yüzden ls komutunu kullanarak yazılımınızın istediği yere manuel olarak bağlamanız gerekir.

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

Zevk almak!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.