루비 버전을 바꾸지 않는 rbenv


268

github 지침에 따라 rbenv를 설치했습니다. OSX를 실행하고 있지만 Ubuntu 12.04 VM 에서이 작업을 시도했으며 동일한 결과를 얻었습니다. 다음은 루비 버전을 변경하려고 할 때 터미널에서 얻는 것입니다.

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

rbenv가 왜 루비 버전을 생각하지 않는 것처럼 전환하지 않는지에 대한 아이디어가 있습니까? 또한 로컬 디렉토리에는 .rbenv 파일이 없으므로 루비 버전의 기본값은 1.8.7입니다.

rbenv local
rbenv: no local version configured for this directory

bashrc에 init을 올바르게 넣었습니까? $ PATH는 어떻게 생겼습니까?
d11wtq

rbenv가 사용하는 Ruby 버전을 변경하는 명령은 없지만 기본 Ruby를 사용하지 않는 것 같습니다.
Andrew Marshall

@ d11wtq가 정확했습니다. ~ / .bash_profile에 올바르게 보이지 않았습니다.
ajorgensen 2016 년

답변:


518

PATH에 $ HOME / .rbenv / shims 및 $ HOME / .rbenv / bin이 포함되어 있는지 확인하십시오.

$ env | grep PATH

또한 bash를 사용하는 경우 ~ / .bash_profile에 또는 zsh를 사용하는 경우 ~ / .zshenv에 다음이 있는지 확인하십시오.

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

참고 : ~ / .bash_profile의 마지막 설정인지 확인하십시오. .bash_profile을 업데이트하고 PATH를 재설정하는 프로그램을 설치하는 문제가 발생했습니다.

마지막으로, 있는지 확인 $HOME폴더가없는 .ruby-version작업을 완료 한 것 인 경우에 실수로 생성 한 해당 파일을 $ rbenv local <ruby-version>사용자의 $HOME폴더. 이렇게 $ rbenv global <ruby-version>' modifies the$ HOME / .rbenv / 버전 file, and the existence of a.ruby 버전의 file in the$ 홈페이지 folder would override the version set by의 $ HOME / .rbenv / version`합니다.

문서에서 :

루비 버전 선택 shim을 실행할 때 rbenv는 다음 소스에서 순서대로 읽어서 사용할 루비 버전을 결정합니다.

지정된 경우 RBENV_VERSION 환경 변수 rbenv shell 명령을 사용하여 현재 쉘 세션에서이 환경 변수를 설정할 수 있습니다.

파일 시스템의 루트에 도달 할 때까지 실행중인 스크립트의 디렉토리와 각 상위 디렉토리를 검색하여 찾은 첫 번째 .ruby 버전 파일입니다.

파일 시스템의 루트에 도달 할 때까지 현재 작업 디렉토리 및 각 상위 디렉토리를 검색하여 찾은 첫 번째 .ruby 버전 파일입니다. rbenv local 명령을 사용하여 현재 작업 디렉토리에서 .ruby-version 파일을 수정할 수 있습니다.

글로벌 ~ / .rbenv / version 파일. rbenv global 명령을 사용하여이 파일을 수정할 수 있습니다. 글로벌 버전 파일이 없으면 rbenv는 "시스템"Ruby를 사용한다고 가정합니다. 즉, rbenv가 경로에없는 경우 어떤 버전이든 실행됩니다.


34
OSX에서 OSX 세션에서 로그 아웃 한 다음 다시 로그인하여 bash 프로파일의 변경 사항을 적용하십시오.
제레미 리 케츠

15
또는 do exec $SHELL -l(낮은 L)
pduersteler

3
"$ HOME / .rbenv / shims"및 "$ HOME / .rbenv / bin"을 어디에 추가해야합니까?
Benedikt

3
나는 이렇게했다 : export RBENV_ROOT="$HOME/.rbenv" if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi꽤 잘 작동 :) 또한 rbenv 선언 후 PATH init을 확인하십시오.
merqlove

1
필자의 경우이 두 줄을 .bashrc (Ubuntu의 Bash)에 추가 한 다음 올바른 루비 버전을 얻었습니다. .bash_profile에 추가하면 작동하지 않습니다.
alexhilton

98

~ / .bash_profile에 다음을 추가하여이 문제를 해결했습니다.

#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

https://github.com/sstephenson/rbenv에 설명되어 있습니다 .

내가 알 수있는 것에서 ~ / .rbenv / bin 디렉토리는 없으며 @rodowi의 게시물에 언급되어 있습니다.


