रूबी GEM_HOME और GEM_PATH कैसे सेट करें


10

मैं लिनक्स का एक नौसिखिया उपयोगकर्ता हूं और लिनक्स टकसाल 17.1 का उपयोग कर रहा हूं

मैंने उस समस्या के लिए पिछले 3 दिनों में लिनक्स टकसाल 20 बार पुनः इंस्टॉल किया है, लेकिन इसे ठीक नहीं कर सका

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

पिछले 3 दिनों में 20 से अधिक बार इसे पुनः इंस्टॉल करके मैंने वेब पर भी खोजा है। मुझे /etc/environmentउस सत्र में I प्रतिध्वनि पथ में पर्यावरण चर लगाने के लिए कहा गया है और उस /etc/environmentफ़ाइल में चिपकाया गया है।

अब भी मुझे अपने स्थापित रत्न नहीं मिलते

जब मैंने टाइप किया तो मुझे rvm -vनिम्नलिखित त्रुटियां मिलीं

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

जब मैं टर्मिनल के साथ काम करने की बात करता हूं तो मैं बहुत नौसिखिया व्यक्ति हूं, मैं माणिक के साथ काम करने के लिए कुछ बुनियादी कमांड चला सकता हूं।

मैं जानना चाहता हूँ

  1. PATH कैसे सेट करें
  2. GEM_HOME कैसे सेट करें
  3. GEM_PATH कैसे सेट करें

नीचे मेरा पूरा रास्ता है

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

mr @mohsen pahlevanzades मैं पूछ सकता हूं कि उन दो पंक्तियों को हटाने का क्या मतलब है, अगर आप मुझे बताने में संकोच नहीं करते हैं, का संबंध है
अमजद

अगर मुझे सही याद है, तो आपने लिखा है या आपको धन्यवाद,
फ़ारसीगुल्फ

जवाबों:


18

लगता है जैसे आप exportपर्यावरण चर स्थापित करने के लिए आदेश चाहते हैं :

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

हालांकि यह केवल वर्तमान सत्र के लिए प्रभावी होगा। उन्हें अधिक स्थायी बनाने के लिए, उन पंक्तियों को अपने साथ जोड़ें ~/.bashrc


3

आमतौर पर इसका मतलब है कि आरवीएम सही ढंग से सेटअप नहीं है। सामान्य गलती यह है कि आपने अपना .bashrcसही (या समान) संशोधित नहीं किया था या आपने अपने टर्मिनल को पुनः लोड नहीं किया था।

आपको rvm का उपयोग करते समय GEM_HOME या GEM_PATH को मैन्युअल रूप से सेट नहीं करना चाहिए।

आप कोशिश कर सकते हैं source ~/.rvm/scripts/rvmऔर देखें कि क्या काम करता है।

यह भी हो सकता है कि आपने अभी तक कोई रत्न निर्मित नहीं किया हो। Rvm और sudo का उपयोग न करें। Rvm सबसे अच्छा तब काम करता है जब आपके खाते में सिस्टम वाइड नहीं होता है।


आप यह सुनिश्चित करने के लिए भी source ~/.rvm/scripts/rvmअपने साथ जोड़ सकते ~/.bashrcहैं कि हर बार जब आप एक नया शेल शुरू करते हैं तो यह लोड होता है।
नील डी वेट

2

यहां मैंने जो सीखा है और मैंने GEM_HOME की इस सामान्य समस्या को हल किया है और GEM_PATH वातावरण चर त्रुटि को सेट नहीं करते हैं।


पृष्ठभूमि

RVM इंस्टाल प्रत्येक आरवीएम जो सेटअप है के लिए GEM_HOME और GEM_PATH env var बनाने वाला है और यह ऐसा करता है। लेकिन वहाँ एक बग जाहिरा तौर पर ऐसा है कि कुछ मामलों में env var केवल अस्थायी रूप से सेट होते हैं, और उन्हें फिर से सेट करने के लिए आपको उन्हें कमांड लाइन के साथ सेट करना होगा। मुझे एक RVM के लिए env var को जारी रखने के लिए वर्कअराउंड मिला।

