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
RVM의 대안으로 rbenv 를 권장합니다 . 쉘에로드 할 필요는 없습니다.
drinor

10
특정 기술에 문제가있는 곳이라면 항상 갑옷을 입히는 영웅이 있습니다. 그 기술을 버리고 전혀 대안이없는 완전히 다른 대안을 설치하라는 귀중한 조언이 있습니다. 마치 루비에 관한 질문을했던 것처럼, 그 영웅은 즉시 "Just install java"=)를 생각해 냈습니다
Clergyman

답변:


236

로그인 쉘을 사용하지 않습니다.

로그인 플래그를 활성화하는 프로세스는 여기 에 설명되어 있으며 로그인 쉘에 대한 자세한 내용은 여기를 참조하십시오 .

따라서 Gnome 터미널 설정에서 "로그인 셸로 실행" 옵션을 확인해야합니다 . 이 플래그를 설정 한 후 새 터미널을 열어야합니다.

때로는 명령을로 설정해야합니다 /bin/bash --login.


대한 원격 연결은 대화 형 실행 사이의 differene 이해하는 것이 중요하다 ssh세션을 단일 명령을 실행합니다.

ssh server서버를 대화식으로 실행 하고 작업 하는 동안 기본적으로 로그인 셸을 사용하고 있으며 모두 괜찮습니다.하지만 ssh server "command"로그인 셸을 사용하지 않으므로로 실행해야합니다 ssh server 'bash -lc "command"'.

원격 호출은로 단일 명령을 실행하는 것과 같은 문제가있을 수 있습니다 ssh.


4
Mac에서 동등한 솔루션은 무엇입니까?
Adam Grant

8
시도 rvm get stable --auto및 터미널 설정을 확인
mpapis

10
참고 : 이것을 설정 한 후 새로운 터미널을 시작해야했습니다.
oma

2
@mpapis X 서버를 내 컴퓨터로 전달할 수없는 원격 서버에서 gnome-terminal을 "로그인 명령으로 명령 실행"으로 설정하려면 어떻게해야합니까?
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
감사. 우분투 10.04에서 나를 위해 일했습니다.
vekozlov

19
이 솔루션은 현재 셸 세션에서만 작동합니다. 이 솔루션을 따르는 경우 콘솔에 다시 로그온 할 때마다이 단계를 반복해야합니다. 보다 영구적 인 해결책은 ~ / .bashrc 파일에 다음을 추가하는 것입니다. if test -f ~ / .rvm / scripts / rvm; 그런 다음 [ "$ (type -t rvm)"= "function"] || 소스 ~ / .rvm / scripts / 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터미널을 입력 .bash_profile할 때마다 로그인 할 때마다 실행 되기 때문 입니다 . 이것이 솔루션이 /bin/bash --login작동하는 이유 이지만 터미널에 들어갈 때마다 그렇게해야합니다. 이렇게하면 다음 형식까지 설정되며 그때 까지이 모든 것을 잊어 버릴 것입니다 :)


스크린 사용자는 항상이 줄을 ~/.bashrc대신에 입력해야합니다 ~/.bash_profile.
Ryenus

2
감사! 그놈이 로그인하는 데 필요한 2 초의 지연으로 인해 매우 귀찮았습니다. 이렇게하면 지연이 방지됩니다.
justinpage

6
rvm 설치가 자동으로 수행되지 않는 이유는 무엇입니까?
balki

@mpapis는 rvm의 릴리스 관리자이며이 방법으로 "X 세션 (정상적으로 리콜하면 Fedora 17이 실패 할 수 있음), rsync 세션이 실패 할 수 있습니다. 나는`/ bin / bash --login을 고수 할 것이라고 생각한다.
kimbaudi

29

나도이 문제에 직면했다. 마지막으로 터미널 에서이 줄을 실행했습니다.

source ~/.rvm/scripts/rvm

문제가 해결되었습니다. 이 줄은 RVM 인스턴스를 특정 시간 동안 함수로 만들 것입니다.