링크의 경우 +1 더 나은 투표 응답과 모순되는 답변에 +1. 다음 중 어떤 것이 더 많은 질문을 제기 export PATH="$HOME/.rbenv/bin:$PATH합니까? 누군가가 참여할 수 있다면 어떻게 작동합니까?
Jerome

1
~/.rbenv/bin/homebrew 또는 linuxbrew를 통해 설치 한 경우 에는 없습니다 . 로 그리고 당신은, 심 경로를 직접 설정할 필요가 없습니다 rbenv init당신을 위해이 작업을 수행 (등) .
Dennis

이것은 내 문제를 해결했습니다.
Martyn Chamberlin

이것은 README
onmyway

몇 시간 동안 다른 것들을 시도한 후에 나를 위해 일했습니다. 감사!
cjs1978

91

이것은 오래된 질문 일 수도 있지만 Google이 나를 이끌었고 후손을 위해 내가 공유 할 것이라고 생각했습니다.

위의 많은 권장 솔루션 후에도 문제가 지속되었습니다. OP와 마찬가지로 rbenv를 설치 한 다음 루비 버전을 설치했지만 랩톱의 기본값은 시스템입니다. 내가 간과 한 것은 내가 달렸을 때였 다.

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

IOW, 여전히 시스템 기본값입니다. 빠른

[~/.rbenv] $ rbenv local 2.0.0-p247

새 버전으로 전환했습니다.


7
예-rbenv 설치 안내서에서 로컬 명령 실행에 대해 전혀 언급하지 않는 것이 재미 있습니다. 많은 블로그에서 rbenv를 글로벌로 실행하지만 로컬에서는 실행하지 않도록 상기시킵니다. 좋은 대답입니다.
Steve Midgley

같은 문제입니다. 같은 해결책. (전 세계 루비 버전이 ~ / .ruby-version으로 대체 될 때 조언하기 위해 PR을 제출해야 할 수도 있습니다 ...)
Mark Glossop

내가 CentOS의 7 YUM으로 제거하여 시스템을 제거했다, 단지 그 후 나는 rbenv에서 선택한 올바른 버전을 볼 수 있었다
조 워커

나는 대답을 위해 이것을 멀리 파야한다는 것에 충격을 받았다. 이것은 나에게 맞는 것이다.
Ian Hyzy 2019

rbenv versions 명령에서 r.3.1에 의해 2.3.1이 .ruby-versions에 설정되었다고합니다. 얼마 전에 rvm 사용을 중단하고 rbenv로 변경했습니다. .ruby 버전을 삭제하고 rbenv 버전을 다시 실행했으며 rbenv에서 최신 버전을 선택했습니다 (위의 .bash_profile에 eval 문이 있는지 확인하십시오!). 이제 모든 것이 이전처럼 작동합니다. 이 문제를 해결하도록 도와 주셔서 감사합니다.
John Wooten

45

첫 번째 단계는 어떤 루비가 호출되는지 알아내는 것입니다.
which ruby

당신의 시스템은 말합니다 :
/usr/bin/ruby

rbenv에서 사용하는 shim은 아닙니다 (MacOS에서는).
/Users/<username>/.rbenv/shims/ruby

shim은 실제로 설정 한 루비 버전으로 리디렉션하는 스크립트입니다.

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
문제를 해결하려면 프로젝트 별 "로컬"버전과 셸별 "쉘"버전을 설정 해제하고 ~ / .rbenv / verion의 일반 텍스트 파일에서 결정되는 "전역"버전 설정을 사용하여 테스트하는 것이 좋습니다. 귀하의 경우 버전 번호는 "1.9.3"입니다. 프로젝트 폴더 (홈 폴더가 아닌)의 루트에서 "ls -laG"를 수행하여 더 이상 ".ruby-version"파일이 없는지 확인할 수 있습니다.

"rbenv 버전"을 사용하여 사용하도록 설정된 버전 rbenv (및 해당 파일을 설정하는 파일의 위치 및 이름)를 식별 할 수 있습니다.

rbenv versions

중요 사항 없음 : 경로를 올바르게 설정할 때까지.

이것을 사용하여 * MacOS가 다음을 준수하는지 확인하십시오.
eval "$(rbenv init -)"

뒤에 :
which ruby

/Users//.rbenv/shims/ruby처럼 보이게하려면

그런 다음 새 터미널 창을 열 때마다 실행되도록 행을 프로파일에 추가하십시오.
~/.bash_profile eval "$(rbenv init -)"

경로를 수정하는 다른 방법이 있습니다. rbenv init를 실행하는 대신 경로를 자유롭게 대체하십시오.

