find_spec_for_exe ': मणि बंडलकर्ता नहीं मिल सकता (> = 0.a) (Gem :: GemNotFoundException)


218

मैंने इस्तेमाल किया sudo bundle installऔर यह समस्या का कारण हो सकता है?

अब मेरे पास है:

  • gem -v 2.6.14
  • ruby -v रूबी 2.3.5p376 (2017-09-14 संशोधन 59905) [x86_64-darwin15]
  • jekyll -v जेकिल 3.6.2
  • bundle -vबुंडलर संस्करण 1.16.0.pre.3

मुझे चलाने के लिए bundle exec jekyll serveया बस कोशिश करते समय निम्नलिखित त्रुटि हो रही हैjekyll serve

/Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:271:in `find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
    from /Users/myusername/.rvm/rubies/ruby-2.3.5/lib/ruby/site_ruby/2.3.0/rubygems.rb:299:in `activate_bin_path'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/bundle:23:in `<main>'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `eval'
    from /Users/myusername/.rvm/gems/ruby-2.3.5/bin/ruby_executable_hooks:15:in `<MacBooMacBook-MacBook-MacBook-Pro-MacBook-PrMacBook-MacBooMacBMaMacBMaMaMaMaMaMaMaMaMacBMaMaMaMacBMa

साथ ही, उस फ़ोल्डर को एक्सेस करते समय जिसमें मेरा ब्लॉग है, cd my_pathमुझे निम्न संदेश मिलता है:

VM ने रूबी को चुनने के लिए आपके Gemfile का उपयोग किया, यह सब ठीक है - Heroku भी ऐसा करती है, आप इन चेतावनियों को 'rvm rvmrc चेतावनी अनदेखी / लाइब्रेरी / वेबसर्वर / दस्तावेज़ / ब्लॉग / Gemfile' के साथ अनदेखा कर सकते हैं। सभी फ़ाइलों के लिए चेतावनी को अनदेखा करने के लिए 'rvm rvmrc वार्निंग को अनदेखा करें allGemfiles'। अज्ञात रूबी दुभाषिया संस्करण (पता नहीं कैसे संभालना है): RUBY_VERSION।

मुझे नहीं पता कि इसे कैसे हल किया जाए। मैं सिर्फ अपना स्टैटिक ब्लॉग बनाना चाहता हूं और ईमानदारी से कहूं तो मुझे रूबी, जेम या बंड के बारे में कुछ भी पता नहीं है :) इसलिए मैं कुछ अंतर्दृष्टि की सराहना करूंगा!


क्या यह मदद कर सकता है: github.com/rvm/rvm/issues/1860
Cyzanfar

@Cyzanfar इसके लिए धन्यवाद! मैंने इसे आजमाया, अब इस प्रक्रिया में एक नई त्रुटि मिली: stackoverflow.com/questions/47035080/…
अल्वारो

जवाबों:


364

मेरे मामले में समस्या यह है कि Gemfile.lockफ़ाइल में BUNDLED_WITHसंस्करण 1.16.1और gem install bundlerइंस्टॉल किया गया संस्करण था 2.0.1, इसलिए सही फ़ोल्डर में देखने पर एक संस्करण बेमेल था

gem install bundler -v 1.16.1 ठीक कर दिया

बेशक, आप भी अपने को बदल सकते हैं Gemfile.lockकी BUNDLED_WITHपिछले साथ bundlerसंस्करण और हाल ही में सॉफ्टवेयर का उपयोग, के रूप में Sam3000 पता चलता है


15
एक विकल्प के रूप में, आप BUNDLED_WITHसंस्करण को बंडलर के नवीनतम संस्करण में बदलना चाह सकते हैं । इसने मेरे लिए काम किया और मुझे पुराने सॉफ्टवेयर की आवश्यकता होने पर भी बचा लिया :)
अनएन्कोडेड

5
Bundler 2 अभी-अभी रिलीज़ हुआ है, इसलिए यदि आप अपने Dockerfile में ऊपर के रूप में निर्दिष्ट नहीं कर रहे हैं, तो आप इस एरर बंडल
blog/