2
가장 간단한 답변. 그 줄을 ~ / .bashrc에 넣으면 터미널 에뮬레이터를 사용하는 것이 좋습니다.
Nikkolasg

1
안녕-이 명령은 내가 가진 용어 세션에 대해 '고정'했지만 결과는 끈적 거리지 않았으며 새로운 (또는 다른) 세션에 도움이되지 않았습니다. 그리고 데스크탑도 변경 사항을 모르는 것 같습니다. 세션 / 로그인 기반이므로 로그인도 "안티"입니다. 개인적으로 동일한 프로그램을 다른 Ruby 및 버전과 비교하는 기능을 원합니다.
것이다

1
당신은 진짜 mvp입니다. 내가 이것을 시도하기 전까지는 아무것도 효과가 없었습니다. 나는 그것이 일시적이라면 신경 쓰지 않고 방금 수정이 필요했습니다.
ian-campbell

rvm의 설치 파일은 어디에 있으므로 설치할 때이 문제와 다른 문제를 처리합니까? 나는 그들의 홈페이지에 기술 된 프로세스를 사용했고, "그냥 작동"하기 위해 몇 시간을 보냈다. "yum install rvm"과 같은 것이어야하며 모든 작업이 완료되었습니다.
JosephK

21

최신 RVM (rvm 1.11.6 (stable))은 우분투 (10.10-64 비트-nerdy gnat 또는 기타)에서 작동을 멈췄습니다.

"RVM은 기능이 아니며 'rvm use ...'로 루비를 선택하면 작동하지 않습니다."

이전에 메시지를 받았지만 'rvm 1.9.3-p0@rails321'이 작동합니다. 이제는 작동하지 않습니다. 보석 세트를 전혀 바꿀 수 없었습니다.

내가 이것을 찾을 때까지 아무것도 효과가 없었습니다. /home/your-name/.bashrc

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


2
.bash_login [[-s "$ HOME / .rvm / scripts / rvm"]] && 소스 "$ HOME / .rvm / scripts / rvm"에 "rvm get 안정적 --auto"가 추가되어 .bashrc에서 제거되었습니다.-I .bashrc의 끝과 미드 스트림에서 gemset을 변경하는 스크립트 시작시 소스 ~ / .bash_login을 추가 함
Rod 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 use 1.9.3'(예 :)을 입력하면 동일한 버전을 사용하기 시작합니다.

'ruby -v'명령을 실행하여 RVM이 업데이트 된 버전의 Ruby를 사용하고 있는지 확인하십시오.


8

새로운 rvm 설치 에서도이 문제가 발생했으며 여기에 대한 답변 중 하나도 해결되지 않았습니다. 기본 섹션에서 공식 rvm 사이트로 이동하면 다음 명령이 있습니다.

http://rvm.io/rvm/basics 에서 #

소스 $ (rvm 1.9.3 do rvm env --path)

실제로 원하는 루비 버전에 대해 1.9.3을 변경해야하며 쉘 유형에 관계없이 rvm을 함수로 만듭니다.


7

대답을 수락했지만 다른 방법을 제안하고 싶습니다. 쉘을 열기 전에 ~ / .bashrc 가로 드됩니다. 그 끝에 줄을 추가하면 로그인 쉘이 필요하지 않습니다.


"그 로그인 쉘 일"이있는 이유가 있습니다. 저는 RVM 소싱으로 많은 테스트를
해왔으며

@mpapis 이유를 설명해 주시겠습니까? 다른 답변에서, 라인을 rc 파일로 이동하면 대부분 괜찮습니다.
balki

예를 들어, X 세션 (정확하게 호출하면 Fedora 17)에 실패하고 rsync 세션에 실패합니다 ... 그리고 지금 당장 기억할 수없는 더 많은 이유
mpapis

7

어쩌면 아래를 시도해 볼 수 있습니다.

  • 터미널->
  • 편집->
  • 프로필 환경 설정->
  • 제목과 명령->
  • "로그인 쉘로 실행 명령"을 확인하십시오.
  • 끝난