वैकल्पिक हल

  1. अपने सक्रिय (RVM में) रूबी संस्करण का पता लगाएं: अपने उत्पादन सर्वर पर अपनी ऐप निर्देशिका और प्रकार पर जाएं $rvm list। इसके परिणामस्वरूप स्थापित रूबी संस्करणों की एक सूची होगी और जो आरवीएम के लिए सक्रिय है। प्रतिक्रिया का उदाहरण:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

इसलिए, मुझे पता है कि वर्तमान में आरवीएम संस्करण का उपयोग कर रहा है ruby-1.9.3-p551। अगले चरण के लिए आपको यह जानकारी चाहिए।

  1. GEM_PATH और GEM_HOME के ​​लिए पथ प्राप्त करें : आप कमांड लाइन से निष्पादित करके ऐसा करते हैं $rvm use ruby-1.9.3-p551। फिर भी कॉमैन लाइन से कमांड का उपयोग करके सभी पर्यावरण सेटिंग्स दिखाते हैं env। GEM_PATH और GEM_HOME खोजें और उन सभी को कार्यक्षेत्र में कॉपी करें।

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. GEM_HOME और GEM_PATH परिवेश चर सेट करें : अब कई प्रोफ़ाइल फ़ाइलों में से एक में इन परिवेश चर सेट करें। मैं आरवीएम संस्करण अलगाव संरचना को बनाए रखना चाहता था, इसलिए मैंने इन दो पंक्तियों के साथ /profile.d/appspecific.sh को अपडेट किया:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


जाहिरा तौर पर GEM_HOME और GEM_PATH RVM के लिए विशिष्ट नहीं हैं?
बार्लोप

2

मैंने पाया कि .profile पिछले लोड हो जाता है और जो पथ के सामने ~ / .Local / bin और ~ / bin डालता है। मैं /etc/profile.d/rvm.sh को ~ / .rvm पर ले आया और .profile के बहुत अंत में मैंने "स्रोत ~ / .rvm / rvm.sh" जोड़ा और त्रुटि हो गई। मैं लिनक्स मिंट 18.3 पर हूं। मेरे पास pyenv, rvm और sdkman स्थापित हैं और वे सभी अंतिम होना चाहते हैं। वे अब ठीक काम कर रहे हैं। :)

यदि यह एक साझा प्रणाली है तो बस rvm.sh को पथ से बाहर ले जाएं और कोई भी अन्य उपयोगकर्ता इसे स्रोत कर सकता है, जैसे कि /opt/rvm/rvm.sh से उदाहरण के लिए।


1

@Coteyr का उल्लेख करने पर, आपको उपयोग करते समय GEM_HOME और GEM_PATH को मैन्युअल रूप से सेट नहीं करना चाहिए rvm। यदि आप अपने PATH पर्यावरण चर की जाँच करते हैं $ echo $PATH, तो चलकर और $ HOME / .rvm / bin इसका हिस्सा हैं, तो आपको यह सुनिश्चित करने की आवश्यकता है कि आपका टर्मिनल लॉगिन शेल के रूप में कमांड चलाता है। उदाहरण के लिए यदि आप एक उबंटू मशीन पर हैं, तो आप अपना टर्मिनल खोलते हैं: मेनू पर जाएँ: मेनू> संपादित करें> प्रोफ़ाइल प्राथमिकताएँ> आदेश फिर "लॉगिन शेल के रूप में रन कमांड" का चयन करें।

यह एक पुराना मुद्दा प्रतीत होता है rvmजिसके साथ मुझे लगता है कि इसे ठीक करने के लिए तुच्छ नहीं है क्योंकि यह थोड़ी देर के लिए आसपास रहा है।


1

को आबाद करने के लिए $GEM_PATHअपने सिस्टम (Manjaro / आर्क) के साथ gemsमैं अपने को जोड़ा गया .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.