참고 : 다음을 사용하여 레일을 다시 설치하십시오.
gem install rails

Ruby on Rails를 실행하려고한다면,이 모든 것이 먼저 작동하고 Rails gem을 다시 설치해야합니다. Rails의 이전 설치는 잘못된 루비에 대한 하드 코딩 된 경로를 사용하고 다른 여러 가지가 잘못된 위치에 있으므로 보석을 다시 설치하십시오.

추신 MacOS가 당신에게 순종하지 않는다면 (* 위에서 언급 한) 경로를 수정하는 다른 방법을 찾아야 할 수도 있지만, "Macs just work";) 때문에 문제가되지는 않을 것입니다.


1
아 친구, 마침내! 내가 이것을 발견하기 전에 약 25 개의 다른 해결책을 시도했다, 감사합니다
Danny Santos

잘 설명 된 해결책. 감사합니다.
killscreen

23

방금이 같은 문제를 발견했습니다. 내가 한 것은 rbrew를 통해 (homebrew를 통해) 제거한 다음 다시 설치하는 것입니다. 나는 또한 추가했다

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

rbenv를 다시 설치할 때 ~ / .bash_profile에. 완벽하게 작동합니다.


1
나와 같은 문제가 발생한 다른 사람들을 참고하십시오. 어떤 이유로 rbenv가 이전에 작동 했으므로이 줄은 실행되지 않았습니다. 직접 eval "$ (rbenv init-)"를 사용하여 수정했습니다.
dadoonet

이 사용 사례에 대한 좋은 평가판입니다!
killscreen

18

내 경우에는 변경 ~/.zshenv하지 못했습니다. 나는 내부를 바꿔야했다 ~/.zshrc.

방금 추가했습니다.

# Include rbenv for ZSH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

의 맨 위에 ~/.zshrc셸을 다시 시작하고 로그 아웃했습니다.

작동하는지 확인하십시오.

  ~ rbenv install 2.4.0
  ~ rbenv global 2.4.0
  ~ rbenv global
2.4.0
  ~ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

이것은 완벽하게 작동합니다. / zshenv가 아닌 .bash_profile에 추가했습니다.
Kang Byul

8

이 명령을 실행

rbash를 bash에 추가하여 터미널을 열 때마다로드되도록하십시오.

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

이 문제를 해결할 참조


1
나는 이것을 고치는 데 몇 시간을 보냈다. 마지막으로 솔루션이 도움이되었습니다. 감사!!
7354632781

5

당신이 사용하는 경우 bash는 사이트로 이동

~/.bash_profile

다음 줄을 추가하십시오 (아직없는 경우)

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

Zsh를 사용하는 경우

~/.zshrc

.zshrc 파일 끝에 동일한 코드 줄을 추가하십시오.

그런 다음 간단히 터미널을 다시 시작하면됩니다.


맥 OS 카탈리나에 사람들은 zsh을 명령 따라야합니다
앱 히니

4

rbenv help shell

"쉘에서 'RBENV_VERSION'환경 변수를 설정하여 쉘 특정 Ruby 버전을 설정합니다.이 버전은 로컬 응용 프로그램 특정 버전 및 글로벌 버전을 대체합니다. rbenv로 알려진 Ruby 버전과 일치하는 문자열이어야합니다. 특수 버전 문자열 '시스템 '는 기본 시스템 Ruby를 사용합니다. 사용 가능한 Ruby 버전 목록을 보려면 rbenv 버전을 실행하십시오. "

rbenv가 올바르게 설치 되었다면 ruby ​​-v는

rbenv shell 1.9.3-p125


'rbenv shell xyz'는 저에게 효과적입니다. 위의 상위 답변에 설명 된 'rbenv local xyz'는 OS X에서 작동하지 않았습니다.
Jeremy Rea

4

사용하는 가장 쉬운 방법은 나에게로 rbenv와 함께 zsh추가됩니다 rbenv에 플러그인 섹션으로 .zshrc구성. 내 경우에는 다음과 유사합니다.

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)

그 후, 도움을 받아 루비 버전을 사용하여 설치, 전환 할 때 문제가 없습니다 rbenv.

변경 후 터미널 세션을 다시 시작하십시오.


4

나는 같은 문제가 있었지만 Homebrew로 인해 발생했습니다.

