การติดตั้ง rvm ไม่ทำงาน:“ RVM ไม่ใช่ฟังก์ชั่น”


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
ฉันขอแนะนำให้คุณ rbenvเป็นทางเลือกให้กับ RVM ไม่จำเป็นต้องโหลดลงในเปลือกของคุณ
drinor

10
เมื่อใดก็ตามที่มีปัญหากับเทคโนโลยีบางอย่างจะมีฮีโร่ในชุดเกราะส่องแสงเสมอพร้อมคำแนะนำที่มีค่าในการทิ้งเทคโนโลยีนั้นและติดตั้งทางเลือกที่สมบูรณ์และน่าอัศจรรย์อีกแบบหนึ่งที่ไม่มีการถอยกลับ มันเหมือนกับว่าฉันได้ถามคำถามทับทิมและฮีโร่ตัวนั้นมาพร้อมกับ "เพิ่งติดตั้งจาวา" =)
Clergyman

คำตอบ:


236

คุณไม่ได้ใช้เชลล์ล็อกอิน

กระบวนการของการเปิดใช้ธงเข้าสู่ระบบได้อธิบายไว้ที่นี่ยังมีรายละเอียดบางอย่างเกี่ยวกับสิ่งที่เปลือกเข้าสู่ระบบจะสามารถพบได้ที่นี่

ดังนั้นคุณต้องตรวจสอบตัวเลือก"Run as login shell"ในการตั้งค่าของเทอร์มินัล Gnome จำเป็นต้องเปิดเทอร์มินัลใหม่หลังจากการตั้งค่าสถานะนี้

/bin/bash --loginบางครั้งก็จำเป็นต้องมีการตั้งค่าคำสั่งเพื่อ


สำหรับการเชื่อมต่อระยะไกลเป็นสิ่งสำคัญที่จะต้องเข้าใจความแตกต่างระหว่างการเรียกใช้sshเซสชันแบบโต้ตอบและดำเนินการคำสั่งเดียว

ในขณะที่ทำงานssh serverแล้วทำงานร่วมกับเซิร์ฟเวอร์โต้ตอบคุณกำลังใช้เปลือกเข้าสู่ระบบโดยค่าเริ่มต้นและก็ปรับทั้งหมด แต่สำหรับคุณไม่ได้ใช้เปลือกเข้าสู่ระบบและมันจะต้องทำงานด้วยssh server "command"ssh server 'bash -lc "command"'

sshใดภาวนาระยะไกลสามารถมีปัญหาเช่นเดียวกับการดำเนินการคำสั่งเดียวกับ


4
สิ่งที่เทียบเท่าโซลูชั่นบน mac?
Adam Grant

8
ลองrvm get stable --autoและตรวจสอบการตั้งค่าเครื่องของคุณ
mpapis

10
fyi: เราต้องเริ่มเทอร์มินัลใหม่หลังจากตั้งค่านี้
oma

2
@mpapis ฉันจะตั้งค่า gnome-terminal เป็น "Run command as login shell" บนเซิร์ฟเวอร์ระยะไกลที่ฉันไม่สามารถส่งต่อ X server ไปยังเครื่องของฉันได้อย่างไร
Waseem

12
ในการทำตามคำแนะนำของ @ mpapis --autoได้ถูกคัดค้าน--auto-dotfilesเพื่อให้คำสั่งตอนนี้คือ rvm get stable --auto-dotfiles
Mart Van de Ven

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
vekozlov

19
โซลูชันนี้ใช้งานได้ในเซสชันเชลล์ปัจจุบันเท่านั้น ถ้าคุณทำตามวิธีนี้คุณจะต้องทำซ้ำขั้นตอนเหล่านี้ทุกครั้งที่คุณเข้าสู่คอนโซลอีกครั้ง ทางออกถาวรเพิ่มเติมคือการเพิ่มสิ่งต่อไปนี้ในไฟล์ ~ / .bashrc: if test -f ~ / .rvm / สคริปต์ / rvm; ดังนั้น ["$ (ประเภท -t rvm)" = "ฟังก์ชั่น"] || source ~ / .rvm / สคริปต์ / rvm fi
Stanley