일반적인 쉘이 .profile을 건너 뛰기 때문에 이것이 가장 쉬운 해결책이며 올바른 옵션입니다.이 옵션을 사용하면로드되고 .bashrc를 전혀 편집 할 필요가 없습니다.
DWils


4

터미널을 연 다음 편집> 프로필 환경 설정 으로 이동 한 다음 " 제목 및 명령 " 탭으로 이동하여 " 로그인 쉘로 명령 실행 "을 확인하십시오 .

Bash를 부팅하면 sudo를 사용하지 않고 터미널에서 직접 Gems를 설치할 수 있으며 " RVM은 기능이 아니며 'rvm use ...'로 루비를 선택 하면 오류가 발생 합니다. "라는 오류가 제거됩니다.

건배.


4

위의 모든 답변이 유효합니다. 그러나 내가 같은 문제에 직면했을 때 해결책은 다음과 같습니다.

  • ZSH를 업데이트하십시오. (어떤 이유로 든 직접 업데이트하려고 시도했습니다. 업데이트 된 버전을 여기 에서 제거하고 다시 설치 하십시오. )
  • 다음을 사용하여 기본 쉘을 zsh 로 설정하십시오 (예 : zsh를 선호하는 경우).sudo chsh -s $(which zsh) $USER
  • 공식 RVM 사이트의.zshrc 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. 어쨌든, 이것이 도움이되었다는 것이 좋습니다.
비슈누 나랑

3

Mac OSX 10.8 Mountain Lion에 Ruby 1.9.3-p125를 설치하는 절차

  1. 최신 XCode (> = 4.3)와 명령 줄 Objective-C 컴파일러 "clang"을 이미 설치했습니다.
  2. 이 절차가 작동하려면 "bash"쉘을 실행해야합니다.
  3. 시스템 환경 설정으로 이동
  4. "사용자 및 그룹"을 클릭하십시오
  5. 패널 왼쪽 하단의 잠금을 클릭하고 암호를 입력하여 잠금을 해제하십시오.
  6. 패널의 왼쪽 창에서 사용자 아이콘을 "Ctrl- 클릭"하고 "고급 옵션 ..."을 선택하십시오.
  7. 로그인 쉘을 "/ bin / bash"로 변경하십시오.
  8. 환경 설정을 닫습니다
  9. 터미널 창을 엽니 다 (command + 스페이스 바를 누르고 "터미널"을 입력하십시오)
  10. 다음의 지시 사항을 따르십시오.

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

노트:

  • 루비를 설치하려면 clang 컴파일러를 지정해야합니다 :

    $ rvm 설치 1.9.3p125 --with-gcc = clang

  • RVM이 / usr / local / rvm을 찾지 못하면 링크를 만들어야합니다.

    $ ln -s / Users / [사용자 이름] /. rvm / usr / local / rvm


나는 그들이 지금 P194까지 생각합니다. rvm install 1.9.3 --with-gcc = clang을 수행하면 최신 버전 1.9.3이 자동으로 제공됩니다.
George Campbell


1

apt-get 명령으로 이전 rvm 버전 ruby-rvm을 설치했기 때문에 동일한 오류가 발생했습니다.

스크립트 라인을 제거하여 .bashrc 파일에서 이전 rvm을 구성하여 문제를 해결했습니다.

이전 rvm 구성 스크립트를 확인한 후 source .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

같은 문제가 있고 lubuntu를 사용하는 사람들 에게이 링크를 따라갔습니다 .

당신은 터미널을 시작합니다

lxterminal -e "bash -il"

올바른 방향을 알려준 @mpapsis에게 감사합니다.


링크는 때때로 일시적이므로 후손을 위해 답변에 작은 시놉시스를 붙여 넣는 것이 좋습니다.
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"

도커 컨테이너에 --login을 연결하려고했습니다.

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

그러나이 경우 컨테이너는 백그라운드에서 열려 있고 명령을 입력 할 수 없습니다.

"open with /bin/bash --login" 옵션으로 zhc와 terminal을 모두 시도했습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.