हाय @ antonio-tapiador मैं इस मुद्दे पर आ रहा हूं, लेकिन मैं विंडोज़ पर हूँ (लिनक्स पर स्विच नहीं कर सकता)। मैं दौड़ चुका हूं gem install bundler -v 1.16.1और अब अगर gem.bat list bundler मैं दौड़ता हूं तो मुझे बंडलर मिलता है (2.0.1, 1.16.1, 1.9.6)। मैं वर्तमान संस्करण को नहीं बदल सकता: निष्पादन bundle.bat _1.16.1 installमुझे यह त्रुटि देता है Could not find command "_1.16.1":। क्या आपके पास कोई विचार है, इसलिए मुझे एक नया प्रश्न बनाने की ज़रूरत नहीं है? धन्यवाद!
जर्मन

कोई बात नहीं, मैं संस्करण के अंत में एक अंडरस्कोर याद कर रहा था।
जर्मन

धन्यवाद। यह भी गहरे लाल रंग का v2.5.1p57 उपयोग करते हुए मेरे एक ही समस्या का समाधान
widi83

132
gem update --system

रूबीम्स को अपडेट करेगा और समस्या को ठीक करेगा।


3
बस स्पष्ट करने के लिए - जैसा कि @noraj बताते हैं - समस्या को बंडलर के नए संस्करण में पेश किया गया था। यदि आप लिंक का अनुसरण करते हैं, तो समाधान रूबीजीम्स को अपडेट करना है।
ReggieB

1
gem update --systemमेरे लिए काम किया: ruby 2.5.0 , bundler 2.0.1 , macOS 10.13.6
जगदीप सिंह

74

अपडेट करें:

@ नोजज के जवाब और @ नील्स क्रिस्टियन की टिप्पणी के अनुसार, निम्न कमांड को काम करना चाहिए।

gem update --system
bundle install

मैंने यह लिखा है कि किसी को मेरी तरह एक मुद्दे में हो जाता है।

gem install bundler दिखाता है कि हर चीज़ अच्छी तरह से स्थापित होती है।

Fetching: bundler-1.16.0.gem (100%)
Successfully installed bundler-1.16.0
Parsing documentation for bundler-1.16.0
Installing ri documentation for bundler-1.16.0
Done installing documentation for bundler after 7 seconds
1 gem installed

जब मैंने टाइप bundleकिया तो एक त्रुटि थी:

/Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `load': cannot load such file -- /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/bundler-1.16.0/exe/bundle (LoadError)
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/bundle:23:in `<main>'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/nikkov/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in `<main>'

और फ़ोल्डर में /Users/nikkov/.rvm/rubies/ruby-2.4.0/lib/ruby/gems/2.4.0/gems/वहाँ नहीं थाbundler-1.16.0

मैंने इसके साथ तय कियाsudo gem install bundler


6
के बाद आप "ठीक" यह, सुनिश्चित करें कि आप .rvm और .gem पर अपनी निर्देशिका अनुमतियों को ठीक
मानवता

1
@ अमानवीयता अधिक विस्तृत कृपया बताएं, मेरे उत्तर का संपादन खरीदें
निक कोव

1
आपके जवाब के लिए @humanity chrs - क्या आप .rvm और -gem पर अपनी निर्देशिका अनुमतियों को ठीक करने से क्या मतलब निकाल पाएंगे?
BKSpurgeon

1
@Nik kov .rvm और .gem फ़ोल्डरों का स्थान संभवत: आपके होम फोल्डर के अंदर है। Chmod कमांड द्वारा उन की अनुमतियां बदलने का प्रयास करें। इसने मेरे लिए काम किया।
सौर्वर्स

4
sudo gem install खराब प्रथा है, सामान्य स्थिति में सभी gem install बिना sudo के काम करना चाहिए
iamdi

33

असली जवाब यहाँ है अगर आप बुंडलर 2.0.1 या 2.0.0 को स्थापित करने की कोशिश करते हैं, तो बुंदेलर को रूबीजीम्स v3.0.0 की आवश्यकता होती है

कल मैंने बुंडलर 2.0 को रिलीज़ किया जिसमें कई ब्रेकिंग बदलाव पेश किए। उन परिवर्तनों में से एक बुंदेलर को रूबीजीम्स v3.0.0 की आवश्यकता थी। रिलीज़ करने के बाद, यह स्पष्ट हो गया है कि हमारे बहुत से उपयोगकर्ता बुंडलर 2 के मुद्दों पर चल रहे हैं, जिन्हें रुबाइम्स के एक बहुत ही नए संस्करण की आवश्यकता है।