นี่ควรจะเป็นในหน้าการรวมคำพังเพยของ RVM กระชับมากขึ้นและทำงานเหมือนมีเสน่ห์บนเหรียญกษาปณ์นาเดียที่ใช้ KDE & Cinammon กระนั้น
k4t434sis

1
และถ้ามันยังไม่ได้ฟังก์ชั่นหลังจากคุณทำทั้งหมดนี้แล้วล่ะ?
Br.Bill

หากโซลูชันของ @ Stanley ไม่ทำงานให้ทำเช่นนี้: stackoverflow.com/questions/820517/bashrc-at-ssh-login
Adam Grant

105

หากต้องการแก้ไขอย่างถาวรเพียงแค่ตัด / วางบรรทัดต่อไปนี้:

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

จาก: ~/.bash_profileไฟล์

ถึง: ~/.bashrcไฟล์

เหตุผลที่ทำงานนี้คือที่.bashrcจะดำเนินการทุกครั้งที่คุณป้อน terminal และ.bash_profileทุกครั้งที่คุณเข้าสู่ระบบ นั่นคือสาเหตุที่วิธีแก้ปัญหา/bin/bash --loginทำงานได้ แต่คุณต้องทำเช่นนั้นทุกครั้งที่เข้าสู่เครื่อง วิธีนี้คุณจะถูกตั้งค่าจนกระทั่งรูปแบบถัดไปของคุณและคุณจะลืมสิ่งนี้ทั้งหมดในเวลานั้น :)


ในฐานะผู้ใช้หน้าจอที่ผมมักจะต้องใส่ในบรรทัดนี้แทน~/.bashrc ~/.bash_profile
ryenus

2
ขอบคุณ! ฉันรู้สึกรำคาญเป็นอย่างยิ่งจากการล่าช้าสองวินาทีที่จำเป็นสำหรับ gnome ในการเข้าสู่ระบบ สิ่งนี้จะป้องกันความล่าช้านั้น
justinpage

6
ทำไมการติดตั้ง rvm ถึงไม่ทำเช่นนี้โดยอัตโนมัติ?
balki

