Cài đặt rvm không hoạt động: RV RVM không phải là một chức năng


234

Tôi mới cài đặt RVM, nhưng không thể làm cho nó hoạt động. Tôi có dòng như vậy ở cuối .profiletập tin của tôi :

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

Tôi đã cố chạy source .profilevà khởi động lại thiết bị đầu cuối, nhưng vẫn vậy, khi tôi chạy rvm use 1.9.2tôi nhận được:

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

Hệ thống của tôi là Ubuntu 11.10.


2
Tôi khuyên bạn nên rbenv thay thế cho RVM. Nó không cần phải được tải vào vỏ của bạn.
drinor

10
Bất cứ nơi nào có vấn đề với công nghệ nhất định, luôn có một anh hùng mặc áo giáp sáng ngời, với một lời khuyên quý giá là hãy vứt bỏ công nghệ đó và cài đặt một giải pháp thay thế hoàn toàn, một điều hoàn toàn tuyệt vời khác không có nhược điểm. Như thể tôi đã hỏi một số câu hỏi về ruby ​​và người anh hùng đó đã ngay lập tức nghĩ ra "chỉ cần cài đặt java" =)
Clergyman

Câu trả lời:


236

Bạn không sử dụng shell đăng nhập.

Quá trình kích hoạt cờ đăng nhập được mô tả ở đây , cũng có một số chi tiết về những gì một vỏ đăng nhập có thể được tìm thấy ở đây .

Do đó, bạn cần kiểm tra tùy chọn "Chạy dưới dạng vỏ đăng nhập" trong cài đặt của thiết bị đầu cuối Gnome. Cần phải mở thiết bị đầu cuối mới sau khi cài đặt cờ này.

Đôi khi nó được yêu cầu để đặt lệnh thành /bin/bash --login.


Đối với các kết nối từ xa, điều quan trọng là phải hiểu sự khác biệt giữa chạy sshphiên tương tác và thực hiện các lệnh đơn.

Trong khi chạy ssh servervà sau đó làm việc với máy chủ một cách tương tác, bạn đang sử dụng shell đăng nhập theo mặc định và tất cả đều ổn, nhưng đối với ssh server "command"bạn không sử dụng shell đăng nhập và sẽ bắt buộc phải chạy nó ssh server 'bash -lc "command"'.

Bất kỳ lời gọi từ xa nào cũng có thể có cùng một vấn đề như thực thi một lệnh với ssh.


4
Giải pháp tương đương sẽ là gì trên mac?
Adam Grant

8
thử rvm get stable --autovà kiểm tra cài đặt thiết bị đầu cuối của bạn
mpapis

10
fyi: chúng tôi đã phải bắt đầu một thiết bị đầu cuối mới sau khi thiết lập này.
oma

2
@mpapis Làm cách nào để thiết lập gnome-terminal thành "Chạy lệnh như vỏ đăng nhập" trên một máy chủ từ xa mà tôi không thể chuyển tiếp máy chủ X đến máy của mình?
Waseem

12
Để làm theo đề xuất của @ mpapis, --autođã không được ủng hộ --auto-dotfilesvì vậy lệnh bây giờ là rvm get stable --auto-dotfiles
Mart Van de Ven

432

Bạn cần chạy như sau

$ source ~/.rvm/scripts/rvm

sau đó chạy cái này

$ type rvm | head -n 1

và nếu bạn nhận được

rvm is a function

vấn đề đã được giải quyết.

Bạn cũng cần chạy user$ rvm requirementsđể xem các yêu cầu phụ thuộc cho hệ điều hành của bạn

Nguồn: https://rvm.io/rvm/install/

Tôi quên đề cập rằng bạn cần đặt mã này vào tệp ~ / .bashrc hoặc ~ / .zshrc và bạn sẽ không cần phải viết lại mã này. Chúc mừng!


2
Cảm ơn. Làm việc cho tôi trên Ubuntu 10.04.
vekozlov

19
Giải pháp này chỉ hoạt động trong phiên shell hiện tại. Nếu bạn làm theo giải pháp này, bạn sẽ phải lặp lại các bước này mỗi khi bạn đăng nhập lại vào bảng điều khiển. Một giải pháp lâu dài hơn là thêm phần sau vào tệp ~ / .bashrc: if test -f ~ / .rvm / scripts / rvm; sau đó ["$ (loại -t rvm)" = "hàm"] || nguồn ~ / .rvm / scripts / rvm fi
Stanley

Điều này thực sự nên có trên trang tích hợp gnome của RVM, ngắn gọn hơn nhiều và hoạt động như một cơ duyên trên mint nadia chạy KDE & Cinammon dù sao
k4t434sis