हम उपयोगकर्ताओं से प्रतिक्रिया के लिए बारीकी से सुन रहे हैं और कम से कम v2.5.0 को रूबीगैम की आवश्यकता को आराम करने का फैसला किया है। हमने एक नया Bundler संस्करण, v2.0.1 जारी किया है, जो इस आवश्यकता को समायोजित करता है।

अधिक जानकारी के लिए, देखें: https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html


1
धन्यवाद, आपके लिंक ने मुझे कुछ समय के लिए समस्या से दूर रहने से बचाया
Ilya Konyukhov

कैपिस्ट्रानो एक नई मशीन पर विफल हो रहे थे लेकिन पुराने नहीं थे। यह मेरे लिए मुद्दा तय किया।
सीडब्ल्यूटीटी

1
यह ओपी के सवाल का "असली जवाब" नहीं हो सकता है क्योंकि बुंदलर 2.0 2017 में मौजूद नहीं था, हालांकि लोग निश्चित रूप से इस पृष्ठ को ढूंढेंगे क्योंकि लक्षण समान हैं।
फीलिप बसबी

मैं बंडलर 2.0.1 के साथ समस्या का सामना कर रहा हूँ
Fabrizio Bertoglio

यहाँ संस्करण 2.0.0 में अन्य ब्रेकिंग परिवर्तन हैं: github.com/bundler/bundler/releases/tag/v2.0.0
जोशुआ पिंटर

31

यह तय है:

  1. Gemfile.lock निकालें rm Gemfile.lock
  2. चलाने के bundle installफिर से

संपादित करें: उत्पादन में यह मत करो!

उत्पादन के लिए इस उत्तर पर जाएं : https://stackoverflow.com/posts/54083113/revisions


मैं विज़ुअल स्टूडियो कोड का उपयोग कर रहा हूं और एज़्योर डेवॉप्स के माध्यम से अपलोड और प्रकाशन कर रहा हूं, जहां यह बिल्ड पर विफल हो रहा था। मैंने अभी स्थानीय रूप से लॉक फ़ाइल को हटा दिया, प्रतिबद्ध और फिर धक्का दिया। बिल्ड इंस्टॉल रत्न कदम पर फेल हो रहा था लेकिन अब यह काम करता है।
डेविड जोन्स

4
मौजूदा उत्पादन परियोजना के लिए यह एक भयानक विचार है। आप अंत तक (अपने सिस्टम के साथ) नए कोड का एक गुच्छा स्थापित करेंगे।
Intentss

हां, यह एक बुरा विचार है और इसे ठीक नहीं माना जाना चाहिए। यह साबित करता है कि अन्य उत्तर (बेमेल बुंडलर संस्करण होने के बारे में) सही है। बुंडलर के सही संस्करण को स्थापित करके इसे ठीक करना चाहिए।
रॉबिन डॉटरटी

धन्यवाद @RobinDaugherty, मैंने सभी को चेतावनी दी है कि वे इसे उत्पादन में नहीं करने के लिए चेतावनी दें।
Klonept

यह या तो विकास में नहीं किया जाना चाहिए। लॉक फ़ाइल का एक अच्छा कारण है, इसे किसी मौजूदा प्रोजेक्ट में नहीं हटाया जाना चाहिए। अपने मशीन पर बंडल के सही संस्करण को स्थापित करने से समस्या ठीक हो जाती है, हटाने Gemfile.lockको अंतिम उपाय माना जाना चाहिए क्योंकि इससे अन्य समस्याएं हो सकती हैं।
रॉबिन डॉटरेटी

19

कारण आपका वर्तमान रूबी वातावरण है, आपको संस्करण के साथ बंडलर का एक अलग संस्करण मिला है Gemfile.lock

  • सुरक्षित तरीका, उसी संस्करण के साथ बंडल स्थापित करें Gemfile.lock बंडल करें, यह कुछ भी नहीं तोड़ेगा अगर कुछ असंगत बात हुई है।
  • कठिन रास्ता, बस हटाओ Gemfile.lock, और भागो bundle install

2
उसके लिए धन्यवाद। निश्चित रूप से हर किसी को सुरक्षित संस्करण का उपयोग करना चाहिए ताकि नए अप्रकाशित रत्नों के साथ पर्यावरण को गड़बड़ न करें । विशिष्ट संस्करण के साथ बंडल स्थापित करने के लिए जैसे 1.17उपयोगgem install bundler -v 1.17
उर्फ

