रीडलाइन के साथ त्रुटि के कारण "रेल कंसोल" को निष्पादित नहीं किया जा सकता है


88

मैं rails consoleइस त्रुटि के कारण निष्पादित नहीं कर सकता :

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>'

मैंने होमब्रे के माध्यम से रीडलाइन स्थापित की है। मैं rvm के बजाय rbenv का उपयोग करना चाहता हूं।

मेरा सवाल पढ़ने के लिए धन्यवाद।


जवाबों:


279

मैं हाल ही में homebrew और libreadline.7.x.dylib / libreadline.6.x.dylib के साथ एक ही मुद्दा था

मैंने इसे चलाकर हल किया:

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

स्रोत: https://github.com/rails/rails/issues/26658


1
क्या एक हैक :) लेकिन यह अभी के लिए ठीक काम करता है: धन्यवाद!
11

18
वास्तव में एक अलग (प्रमुख!) संस्करण संख्या का उपयोग करने के लिए सिस्टम को ट्रिक करने के लिए सीमलिंक का उपयोग करना आमतौर पर एक बुरा विचार है। यह अच्छा होगा यदि कोई अधिक जानकार समझा सकता है कि उपरोक्त फिक्स सुरक्षित क्यों है।
पिस्टोस

आप एक किंवदंती हैं, इसके लिए धन्यवाद, @wiz को आपको सही चिह्नित करना चाहिए!
निक श्वेदर

1
Libreadline 6.3 और 7.0 के बीच परिवर्तनों की एक सरसरी समीक्षा कुछ भी नहीं दिखाती है जो एक ब्रेकिंग परिवर्तन प्रतीत होता है, उन मामलों में अपेक्षा करता है जहां सॉफ्टवेयर अनिर्दिष्ट या छोटी गाड़ी के व्यवहार पर निर्भर हो सकता है। मैं उस के प्रकाश में इस समाधान की कोशिश कर रहा आरामदायक होगा।
साइमन

58

Homebrew बहुत अच्छा है, लेकिन एक बार में यह कुछ अन्य चलती भागों के साथ अच्छा नहीं खेलता है।

एक brew update && brew upgradeमें लाया libreadline.7.x.dylibहै, जबकि स्वचालित रूप से दूर करने libreadline.6.x.dylib, गया, जिसमें माणिक अभी भी पर भरोसा।

समस्या को ठीक करने के लिए और अधिक चतुर तरीके हो सकते हैं, लेकिन क्रूर बल ने मेरे लिए काम किया:

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

ऊपर rbenv की उपस्थिति मानता है ruby-build, और, निश्चित रूप से bundler; 2.3.1माणिक के जो भी संस्करण का उपयोग कर रहे हैं, उसके साथ बदलें ।

कृपया ध्यान दें कि विभिन्न होमब्रेव-प्रबंधित पुस्तकालयों के साथ समान समस्याएं हो सकती हैं ( उदाहरण के लिए मेरा खुद का उत्तर देखें )


अगर मेरे लिए वही होता है - मुझे आश्चर्य होता है कि क्या होमब्रेव के लिए कोई रास्ता नहीं है, तो यह ध्यान दें कि कुछ लिबरे कुछ के पुराने संस्करणों से जुड़े हुए हैं, जो कि होमब्रेव की आपूर्ति करते हैं?
slhck

2
यह मेरे लिए एल कैपिटान में काम करता है, gem install bundlerरेंबव इंस्टाल के बाद।
handwovensole

क्या मेरे द्वारा brew update && brew upgradeफिर से चलाने पर त्रुटि होगी ?
फ्रैंक फेंग

1
@FrankFang, इस विशेष त्रुटि के लिए हो भी सकता है और नहीं भी। हर बार brew upgradeकिसी भी पुराने लाइब्रेरी को अधिक हाल के संस्करण के साथ बदलने पर, कुछ संभावनाएं होती हैं कि आपके सिस्टम के अन्य प्रोग्राम शिकायत करेंगे।
Giuseppe

26

मैं OSX, ruby2.3.0, rails5 पर हूं। जोड़ा जा रहा है gem 'rb-readline'मेरे लिए Gemfileतय इस समस्या।


1
मणि आरबी-रीडलाइन ने मेरे लिए काम किया। मैं इसे करने के लिए जोड़ा: विकास, परीक्षण समूह - अच्छा जल्दी ठीक!
tnum

21

मुझे रूबी 2.1.0, और रेल 4.0 के साथ एक ही त्रुटि मिली। बहुत कुछ खोजने और प्रयास करने के बाद, आखिरकार यह अच्छी तरह से काम करता है :) यहाँ वही है जो मैंने किया था:

rvm cleanup all
rvm autolibs enable
rvm install 2.1.0 

अन्य तरीके:

brew update
brew uninstall readline
brew install readline

ऑटोलिब्स कमांड आरवीएम को सभी निर्भरताओं को स्थापित करने के लिए मजबूर करेगा, इसलिए आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।

आशा है कि यह उपयोगी है।


2
आप की जरूरत नहीं हो सकती है cleanup rvm। बस reinstallमाणिक संस्करण।
स्वैप

20

जैसा कि सचिन ने संकेत दिया, रीडलाइन स्थापित करना और फिर माणिक को फिर से स्थापित करना आदर्श दृष्टिकोण है - लेकिन विवरण rbenv के लिए थोड़ा अलग हैं। आपके फ़ाइल पथों को देखते हुए, मैं अनुमान लगा रहा हूं कि आप मैक पर हैं, इसलिए निम्नलिखित में मदद करनी चाहिए:

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

यह रूबी-बिल्ड विकी और एक त्वरित Google खोज से लिया गया था ।


ऐसा करने के बाद
रिहर्स

2
रीडलाइन के साथ एक मौजूदा रूबी संस्करण को फिर से स्थापित करने के बाद, एक कमांड चलाना जैसे bundle installकि मुझे बहुत सी चेतावनियाँ दिखाई गईं जैसे "bcrypt-3.1.11 को अनदेखा करना क्योंकि इसके एक्सटेंशन का निर्माण नहीं किया गया है"। जैसा कि इस प्रश्न के उत्तर में सुझाया गया है , gem pristine --allउन सभी त्रुटियों को एक ही बार में ठीक किया गया है।
रोरी ओ'केन

8

मैक, El Captainसंस्करण का उपयोग करना, बस करके ठीक करना संभव है

rvm reinstall your_ruby_version

(जैसे rvm reinstall ruby-2.3.1)

उम्मीद है कि इससे मदद करेगी, सुसंयोग!


यह सब मुझे करने की जरूरत थी।
पिस्तोस

यह आपके वर्तमान संस्करण को फिर से स्थापित करेगा:rvm reinstall $(rvm current)
CTS_AE

यह सबसे सरल उपाय है, लेकिन इसे पुनर्स्थापित करने में कुछ समय लगता है। फिर भी, सबसे अच्छा दृष्टिकोण imho।
f055

1

github यूजर @enderahmetyurt से लिया गया (यह एकमात्र उपाय है जिसने मेरे लिए काम किया)।

समाधान: विकास समूहgem 'rb-readline' में अपने Gemfile में जोड़ें और बंडल इंस्टॉल करें । यह मूर्खतापूर्ण "रीडलाइन" त्रुटियों के लिए सबसे आसान समाधान है।


0

रीडलाइन स्थापित करने का प्रयास करें, और अपने रूबी को पुनर्स्थापित करें

https://rvm.io/packages/readline/


उत्तर देने के लिए धन्यवाद, लेकिन क्या rvm के बजाय rbenv का उपयोग करने का कोई तरीका है?
जानकार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.