1
Và nếu nó vẫn không phải là một chức năng sau khi bạn làm tất cả điều này thì sao?
Br.Bill

Nếu giải pháp của @ Stanley không hoạt động, cũng hãy làm điều này: stackoverflow.com/questions/820517/bashrc-at-ssh-login
Adam Grant

105

Để giải quyết vĩnh viễn điều này chỉ cần cắt / dán dòng sau:

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

Từ: ~/.bash_profiletập tin

Tới: ~/.bashrctập tin

Lý do công việc này .bashrcđược thực hiện mỗi khi bạn vào thiết bị đầu cuối và .bash_profilemỗi lần bạn đăng nhập. Đó là lý do tại sao giải pháp /bin/bash --loginhoạt động, nhưng bạn phải làm điều đó mỗi khi bạn vào thiết bị đầu cuối. Bằng cách này, bạn được đặt cho đến định dạng tiếp theo của mình và sau đó bạn sẽ quên tất cả điều này :)


Là người dùng màn hình, tôi luôn cần đặt dòng này ~/.bashrcthay vì ~/.bash_profile.
ryenus

2
Cảm ơn! Tôi đã vô cùng bận tâm bởi sự chậm trễ hai giây cần thiết để gnome đăng nhập. Điều này sẽ ngăn chặn sự chậm trễ đó.
justinpage

6
Tại sao cài đặt rvm không tự động làm điều này?
balki