@mpapis เป็นตัวจัดการรีลีสสำหรับ rvm และเขาบอกว่าทำแบบนี้ "สามารถล้มเหลวเซสชัน X (Fedora 17 ถ้าฉันจำได้ถูกต้อง) มันล้มเหลวเซสชัน rsync ... และเหตุผลอื่น ๆ ที่ฉันจำไม่ได้ในตอนนี้" ฉันคิดว่าฉันจะติดกับ `/ bin / bash --login
kimbaudi

29

ฉันก็ประสบปัญหานี้เช่นกัน ในที่สุดฉันก็ดำเนินการบรรทัดนี้ใน terminal

source ~/.rvm/scripts/rvm

แก้ไขปัญหาแล้ว เนื่องจากบรรทัดนี้จะทำให้อินสแตนซ์ RVM เป็นฟังก์ชันสำหรับเวลาเฉพาะ


2
คำตอบที่ง่ายที่สุดของทั้งหมด เพียงแค่ใส่บรรทัดนั้นลงใน ~ / .bashrc ของคุณและคุณก็พร้อมที่จะไปกับเทอร์มินัลอีมูเลเตอร์ใด ๆ
Nikkolasg

1
สวัสดี - ถึงแม้ว่าคำสั่งนี้จะ 'แก้ไข' สำหรับเซสชันคำที่ฉันอยู่ แต่ผลลัพธ์นั้นไม่เหนียวเหนอะหนะและไม่ได้ช่วยเซสชันคำใหม่ (หรืออื่น ๆ ) และดูเหมือนว่าเดสก์ท็อปก็ไม่รู้การเปลี่ยนแปลงเช่นกัน ฉัน "ต่อต้าน -" สิ่งที่เข้าสู่ระบบด้วยเพราะมันเป็นต่อเซสชั่น / เข้าสู่ระบบตาม ส่วนตัวฉันต้องการความสามารถในการเปรียบเทียบโปรแกรมเดียวกันกับ Ruby-s และรุ่นต่าง ๆ
จะ

1
คุณเป็น mvp ตัวจริง ไม่มีอะไรทำงานจนกว่าฉันจะลองสิ่งนี้ ฉันไม่สนใจว่ามันจะเป็นการชั่วคราวฉันแค่ต้องการการแก้ไข
เอียนแคมป์เบล

ไฟล์ติดตั้งสำหรับ rvm อยู่ที่ไหนดังนั้นเมื่อคุณติดตั้งจะจัดการกับปัญหานี้และปัญหาอื่น ๆ ฉันใช้กระบวนการที่อธิบายไว้ในหน้าแรกของพวกเขาและใช้เวลาหลายชั่วโมงในการพยายามทำให้เป็น "แค่ทำงาน" ควรเป็นเช่น "yum install rvm" และทุกอย่างเสร็จสิ้นและพร้อมใช้งาน
JosephK

21

RVM ล่าสุด (rvm 1.11.6 (เสถียร)) หยุดทำงานบน Ubuntu (10.10 - 64 บิต - ริ้นโง่หรืออะไรก็ตาม) - ฉันยังคงได้รับ

"RVM ไม่ใช่ฟังก์ชั่นการเลือกทับทิมด้วย 'rvm use ... ' จะไม่ทำงาน"

ก่อนหน้านี้ฉันได้รับข้อความ แต่ 'rvm 1.9.3-p0@rails321' จะใช้งานได้ ตอนนี้มันไม่ทำงาน - คุณไม่สามารถเปลี่ยนอัญมณีได้เลย

ไม่มีอะไรทำงานจนกว่าฉันจะพบสิ่งนี้ - ทำให้นี่เป็นบรรทัดสุดท้าย /home/your-name/.bashrc

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


2
เพิ่ม "rvm ให้เสถียร - อัตโนมัติ" ใน. bash_login [[-s "$ HOME / .rvm / สคริปต์ / rvm"]] && แหล่งที่มา "$ HOME / .rvm / สคริปต์ / rvm" และลบออกจาก. bashrc - I เพิ่มแหล่งที่มา ~ / .bash_login ในตอนท้ายของ. bashrc และที่เริ่มต้นของสคริปต์ใด ๆ ที่มีการเปลี่ยนแปลงพลอยกลางแม่น้ำ
ร็อด McLaughlin

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.

ดังที่ได้กล่าวไว้ข้างต้นเพียงพิมพ์ ' / bin / bash --login ' ในเทอร์มินัลของคุณ (หลังจากรีสตาร์ทเครื่องของคุณ) จากนั้นพิมพ์ comand 'rvm ใช้ 1.9.3' (สำหรับเช่น) และมันจะเริ่มใช้เวอร์ชันเดียวกัน

เพียงดำเนินการคำสั่ง 'ruby -v' เพื่อยืนยันว่า RVM ใช้ Ruby รุ่นที่ปรับปรุงแล้ว


8

ฉันมีปัญหานี้เช่นกันในการติดตั้ง rvm ใหม่และไม่ใช่คำตอบที่นี่แก้ไขได้ เข้าสู่เว็บไซต์ rvm อย่างเป็นทางการในส่วนของพื้นฐานพวกเขามีคำสั่งนี้:

# จากhttp://rvm.io/rvm/basics

แหล่ง $ (rvm 1.9.3 ทำ rvm env - พา ธ )

คุณควรเปลี่ยน 1.9.3 สำหรับรุ่น ruby ​​ที่คุณต้องการจริง ๆ และมันจะทำให้ rvm ทำงานโดยไม่คำนึงถึงชนิดของเชลล์


7

แม้ว่าคุณจะได้รับคำตอบก็ตามฉันอยากจะแนะนำวิธีอื่น .. ~ / .bashrc ถูกโหลดก่อนที่จะเปิดเชลล์ใด ๆ เพิ่มบรรทัดนั้นในตอนท้ายและคุณไม่ต้องการสิ่งใด ๆ ของล็อกอินเชลล์


"นั่นเป็นสิ่งที่เปลือกหอย" มีเหตุผลฉันได้ทำการทดสอบหลายอย่างกับการจัดหา RVM และเป็นวิธีเดียวที่รับประกันการทำงานโดยไม่สามารถตรวจจับได้และยากที่จะแก้ไขข้อผิดพลาด
mpapis

@mpapis คุณช่วยอธิบายเหตุผลได้ไหม? จากคำตอบอื่น ๆ ดูเหมือนว่าส่วนใหญ่จะมีการปรับกับการย้ายสายการแฟ้ม rc
balki

เช่นมันสามารถล้มเหลวเซสชัน X (Fedora 17 ถ้าฉันจำได้ถูกต้อง), มันล้มเหลวเซสชัน rsync ... และเหตุผลอื่น ๆ ที่ฉันจำไม่ได้ตอนนี้
mpapis

7

บางทีคุณสามารถลองข้างล่าง:

  • Your Terminal ->
  • แก้ไข ->
  • การตั้งค่าโปรไฟล์ ->
  • ชื่อและคำสั่ง ->
  • ทำเครื่องหมายที่ "Run command as login shell"
  • เสร็จสิ้น

นี่เป็นทางออกที่ง่ายที่สุดและถูกต้องเพราะเชลล์ปกติข้าม. profile การใช้ตัวเลือกนี้จะทำให้โหลดได้และไม่จำเป็นต้องแก้ไข. bashrc เลย
DWils


4

เปิด Terminal ขึ้นมาจากนั้นไปที่Edit> Profile Preferencesจากนั้นไปที่แท็บ " Title and Command " แล้วเลือก " Run Command as login Shell "

Boot Up a Bash และตอนนี้คุณสามารถติดตั้ง Gems ได้โดยตรงจากเครื่องโดยไม่ต้องใช้ sudo และข้อผิดพลาด " RVM ไม่ใช่ฟังก์ชั่นการเลือกทับทิมด้วย 'rvm use ... ' จะไม่ทำงาน " จะถูกกำจัด

ไชโย


4

คำตอบข้างต้นทั้งหมดถูกต้อง แต่เมื่อฉันประสบปัญหาเดียวกันการแก้ปัญหาคือต่อไปนี้:

  • อัปเดต ZSH (พยายามอัปเดตโดยตรงไม่ทำงานด้วยเหตุผลบางประการดังนั้นให้ถอนการติดตั้งและติดตั้งเวอร์ชันที่อัปเดตใหม่จากที่นี่ )
  • ตั้งค่าเปลือกเริ่มต้นเป็นzsh (เช่นถ้าคุณต้องการ zsh) โดยใช้sudo chsh -s $(which zsh) $USER
  • ตรวจสอบให้แน่ใจว่ารหัสต่อไปนี้อยู่ด้านล่างของคุณ.zshrcหลังจากที่คุณติดตั้ง RVM ล่าสุดที่อาจใช้ CURL จากเว็บไซต์ RVM อย่างเป็นทางการ

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • จุดสำคัญที่สุด:ตรวจสอบให้แน่ใจว่าในของคุณ.zshrcทุกไฟล์ส่งออกไปจะถูกผนวกเข้ากับPATH :$PATHซึ่งฉันเชื่อว่าเป็นรากของปัญหาของฉันแม้หลังจากทำตามขั้นตอนข้างต้น

  • โพสต์สิ่งนี้ปัญหาทั้งหมดของRVM ไม่ใช่ฟังก์ชั่นหายไป หากยังไม่สามารถใช้งานได้โปรดระบุข้อผิดพลาดบางอย่างที่นี่ หลังจากสองสามชั่วโมงของการดิ้นรนเพื่อแก้ไขปัญหานี้ฉันแน่ใจว่าฉันต้องเห็นข้อผิดพลาดที่เกี่ยวข้องทั้งหมด

หวังว่ามันจะช่วย ไชโย!


ครับท่าน. ที่ทำงานให้ฉัน ไม่เข้าใจส่วนที่สำคัญที่สุด แต่ทำงานได้
Ricbermo

เมื่อคุณพยายามติดตั้ง RVM export PATH="/usr/bin:"ก็จะให้คำเตือนถ้าคุณมี มันจะขอให้คุณผนวก$PATHกับมัน นี่เป็นสาเหตุหนึ่งของปัญหาของฉัน ดังนั้นทุกคนexport PATHควร$PATHต่อท้ายก่อนที่จะทำการPATHเอ็กซ์ปอร์ตตัวแปรใด ๆ ที่ถูกผนวกเข้าด้วยกัน อย่างไรก็ตามดีว่ามันมีประโยชน์
พระนารายณ์ Narang

3

ขั้นตอนการติดตั้ง Ruby 1.9.3-p125 บน Mac OSX 10.8 Mountain Lion

  1. คุณได้ติดตั้ง XCode ล่าสุด (> = 4.3) แล้วและบรรทัดคำสั่ง Objective-C compiler "clang"
  2. คุณต้องรันเชลล์ "bash" เพื่อให้โพรซีเดอร์นี้ทำงานได้
  3. ไปที่การตั้งค่าระบบ
  4. คลิกที่ "ผู้ใช้ & กลุ่ม"
  5. คลิกล็อคที่ด้านล่างซ้ายของแผงและป้อนรหัสผ่านของคุณเพื่อปลดล็อค
  6. "Ctrl-Click" บนไอคอนผู้ใช้ของคุณในบานหน้าต่างด้านซ้ายของแผงควบคุมและเลือก "ตัวเลือกขั้นสูง ... "
  7. เปลี่ยนล็อกอินเชลล์เป็น "/ bin / bash"
  8. ปิดการตั้งค่า
  9. เปิดหน้าต่างเทอร์มินัล (กดคำสั่ง + สเปซบาร์และพิมพ์ใน "เทอร์มินัล")
  10. ทำตามคำแนะนำได้ที่:

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

หมายเหตุ:

  • ในการติดตั้ง ruby ​​คุณอาจต้องระบุ clang compiler:

    $ rvm ติดตั้ง 1.9.3p125 - ด้วย -gcc = เสียงดังกราว

  • หากไม่พบ RVM เกี่ยวกับ / usr / local / rvm คุณต้องสร้างลิงค์:

    $ ln -s / Users / [ชื่อผู้ใช้ของคุณ] /. rvm / usr / local / rvm


ฉันคิดว่าพวกเขาถึง P194 แล้ว หากคุณติดตั้ง rvm 1.9.3 --with-gcc = เสียงดังกราวคุณจะได้รับเวอร์ชันล่าสุด 1.9.3 โดยอัตโนมัติ
George Campbell


1

ฉันมีข้อผิดพลาดเดียวกันเพราะฉันเคยติดตั้ง rvm รุ่น ruby-rvm รุ่นเก่าพร้อมกับคำสั่ง apt-get

ฉันแก้ไขปัญหาโดยลบบรรทัดสคริปต์เพื่อกำหนดค่า rvm เก่าในไฟล์. bashrc

ตรวจสอบสคริปต์การกำหนดค่า rvm เก่าแล้วเรียกใช้ซอร์ส. 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/

และ voila!


0

ฉันมีปัญหาเดียวกันและฉันทำสิ่งนี้ใน. bash_profile ของฉันและทำงานได้ source "$HOME/.rvm/scripts/rvm".


0

สำหรับผู้ที่มาพร้อมกับปัญหาเดียวกันและพวกเขากำลังใช้ lubuntu อย่างฉันฉันไปตามลิงก์นี้ :

คุณเริ่มต้นเทอร์มินัลด้วย

lxterminal -e "bash -il"

ขอบคุณ @ แผนที่ที่ชี้ให้ฉันเห็นทิศทางที่ถูกต้อง


เนื่องจากบางครั้งลิงก์อาจมีการเปลี่ยนแปลงดังนั้นจึงเป็นความคิดที่ดีที่จะวางบทสรุปเล็ก ๆ ลงในคำตอบสำหรับลูกหลาน
Marcel Wilson

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 และ terminal ด้วยตัวเลือก "open with /bin/bash --login"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.