12

यदि आप माणिक संस्करण को बदल रहे हैं rvm use, तो आप Gemfile.lock को हटा दें और पुनः प्रयास करें।


4

Gemfile.lock खोलें, जो आपके ऐप फ़ोल्डर की जड़ में पाया जाना है। फ़ाइल के अंत तक स्क्रॉल करें और उपयोग किए गए बंडल संस्करण को देखें। फिर आप सुनिश्चित करें कि आपने उपयोग किए गए बंडल संस्करण को स्थापित किया है:

gem install bundler -v x.xx.xx

या - यदि आपने उच्च बंडल संस्करण स्थापित किया है, तो Gemfile.lock और बंडल को हटा दें।

पसंद तुम्हारी है, मेरे दोस्त।


3
मैं Gemfile.lock को हटाने की अनुशंसा नहीं करूंगा क्योंकि यह सभी रत्नों को भी अद्यतन करेगा। इससे भारी परेशानी हो सकती है।
सैंड्रो एल

@ सैंड्रोएल - आपके कथन से पूरी तरह सहमत हैं। हालांकि, यह उन लोगों के लिए एक विकल्प है जो जोखिम लेने वाले हैं और नाटक के लिए तैयार हैं।
जॉर्ज केफेरबोक

धन्यवाद। Gemfile.lockफ़ोल्डर में मेरे द्वारा इंस्टॉल किए गए संस्करण को ट्रिक करने से!
कोडेडेवेंटर

2

अपने Gemfile.lockउपयोग से मेल खाने वाले बंडल को स्थापित करने के लिए:

gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"

1

मेरे मामले में उपरोक्त सुझाव मेरे काम नहीं आए। मेरा थोड़ा अलग परिदृश्य था।

जब मैं bundlerका उपयोग कर स्थापित करने की कोशिश की gem install bundler.. लेकिन मैं हो रहा था

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.

तो मैं का उपयोग करने की कोशिश की sudo gem install bundlerतो मैं हो रहा था

ERROR:  While executing gem ... (Gem::FilePermissionError)
  You don't have write permissions for the /usr/bin directory.

फिर मैंने कोशिश की sudo gem install bundler -n /usr/local/bin( /usr/binमेरे मामले में सिर्फ काम)।

और फिर सफलतापूर्वक स्थापित किया गया bundler

संपादित करें: मैं MacOS का उपयोग करता हूं, हो सकता है /usr/binकि उस कारण से मेरे लिए काम न करें ( https://stackoverflow.com/a/34989655/3786657 टिप्पणी)


0

मेरा आज भी यही मुद्दा था। मैं किसी भी हटाने के द्वारा इस समस्या को हल PATHमें .bashrcवृद्ध लोगों के लिए rvm


1
आप मुझे बचाएं मैंने अपने bashrc में PATH = "$ PATH: $ HOME / .rvm / bin" का निर्यात किया, मैं इसे हटा देता हूं और यह काम करता है
bormat

0

मेरी समस्या मैं आरवीएम का उपयोग कर रहा था और गलत रूबी संस्करण सक्रिय था ...

आशा है कि यह कम से कम एक व्यक्ति की मदद करता है


0

कई जवाबों को जोड़ते हुए, मेरी समस्या एक आधार के रूप में डॉकटर के रूबी का उपयोग करने की इच्छा से उपजी है, लेकिन फिर शीर्ष पर रेंब का उपयोग करना। यह बहुत सारी चीजों पर शिकंजा कसता है।

मैंने इसे इस मामले में तय किया:

  • Gemfile.lock संस्करण को अद्यतन करने की आवश्यकता थी - "BUNDLED with" को नवीनतम संस्करण में बदलने से एक बिंदु पर त्रुटि संदेश बदल गया, इसलिए इसकी आवश्यकता हो सकती है
  • , .bash_profile या .bashrc, पर्यावरण चर को परेशान करते हुए:
unset GEM_HOME
unset BUNDLE_PATH

उसके बाद, रेनेब ने ठीक काम किया। यकीन नहीं हो रहा है कि उन एनवी वर्सेस को पहले कैसे लोड किया जा रहा था ...



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