@mpapis là người quản lý phát hành cho rvm và anh ấy nói làm theo cách này "có thể thất bại các phiên X (Fedora 17 nếu tôi nhớ lại chính xác), nó không thành công phiên rsync ... và nhiều lý do tôi không thể nhớ lại ngay bây giờ". Tôi nghĩ rằng tôi sẽ chỉ gắn bó với `/ bin / bash --login.
kimbaudi

29

Tôi cũng phải đối mặt với vấn đề này. Cuối cùng tôi thực hiện dòng này trên thiết bị đầu cuối.

source ~/.rvm/scripts/rvm

Vấn đề là cố định. Bởi vì dòng này sẽ làm cho cá thể RVM trở thành một chức năng trong một thời gian cụ thể.


2
Câu trả lời đơn giản nhất trong tất cả. chỉ cần đặt dòng đó vào ~ / .bashrc của bạn và bạn sẽ ổn với bất kỳ trình giả lập thiết bị đầu cuối nào.
Nikkolasg

1
Xin chào - mặc dù lệnh này 'đã sửa' những điều cho phiên học kỳ tôi tham gia, nhưng kết quả không bị dính và không giúp ích cho các phiên kỳ hạn mới (hoặc khác). Và có vẻ như máy tính để bàn cũng không biết gì về những thay đổi. Tôi cũng "chống" điều đăng nhập vì nó dựa trên mỗi phiên / đăng nhập. Cá nhân tôi muốn khả năng so sánh cùng một chương trình với các phiên bản và Ruby khác nhau.
sẽ

1
Bạn là mvp thực sự. Không có gì khác làm việc cho đến khi tôi thử điều này. Tôi không quan tâm nếu nó tạm thời tôi chỉ cần sửa chữa.
ian-campbell

Tệp cài đặt cho rvm ở đâu, vì vậy khi bạn cài đặt nó, nó sẽ giải quyết vấn đề này và các vấn đề khác? Tôi đã sử dụng quy trình được mô tả trên trang chủ của họ và đã dành hàng giờ cố gắng để làm cho nó "chỉ hoạt động". Nên là một cái gì đó như "yum install rvm" và mọi thứ đã hoàn tất và sẵn sàng hoạt động.
JosephK

21

RVM mới nhất (rvm 1.11.6 (ổn định)) đã ngừng hoạt động trên Ubuntu (10.10 - 64 bit - nerdy gnat hoặc bất cứ điều gì) - Tôi tiếp tục nhận được

"RVM không phải là một chức năng, việc chọn các viên hồng ngọc với 'rvm sử dụng ...' sẽ không hoạt động."

Trước đây, tôi đã nhận được tin nhắn, nhưng 'rvm 1.9.3-p0@rails321' sẽ hoạt động. Bây giờ, nó sẽ không hoạt động - bạn hoàn toàn không thể thay đổi đá quý.

Không có gì hoạt động, cho đến khi tôi tìm thấy điều này - hãy biến nó thành dòng LAST trong /home/your-name/.bashrc

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


2
"rvm ổn định --auto" được thêm vào .bash_login [[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" và xóa nó khỏi .bashrc - đã thêm nguồn ~ / .bash_login vào cuối .bashrc và tại BEGINNING của bất kỳ tập lệnh nào thay đổi các viên ngọc ở giữa dòng
Rod McLaughlin

9

Như bạn đã nói, lỗi hiển thị có thể là lỗi sau.

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.

Như đã nói ở trên, chỉ cần nhập ' / bin / bash --login ' trong thiết bị đầu cuối của bạn (sau khi khởi động lại thiết bị đầu cuối của bạn), sau đó nhập comand 'rvm sử dụng 1.9.3' (ví dụ) và nó sẽ bắt đầu sử dụng cùng một phiên bản.

Chỉ cần thực hiện lệnh 'ruby -v' để xác nhận rằng RVM đang sử dụng phiên bản cập nhật của Ruby.


8

Tôi cũng gặp vấn đề này khi cài đặt rvm mới và không có câu trả lời nào ở đây khắc phục được. Đi vào trang web rvm chính thức, trên phần cơ bản, họ có lệnh này:

# từ http://rvm.io/rvm/basics

nguồn $ (rvm 1.9.3 do rvm env --path)

Bạn nên thay đổi 1.9.3 cho phiên bản ruby ​​mà bạn thực sự muốn, và nó sẽ biến rvm thành một chức năng bất kể loại vỏ.


7

mặc dù bạn đã chấp nhận câu trả lời, tôi muốn đề xuất một cách khác .. ~ / .bashrc được tải trước khi bất kỳ shell nào được mở. Thêm dòng đó vào cuối dòng đó và bạn không cần bất kỳ thứ gì trong vỏ đăng nhập đó


"Đó là lý do vỏ đăng nhập" là có lý do, tôi đã thực hiện nhiều thử nghiệm với nguồn RVM và đó là cách duy nhất đảm bảo hoạt động mà không bị phát hiện và khó giải quyết lỗi
mpapis

@mpapis Bạn có thể giải thích lý do? Từ các câu trả lời khác, có vẻ như hầu hết đều ổn với việc chuyển dòng sang tệp RC
balki

ví dụ: nó có thể thất bại phiên X (Fedora 17 nếu tôi nhớ chính xác), nó không thành công phiên rsync ... và nhiều lý do khác tôi không thể nhớ lại ngay bây giờ
mpapis

7

Có lẽ bạn có thể thử

  • Thiết bị đầu cuối của bạn ->
  • Chỉnh sửa ->
  • Tùy chọn hồ sơ ->
  • Tiêu đề và Lệnh ->
  • Kiểm tra "Chạy lệnh như một vỏ đăng nhập"
  • Làm xong

Đây là giải pháp đơn giản nhất và là giải pháp chính xác, vì shell thông thường bỏ qua .profile, sử dụng tùy chọn này sẽ khiến nó tải và không cần chỉnh sửa .bashrc.
DWils


4

Mở Terminal và sau đó vào Chỉnh sửa> Tùy chọn hồ sơ , sau đó chuyển đến Tab " Tiêu đề và lệnh " và kiểm tra " Chạy lệnh như đăng nhập Shell ".

Khởi động Bash và Bây giờ bạn có thể cài đặt Đá quý trực tiếp từ thiết bị đầu cuối mà không sử dụng sudo và lỗi " RVM không phải là chức năng, chọn hồng ngọc với 'rvm sử dụng ...' sẽ không hoạt động. " Sẽ bị loại bỏ.

Chúc mừng.


4

Tất cả các câu trả lời trên là hợp lệ. Nhưng khi tôi gặp vấn đề tương tự, giải pháp là như sau:

  • Cập nhật ZSH. (Đã thử cập nhật trực tiếp không hoạt động vì một số lý do. Vì vậy, đã gỡ cài đặt và cài đặt lại phiên bản cập nhật từ đây )
  • Đặt shell mặc định là zsh (tức là nếu bạn thích zsh) bằng cách sử dụngsudo chsh -s $(which zsh) $USER
  • Đảm bảo rằng mã sau nằm ở cuối mã của bạn .zshrcsau khi bạn đã cài đặt RVM mới nhất có thể sử dụng CURL từ trang RVM chính thức

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • ĐIỂM QUAN TRỌNG NHẤT: Đảm bảo rằng trong .zshrctệp của bạn, mỗi lần xuất PATHđược thêm vào :$PATH. Mà tôi tin là gốc rễ của vấn đề của tôi ngay cả sau khi làm theo các bước trên.

  • gửi tất cả các vấn đề của tôi về RVM Không phải là một chức năng đã biến mất. Nếu nó vẫn không hoạt động, cung cấp một số dấu vết lỗi ở đây. Sau một vài giờ đấu tranh để giải quyết vấn đề này, tôi chắc chắn mình đã thấy tất cả các lỗi liên quan.

Hy vọng nó giúp. Chúc mừng!


Vâng thưa ngài. Điều đó làm việc cho tôi. Không hiểu phần ĐIỂM QUAN TRỌNG NHẤT nhưng, Nó đã hoạt động.
Ricbermo

Khi bạn cố gắng cài đặt RVM, nó sẽ đưa ra cảnh báo nếu bạn có export PATH="/usr/bin:". Nó sẽ yêu cầu bạn nối $PATHvào nó. Đây là một nguyên nhân của một trong những vấn đề của tôi. Do đó, mọi thứ export PATHnên được $PATHnối thêm để trước khi xuất, bất cứ PATHbiến nào đã được nối. Dù sao, tốt là điều này là hữu ích.
Vishnu Narang

3

Quy trình cài đặt Ruby 1.9.3-p125 trên Mac OSX 10.8 Mountain Lion

  1. Bạn đã cài đặt XCode mới nhất (> = 4.3) và trình biên dịch Objective-C "clang".
  2. Bạn phải chạy trình bao "bash" để quy trình này hoạt động.
  3. Đi đến Tùy chọn hệ thống
  4. Nhấp vào "Người dùng & Nhóm"
  5. Nhấp vào khóa ở phía dưới bên trái của bảng điều khiển và nhập mật khẩu của bạn để mở khóa.
  6. "Ctrl-Click" trên biểu tượng người dùng của bạn trong khung bên trái của bảng điều khiển và chọn "Tùy chọn nâng cao ..."
  7. Thay đổi Shell đăng nhập thành "/ bin / bash"
  8. Đóng tùy chọn
  9. Mở một cửa sổ đầu cuối (nhấn lệnh + phím cách và gõ vào "terminal")
  10. Thực hiện theo các hướng dẫn tại:

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

Ghi chú:

  • Để cài đặt ruby, bạn có thể cần chỉ định trình biên dịch clang:

    $ rvm cài đặt 1.9.3p125 - với-gcc = clang

  • Nếu RVM không tìm thấy khoảng / usr / local / rvm, bạn cần tạo một liên kết:

    $ ln -s / Người dùng / [tên người dùng của bạn] /. rvm / usr / local / rvm


Tôi nghĩ rằng họ lên đến P194 bây giờ. Nếu bạn cài đặt rvm 1.9.3 --with-gcc = clang, bạn sẽ tự động nhận phiên bản 1.9.3 mới nhất.
George Campbell


1

Tôi cũng gặp lỗi tương tự vì tôi đã từng cài đặt phiên bản rvm cũ ruby-rvm với lệnh apt-get.

Tôi đã giải quyết vấn đề bằng cách xóa dòng script để cấu hình rvm cũ trong tệp .bashrc.

Kiểm tra tập lệnh cấu hình rvm cũ và sau đó chạy nguồn .profile



1

Tôi đã sửa nó bằng cách thêm dòng này vào .bash_profile:

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

0

Tôi đã có cùng một lỗi, nhưng không có giải pháp nào trên trang này có vẻ hiệu quả. Đối với tôi nó là đủ để thêm rvmtệp thực thi vào đường dẫn của tôi:

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

Et voila!


0

Tôi đã có cùng một vấn đề và tôi đã làm điều này trong .bash_profile của tôi và nó đã hoạt động. source "$HOME/.rvm/scripts/rvm".


0

Đối với những người gặp vấn đề tương tự và họ đang sử dụng Lubfox như tôi, tôi đã theo liên kết này :

Bạn bắt đầu thiết bị đầu cuối của bạn với

lxterminal -e "bash -il"

Cảm ơn @mpapsis đã chỉ cho tôi đi đúng hướng


Vì các liên kết đôi khi chỉ là nhất thời, nên có thể nên dán một bản tóm tắt nhỏ trong câu trả lời của bạn, cho hậu thế.
Marcel Wilson

0

Cách ô uế của tôi để thay đổi phiên bản ruby ​​là

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

nó hoạt động vì tôi có dòng dưới đây ~ / .bashrc nhưng kỳ lạ là nó không tự động thực hiện công việc.

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

Tôi đã cố gắng kết nối với --login với container docker của tôi

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

nhưng trong trường hợp này, container vẫn mở trong nền và tôi không thể nhập lệnh.

Tôi đã thử cả zhc và terminal với tùy chọn "open with /bin/bash --login"

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.