Readline ile ilgili bir hata nedeniyle "raylar konsolu" yürütülemiyor


87

Ben yürütemediğinden rails consolebu hata yüzünden:

localhost:TwitterForZombies wiz$ rails c
/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `require': dlopen(/Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle, 9): Library not loaded: /usr/local/opt/readline/lib/libreadline.6.2.dylib (LoadError)
  Referenced from: /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
  Reason: image not found - /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/x86_64-darwin12.2.1/readline.bundle
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:3:in `<top (required)>'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `require'
    from /Users/wiz/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:38:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Readline'ı homebrew üzerinden kurdum. Rvm yerine rbenv kullanmaya devam etmek istiyorum.

Sorumu okuduğunuz için teşekkür ederim.


Yanıtlar:


278

Son zamanlarda homebrew ve libreadline ile aynı sorunu yaşadım.7.x.dylib / libreadline.6.x.dylib

Bunu çalıştırarak çözdüm:

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

kaynak: https://github.com/rails/rails/issues/26658


1
Ne hile :) Ama şimdilik gayet iyi çalışıyor: D Teşekkürler!
haslo

18
Sistemi kandırmak için sembolik bağları kullanmak aslında farklı (büyük!) Bir sürüm numarasını kullanmak için genellikle kötü bir fikirdir. Daha bilgili biri yukarıdaki düzeltmenin neden güvenli olduğunu açıklayabilirse iyi olur.
Pistos

Sen bir efsanesin, bunun için teşekkürler, @ wiz seni doğru olarak işaretlemeliydi!
Nick Schwaderer

1
Libreadline 6.3 ve 7.0 arasındaki değişikliklerin üstünkörü bir incelemesi, yazılımın belgelenmemiş veya hatalı davranışa dayandığı durumlarda beklenebilecek bir değişiklik gibi görünen hiçbir şey göstermez. Bunun ışığında bu çözümü denemekte rahat olurum.
Lyndsy Simon

58

Homebrew harikadır, ancak arada bir diğer hareketli parçalarla iyi oynamamaktadır.

A , Ruby'nin hala güvendiği, otomatik olarak kaldırılırken brew update && brew upgradegetirildi .libreadline.7.x.dyliblibreadline.6.x.dylib

Sorunu çözmenin daha akıllıca yolları olabilir, ancak kaba kuvvet benim için çalıştı:

$ rbenv uninstall 2.3.1
$ rbenv install 2.3.1
$ cd /path/to/my/app
$ bundle

Yukarıdakiler rbenv'lerin varlığını varsayar ruby-buildve tabii ki bundler; 2.3.1Kullandığınız ruby ​​versiyonuyla değiştirin .

Lütfen homebrew tarafından yönetilen farklı kitaplıklarda benzer sorunların ortaya çıkabileceğini unutmayın ( örneğin, buna kendi cevabıma bakın )


Aynısı benim de başıma gelmiş miydi - Homebrew'un bazı kitapların Homebrew'un sağladığı bazı kitapların eski sürümleriyle bağlantılı olduğunu fark etmesinin bir yolu olup olmadığını merak ediyorum.
slhck

2
Bu benim için El Capitan'da gem install bundlerrbenv kurulumundan sonra çalıştı.
handwovensole

Tekrar çalıştırdığımda hata oluşacak brew update && brew upgrademı?
Frank Fang

1
@FrankFang, olabilir veya olmayabilir ve sadece bu belirli hata için değil. Her zaman bir brew upgradecümledeki HERHANGİ eski kütüphane daha yeni bir sürümü ile, sisteminizdeki diğer programlar şikayetçi olacağını BAZI şansı vardır.
Giuseppe

26

OSX, ruby2.3.0, rails5 kullanıyorum. Ekleme gem 'rb-readline'benim için Gemfilesabit bu soruna.


1
gem rb-readline benim için çalıştı. Bunu: geliştirmeye ekledim: test grubu - güzel hızlı düzeltme!
2017

21

Ruby 2.1.0 ve rails 4.0 ile aynı hatayı aldım. Çok aradıktan ve denedikten sonra sonunda iyi çalışıyor :) İşte yaptığım şey:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

Diğer yollar:

brew update
brew uninstall readline
brew install readline

Autolibs komutu, RVM'yi tüm bağımlılıkları yüklemeye zorlar, böylece endişelenmenize gerek kalmaz.

Umarım yardımcı olur.


2
ihtiyacın olmayabilir cleanup rvm. sadece reinstallyakut versiyonu.
Swap

20

Sachin'in ima ettiği gibi, readline'ı yüklemek ve ardından Ruby'yi yeniden yüklemek ideal yaklaşımdır - ancak ayrıntılar rbenv için biraz farklıdır. Dosya yollarınız göz önüne alındığında, Mac'te olduğunuzu tahmin ediyorum, bu nedenle aşağıdakiler yardımcı olacaktır:

brew install readline ruby-build
env CONFIGURE_OPTS=--with-readline-dir=`brew --prefix readline` rbenv install 1.9.3-p286

Bu, ruby-build Wiki'den ve hızlı bir Google aramasından alındı .


bunu yaptıktan sonra yeniden canlandırmayı unutma
iGbanam

2
Readline ile mevcut bir Ruby sürümünü yeniden kurduktan sonra, bundle install"bcrypt-3.1.11'i uzantıları oluşturulmadığı için yoksaymak" gibi bir çok uyarı gösterdi. Cevaplar da önerildiği gibi bu soruya , gem pristine --allbir kerede bu hatalar düzeltildikten.
Rory O'Kane

8

Mac El Captainsürümünü kullanarak, sadece yaparak düzeltmek mümkündür

rvm reinstall your_ruby_version

(sevmek rvm reinstall ruby-2.3.1 )

Umarım bu yardımcı olur, iyi şanslar!


Tek yapmam gereken buydu.
Pistos

Bu, mevcut sürümünüzü yeniden rvm reinstall $(rvm current)
yükleyecektir

Bu en basit çözümdür, ancak yeniden yüklenmesi biraz zaman alır. Yine de en iyi yaklaşım imho.
f055

1

github kullanıcısı @enderahmetyurt'tan alınmıştır (bu benim için çalışan tek çözümdür).

Çözüm: Geliştirme grubundakigem 'rb-readline' Gemfile dosyanıza ekleyin ve paket yüklemesi yapın . Aptalca "okuma satırı" hataları için en kolay çözüm.


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.