आरवीएम इंस्टॉलेशन काम नहीं कर रहा है: "आरवीएम एक फ़ंक्शन नहीं है"


234

मैंने अभी RVM स्थापित किया है, लेकिन यह काम नहीं कर सकता है। मेरी .profileफ़ाइल के अंत में ऐसी पंक्ति है :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

मैंने source .profileटर्मिनल को चलाने और फिर से शुरू करने की कोशिश की , लेकिन फिर भी, जब मैं दौड़ता rvm use 1.9.2हूं तो मुझे मिल रहा है:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

मेरा सिस्टम Ubuntu 11.10 है।


2
मैं आपको आरवीएम के विकल्प के रूप में रेंबव प्रदान करता हूं । इसे आपके शेल में लोड करने की आवश्यकता नहीं है।
drinor

10
जहां किसी को कुछ निश्चित प्रौद्योगिकी के साथ समस्या है, वहाँ हमेशा चमकते कवच में एक नायक होता है, उस तकनीक को फेंकने और पूरी तरह से वैकल्पिक स्थापित करने के लिए एक अनमोल सलाह के साथ, बिना किसी ड्रॉ बैक वाले एक और अद्भुत। यह ऐसा है जैसे मैंने कुछ रूबी सवाल पूछा और वह नायक तुरंत "सिर्फ जावा स्थापित करें" =)
पादरी जुआन

जवाबों:


236

आप एक लॉगिन शेल का उपयोग नहीं कर रहे हैं।

लॉगिन ध्वज को सक्षम करने की प्रक्रिया यहां बताई गई है , लॉगिन शेल क्या हो सकता है, इसके बारे में भी कुछ विवरण यहां दिए गए हैं

इस प्रकार, आपको गनोम टर्मिनल की सेटिंग में "रन ऐज़ लॉगिन शेल" विकल्प की जांच करने की आवश्यकता है । ध्वज को स्थापित करने के बाद नया टर्मिनल खोलना आवश्यक है।

कभी-कभी इसके लिए कमांड सेट करना आवश्यक होता है /bin/bash --login


के लिए दूरदराज के कनेक्शन यह इंटरैक्टिव चल के बीच differene समझना महत्वपूर्ण है sshसत्र और एकल आदेशों को क्रियान्वित।

रनिंग ssh serverऔर फिर सर्वर के साथ काम करते हुए, आप डिफ़ॉल्ट रूप से लॉगिन शेल का उपयोग कर रहे हैं और यह सब ठीक है, लेकिन ssh server "command"आप लॉगिन शेल का उपयोग नहीं कर रहे हैं और इसके साथ इसे चलाने की आवश्यकता होगी ssh server 'bash -lc "command"'

किसी भी दूरस्थ आह्वान में एकल कमांड निष्पादित करने के समान समस्या हो सकती है ssh


4
मैक पर समतुल्य समाधान क्या होगा?
एडम ग्रांट

8
कोशिश करें rvm get stable --autoऔर अपनी टर्मिनल सेटिंग्स की जाँच करें
mpapis

10
fyi: हमें इसे स्थापित करने के बाद एक नया टर्मिनल शुरू करना था।
oma

2
@mpapis मैं दूरस्थ सर्वर पर "रन कमांड के रूप में लॉगिन शेल" के लिए gnome-टर्मिनल को कैसे सेटअप करूंगा जिसके लिए मैं अपनी मशीन पर X सर्वर को अग्रेषित नहीं कर सकता हूं?
वसीम

12
@ एमपीपीस के सुझाव का पालन करने के लिए, अब आदेश के --autoपक्ष में पदावनत कर दिया गया --auto-dotfilesहै rvm get stable --auto-dotfiles
मार्ट वैन डे वेन

432

आपको निम्न को चलाने की आवश्यकता है

$ source ~/.rvm/scripts/rvm

फिर इसे चलाएं

$ type rvm | head -n 1

और अगर आपको मिलता है

rvm is a function

समस्या सुलझ गई है।

आपको user$ rvm requirementsअपने ऑपरेटिंग सिस्टम के लिए निर्भरता आवश्यकताओं को देखने के लिए भी चलना होगा

स्रोत: https://rvm.io/rvm/install/