[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which ruby
/usr/local/bin/ruby

어떻게 든 Homebrew를 통해 Ruby를 설치했으며 Homebrew 경로는 내 rbenv 경로보다 앞서있었습니다 $PATH. 달리는 brew uninstall ruby것이 나를 위해 고쳤습니다.


4

운영:

rbenv init

그것을 실행 한 후 로컬 rbenv 버전을 설정할 때 :

rbenv local 2.4.0

다음 내 ruby -vrbenv local버전이 일치했다.

참고 : 당신은 또한 당신이있는 디렉토리를 끝내고 다시 들어가고 싶을 수도 있습니다.


3

나는 같은 문제에왔다. "sudo"와 함께 "rbenv global"명령을 실행하여이 문제를 해결했습니다. 나는 그것이 허가 문제라고 생각한다.

업데이트 : 마침내 해결책을 찾았습니다. 내 Mac에서 "/usr/local/Cellar/rbenv/0.3.0/"아래에 동일한 "version"파일이 있습니다. 가끔 실수로 만들어진 것 같습니다. 제거해야합니다.


3

이러한 증상이 나타 났을 때 문제는 전환하려고했던 새로운 루비 버전을 모르는 사이에 설치가 반쯤 실패한 것으로 판명되었습니다. 수정은 삭제하고 다시 설치하는 것이 었습니다.

(이것은 루비 1.9.3이 사용 가능한 버전의 rbenv 목록에 표시되었지만 rbenv가 예상했던 경로에 실행 파일이 없음을 의미합니다. rbenv는 위치를 앞에 추가하여 루비 버전을 변경하려고 시도하기 때문에 경로가 실제로 앞에있는 위치에 아무것도 없다면 OS는 행복하게 기본 경로를 계속 검색하고 시스템의 버전을 찾습니다 (제 경우에는 질문 1.8.7).)



2

다시 설치 한 직후이 문제가 발생했습니다 rbenv. 분명히 .ruby-version더 이상 존재하지 않는 버전을 지정하여 홈 디렉토리에 파일이 있습니다. 파일을 삭제하면 모든 것이 작동했습니다.


2

마지막 줄이 다음과 같은지 확인하십시오 .bash_profile.

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

1

허용되는 답변은 다음을 추가하도록 제안합니다.

export PATH="$HOME/.rbenv/bin:$PATH"

OP가 참조하는 Mac OSX에서는 작동하지 않습니다. 실제로 brew install rbenvMac OSX에서 실제로 유일한 설치 방법 인을 통해 rbenv를 설치하면 OSX에서는 curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash실패하므로 rbenv 실행 파일은 다음 위치에 설치됩니다.

$ which rbenv
/usr/local/bin/rbenv

그러나 OSX에서도 rbenv 루트는 $ HOME 디렉토리에 남아 있습니다.

~ viggy$ rbenv root
/Users/viggy/.rbenv

이것은 무엇을 의미 하는가? 루비를 설치하면 .rbenv의 지정된 홈 디렉토리에 설치됩니다.

$ rbenv install 2.6.0
$ ls ~/.rbenv/versions
2.6.0

이제 brew 설치는 Linux에서 수동으로 수행해야 할 작업을 수행했습니다. 예를 들어, Linux에서는 플러그인으로 ruby-build를 수동으로 설치해야합니다.

$ mkdir -p "$(rvbenv root)/plugins"
$ git clone https://github.com/rbenv/ruby-build.git "(rbenv root)"/plugins/ruby-build

이것은 이미 homebrew 설치로 완료되었습니다. Linux 설치와 같이 homebrew 설치에서 수행해야하는 중요한 단계가 있습니다. rbenv 심을 경로에 추가해야합니다. 그렇게하려면, 쉘이 시작될 때 다음 명령을 평가해야합니다 (이는 $ PATH의 시작 부분에 rbenv shim을 추가합니다) :

$ vim ~/.bash_profile
eval "$(rbenv init -)"
$ source ~/.bash_profile

이제를 실행 echo $PATH하면 rbenv shim이 표시됩니다.

$ echo $PATH
/Users/viggy/.rbenv/shims:

이제 루비 버전을 확인하면 설치된 rbenv 루비가 반영됩니다.

ruby -v
ruby 2.6.0p0 

0

이상하게도 rbenv 버전에서 .rbenv 파일을 설정하지 않았습니다. ls -ltra->로 점검하여 rbenv가 작성되었는지 확인하십시오.



-1

rbenv를 설치하기 전에 rvm을 삭제하는 것을 잊었습니다. rvm을 삭제하고 rbenv를 다시 설치했지만 시스템은 여전히 ​​rbenv에 의해 전역으로 지정된 Ruby 버전을 사용하지 않았습니다. 터미널을 종료하려고 시도했지만 전체 컴퓨터를 다시 시작한 후에 만 ​​작동했습니다.

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