मैं यह उल्लेख करना भूल जाता हूं कि आपको इस कोड को ~ / .bashrc या ~ / .zshrc फ़ाइल में डालने की आवश्यकता है और आपको फिर से इस कोड को लिखने की आवश्यकता नहीं होगी। चीयर्स!


2
धन्यवाद। Ubuntu 10.04 पर मेरे लिए काम किया।
18

19
यह समाधान केवल वर्तमान शेल सत्र में काम करता है। यदि आप इस समाधान का पालन करते हैं, तो आपको हर बार जब आप फिर से कंसोल पर लॉग इन करते हैं, तो आपको इन चरणों को दोहराना होगा। एक और अधिक स्थायी समाधान निम्नलिखित को ~ / .bashrc फ़ाइल में जोड़ना है: यदि परीक्षण -f ~ / .rvm / स्क्रिप्ट / rvm; तब ["$ (टाइप -t rvm)" = "फ़ंक्शन"] || source ~ / .rvm / लिपियों / आरवीएम फाई
स्टेनली

यह वास्तव में आरवीएम के सूक्ति एकीकरण पृष्ठ पर होना चाहिए, बहुत अधिक संक्षिप्त और मिंट नाडिया पर आकर्षण की तरह काम किया केडीई और
सिनेमॉन पर

1
और अगर यह सब करने के बाद भी यह एक फंक्शन नहीं है, तो क्या होगा?
Br.Bill

यदि @ स्टेनली का समाधान काम नहीं करता है, तो यह भी करें: stackoverflow.com/questions/820517/bashrc-at-ssh-login
एडम ग्रांट

105

स्थाई रूप से इसे हल करने के लिए बस लाइन को काटें / पेस्ट करें:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

से: ~/.bash_profileफ़ाइल

To: ~/.bashrcफाइल करना

कारण यह है कि .bashrcहर बार जब आप टर्मिनल में प्रवेश करते हैं, और .bash_profileहर बार लॉगिन करते समय यह कार्य निष्पादित होता है । यही कारण है कि समाधान /bin/bash --loginकाम करता है, लेकिन आपको यह करना होगा कि हर बार जब आप टर्मिनल में प्रवेश करें। इस तरह से आप अपने अगले प्रारूप तक सेट होते हैं, और तब तक आप यह सब भूल जाएंगे :)


एक स्क्रीन उपयोगकर्ता के रूप में, मुझे हमेशा इस पंक्ति को ~/.bashrcइसके स्थान पर रखना होगा ~/.bash_profile
रेनस

2
धन्यवाद! मैं प्रवेश करने के लिए सूक्ति के लिए आवश्यक दो दूसरी देरी से बेहद परेशान था। इससे उस देरी को रोका जा सकेगा।
justinpage

6
Rvm इंस्टॉलेशन स्वचालित रूप से ऐसा क्यों नहीं करता है?
बाल्की

@mpapis आरवीएम के लिए रिलीज़ मैनेजर है और वह कहता है कि इस तरह से करना "एक्स सत्र को विफल कर सकता है (फेडोरा 17 अगर मैं सही ढंग से याद करता हूं), तो यह rsync सत्र विफल रहता है ... और अधिक कारण जो मैं अभी याद नहीं कर सकता हूं"। मुझे लगता है कि मैं बस `/ बिन / बैश - क्लोजिन के साथ रहना चाहता हूं।
किंबौड़ी

29

मुझे भी इस समस्या का सामना करना पड़ा। अंत में मैंने टर्मिनल पर इस लाइन को निष्पादित किया।

source ~/.rvm/scripts/rvm

समस्या तय है। क्योंकि यह लाइन किसी विशेष समय के लिए आरवीएम उदाहरण को एक फ़ंक्शन बना देगी।


2
सब से सरल उत्तर। बस उस लाइन को अपने ~ / .bashrc में डालें और आप किसी भी टर्मिनल एमुलेटर के साथ जाने के लिए अच्छे हैं।
निकोलसगैग

1
हाय - हालाँकि, यह कमांड 'सेशन' शब्द के लिए था जो मैं सत्र में था, परिणाम चिपचिपे नहीं थे और नए (या अन्य) टर्म सत्रों में मदद नहीं करते थे । और ऐसा लगता है कि डेस्कटॉप भी परिवर्तनों से अनभिज्ञ है। मैं लॉगिन "विरोधी" हूं क्योंकि यह प्रति सत्र / लॉगिन आधारित है। व्यक्तिगत रूप से मैं विभिन्न रूबी-एस और संस्करणों के साथ एक ही कार्यक्रम की तुलना करना चाहता हूं।
होगा

1
तुम असली mvp हो। जब तक मैंने यह कोशिश नहीं की, कुछ और काम नहीं किया। मुझे परवाह नहीं है अगर यह अस्थायी है तो मुझे सिर्फ एक फिक्स की आवश्यकता है।
इयान-कैंपबेल

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

21

नवीनतम आरवीएम (आरवीएम 1.11.6 (स्थिर)) ने उबंटू पर काम करना बंद कर दिया (10.10 - 64 बिट - नीर्ड ग्नट या जो भी हो) - मुझे प्राप्त होता रहा

"आरवीएम एक फ़ंक्शन नहीं है, 'आरवीएम उपयोग ...' के साथ माणिक का चयन करने से काम नहीं चलेगा।"

इससे पहले, मुझे संदेश मिला, लेकिन 'rvm 1.9.3-p0@rails321' काम करेगा। अब, यह काम नहीं करेगा - आप रत्नों को बिल्कुल भी नहीं बदल सकते।

कुछ भी काम नहीं किया, जब तक मुझे यह नहीं मिला - इसे LAST लाइन बनाओ /home/your-name/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"


2
। जोड़ा गया स्रोत ~ / .bash_login के अंत में .Bashrc और किसी भी स्क्रिप्ट के BEGINNING में, जो कि बीच में रत्न बदल देता है
रॉड मैक्लाफलिन

9

जैसा कि आपने कहा, दिखाई गई त्रुटि निम्नलिखित हो सकती है।

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command. 
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

जैसा कि ऊपर कहा गया है, बस अपने टर्मिनल में ' / बिन / बैश - क्लोजिन ' टाइप करें (अपने टर्मिनल को फिर से शुरू करने के बाद), फिर कॉमैंड ' आरवीएम का उपयोग 1.9.3' (उदाहरण के लिए) टाइप करें और यह उसी संस्करण का उपयोग करना शुरू कर देगा।

बस आदेश 'रूबी -v' निष्पादित करें यह पुष्टि करने के लिए कि आरवीएम रूबी के अद्यतन संस्करण का उपयोग कर रहा है।


8

मुझे यह समस्या एक नए आरवीएम इंस्टॉलेशन पर भी मिली थी, और यहां दिए गए जवाबों में से किसी ने भी इसे ठीक नहीं किया। आधिकारिक rvm साइट में जाकर, बेसिक्स सेक्शन पर, उनके पास यह कमांड है:

# http://rvm.io/rvm/basics से

स्रोत $ (rvm 1.9.3 do rvm env --path)

आपको माणिक संस्करण के लिए 1.9.3 बदलना चाहिए जो आप वास्तव में चाहते हैं, और यह शेल प्रकार की परवाह किए बिना एक फ़ंक्शन को आरवीएम बना देगा।


7

हालांकि आपने एक उत्तर स्वीकार कर लिया है, मैं किसी अन्य तरीके का सुझाव देना चाहूंगा .. ~ / .bashrc किसी भी खोल को खोलने से पहले लोड किया जाता है। उस पंक्ति को उस के अंत में जोड़ें, और आपको उस लॉगिन शेल चीज़ की कोई आवश्यकता नहीं है


"वह लॉगिन शेल चीज़" एक कारण के लिए है, मैंने आरवीएम सोर्सिंग के साथ कई परीक्षण किए हैं और यह एकमात्र तरीका है जो त्रुटियों को हल करने के लिए undetectable और कठिन बिना काम की गारंटी देता है
mpapis

@mpapis क्या आप इसका कारण बता सकते हैं? अन्य उत्तर से, सबसे अधिक पसंद दिखता करने के लिए आर सी फ़ाइल लाइन चलती के साथ ठीक कर रहे हैं
बाल्की

उदाहरण के लिए यह X सत्र को विफल कर सकता है (फेडोरा 17 अगर मैं सही ढंग से याद करता हूं), तो यह rsync सत्र विफल हो जाता है ... और अधिक कारण
जिन्हें

7

शायद आप कोशिश कर सकते हैं:

  • आपका टर्मिनल ->
  • संपादित करें ->
  • प्रोफ़ाइल प्राथमिकताएँ ->
  • शीर्षक और कमान ->
  • "रन कमांड को लॉगिन शेल के रूप में जांचें"
  • किया हुआ

यह सबसे आसान समाधान है और एक सामान्य खोल के रूप में सही है। इस विकल्प का उपयोग करने से यह लोड हो जाएगा और इसे संपादित करने की आवश्यकता नहीं होगी।
20


4

टर्मिनल खोलें और फिर संपादन> प्रोफ़ाइल प्राथमिकताएं पर जाएं और फिर टैब " शीर्षक और कमांड " पर जाएं और " रन कमांड के रूप में चेक आउट करें" की जांच करें ।

बूट अप ए बैश और अब आप सूडो के उपयोग के बिना टर्मिनल से सीधे रत्न स्थापित कर सकते हैं और त्रुटि " आरवीएम एक फ़ंक्शन नहीं है, ' आरवीएम उपयोग ...' के साथ माणिक का चयन करने से काम नहीं चलेगा। " "समाप्त हो जाएगा।

चीयर्स।


4

उपरोक्त सभी उत्तर मान्य हैं। लेकिन जब मैंने एक ही मुद्दे का सामना किया, तो समाधान निम्नलिखित था:

  • ZSH अपडेट करें। (किसी कारण से सीधे काम करने की कोशिश नहीं की गई। इसलिए यहां से अपडेट किए गए संस्करण को अनइंस्टॉल और पुनः इंस्टॉल किया गया )
  • डिफ़ॉल्ट शेल को zsh के रूप में सेट करें (अर्थात यदि आप zsh को पसंद करते हैं) का उपयोग करsudo chsh -s $(which zsh) $USER
  • सुनिश्चित करें कि आपके .zshrcद्वारा नवीनतम RVM स्थापित करने के बाद निम्नलिखित कोड आपके अधिकार में है, संभवतः आधिकारिक RVM साइट से CURL का उपयोग कर रहा है

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • सबसे महत्वपूर्ण बिंदु: सुनिश्चित करें कि आपकी .zshrcफ़ाइल में हर निर्यात के PATHसाथ जोड़ा गया है :$PATH। जो मैं मानता हूं कि उपरोक्त चरणों का पालन करने के बाद भी मेरी समस्याओं का मूल था।

  • आरवीएम की मेरी सभी समस्याओं को पोस्ट करें एक फ़ंक्शन नहीं होने के कारण यह चला गया। यदि यह अभी भी काम नहीं करता है, तो यहां कुछ त्रुटि ट्रेस दें। इस समस्या को हल करने के कुछ घंटों के संघर्ष के बाद, मुझे यकीन है कि मैंने सभी संबंधित त्रुटियों को देखा होगा।

आशा करता हूँ की ये काम करेगा। चीयर्स!


जी श्रीमान। मेरे लिए वह काम कर गया। क्या मोस्ट इंपॉर्टेंट पॉइंट पार्ट समझ में नहीं आया लेकिन, यह काम कर गया।
रिकबरमो

जब आप RVM को स्थापित करने का प्रयास करते हैं, तो यह आपके पास एक चेतावनी देगा export PATH="/usr/bin:"। यह आप $PATHइसे करने के लिए कहेंगे । यह मेरी एक समस्या का कारण था। इसलिए, प्रत्येक export PATHको $PATHसंलग्न किया जाना चाहिए ताकि निर्यात से पहले, जो भी PATHचर जोड़ा गया था। वैसे भी, अच्छा है कि यह मददगार था।
विष्णु नारंग

3

मैक OSX 10.8 माउंटेन लायन पर रूबी 1.9.3-p125 स्थापित करने की प्रक्रिया

  1. आपने पहले से ही नवीनतम XCode (> = 4.3) और कमांड लाइन ऑब्जेक्टिव-सी कंपाइलर "क्लैंग" स्थापित किया है।
  2. इस प्रक्रिया को काम करने के लिए आपको "बैश" शेल चलाना होगा।
  3. सिस्टम वरीयताएँ पर जाएँ
  4. "उपयोगकर्ता और समूह" पर क्लिक करें
  5. पैनल के नीचे बाईं ओर लॉक पर क्लिक करें और इसे अनलॉक करने के लिए अपना पासवर्ड दर्ज करें।
  6. पैनल के बाएं फलक में अपने उपयोगकर्ता आइकन पर "Ctrl-Click" और "उन्नत विकल्प ..." चुनें
  7. लॉगिन शेल को "/ बिन / बैश" में बदलें
  8. वरीयताओं को बंद करें
  9. एक टर्मिनल विंडो खोलें (प्रेस कमांड + स्पेसबार और "टर्मिनल" टाइप करें)
  10. निर्देशों का पालन करें:

http://www.frederico-araujo.com/2011/07/30/installing-rails-on-os-x-lion-with-homebrew-rvm-and-mysql/

टिप्पणियाँ:

  • माणिक स्थापित करने के लिए, आपको क्लैंग कंपाइलर निर्दिष्ट करने की आवश्यकता हो सकती है:

    $ rvm 1.9.3p125 --wcc-gcc = क्लैंग स्थापित करें

  • यदि RVM / usr / लोकल / rvm के बारे में पकड़ नहीं पाया, तो आपको एक लिंक बनाने की आवश्यकता है:

    $ ln -s / Users / [आपका उपयोगकर्ता नाम] /। rvm / usr / स्थानीय / rvm


मुझे लगता है कि वे अब P194 तक हैं। अगर आप 1.9.3 --with-gcc = clang इंस्टॉल करते हैं, तो आपको स्वचालित रूप से 1.9.3 का नवीनतम संस्करण मिल जाएगा।
जॉर्ज कैंपबेल


1

मुझे वही त्रुटि मिली क्योंकि मैंने कभी भी पुराने rvm संस्करण माणिक-rvm को apt-get कमांड के साथ स्थापित किया था।

मैंने .bashrc फ़ाइल में पुराने rvm को कॉन्फ़िगर करने के लिए स्क्रिप्ट लाइन को हटाकर समस्या को हल किया।

पुराने rvm config स्क्रिप्ट की जाँच करें और फिर स्रोत .profile चलाएँ



1

मैंने इस लाइन को .bash_profile में जोड़कर इसे ठीक किया:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

0

मेरे पास एक ही त्रुटि थी, लेकिन इस पृष्ठ पर कोई भी समाधान काम नहीं कर रहा था। मेरे लिए यह rvmमेरे पथ के लिए निष्पादन योग्य को जोड़ने के लिए पर्याप्त था :

PATH=$PATH:/usr/local/rvm/bin/

ए टी वॉयला!


0

मेरे पास एक ही मुद्दा था और मैंने अपने .bash_profile में यह किया और यह काम किया। source "$HOME/.rvm/scripts/rvm"


0

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

आप अपने टर्मिनल के साथ शुरू करते हैं

lxterminal -e "बैश -il"

@Mpapsis को धन्यवाद जिन्होंने मुझे सही दिशा की ओर इशारा किया


चूंकि लिंक कभी-कभी क्षणभंगुर होते हैं, इसलिए उत्तर के लिए अपने जवाब में एक छोटे से सारांश को पेस्ट करना एक अच्छा विचार हो सकता है।
मार्सेल विल्सन

0

माणिक संस्करण को बदलने का मेरा अशुद्ध तरीका है

rvm alias create default ruby-2.2.3 && source ~/.bashrc && rvm list

यह काम करता है क्योंकि मेरे पास मेरे ~ / .bashrc में लाइन बाइल है लेकिन अजीब तरह से यह स्वचालित रूप से काम नहीं करता है।

[[ -s "/usr/local/rvm/bin/rvm" ]] && source "/usr/local/rvm/bin/rvm"

मैंने अपने डॉकटर कन्टेनर के साथ -लोगिन को जोड़ने की कोशिश की

docker run -it imagename `/bin/bash --login`

लेकिन इस मामले में कंटेनर पृष्ठभूमि में खुला रहता है और मैं कमांड दर्ज नहीं कर सकता।

मैं दोनों ZHC और विकल्प के साथ टर्मिनल की कोशिश की "के साथ खुला /bin/bash --login"

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