rbenvがルビのバージョンを変更しない


269

githubの指示に従ってrbenvをインストールしました。私はOSXを実行していますが、Ubuntu 12.04 VMでこれを試したところ、同じ結果が得られました。Rubyのバージョンを変更しようとすると、次のようになります。

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ファイルがないため、rubyのバージョンがデフォルトで1.8.7になります。

rbenv local
rbenv: no local version configured for this directory

あなたは間違いなくあなたのbashrcにinitを正しく入れましたか?$ PATHはどのように見えますか?
d11wtq

これらのコマンドはいずれもrbenvが使用しているRubyのバージョンを変更しませんが、デフォルトのRubyを使用していないようです。
アンドリューマーシャル

@ d11wtqは正しかった。それは私の〜/ .bash_profileに正しくなかったようです。
ajorgensen

回答:


519

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の$ HOMEをfolder would override the version set by $ HOME / .rbenv / VERSION`を。

ドキュメントから:

Rubyバージョンの選択shimを実行すると、rbenvは次のソースからこの順序で読み取ることにより、使用するRubyバージョンを決定します。

指定されている場合、RBENV_VERSION環境変数。rbenvシェルコマンドを使用して、現在のシェルセッションでこの環境変数を設定できます。

ファイルシステムのルートに到達するまで、実行中のスクリプトのディレクトリとその各親ディレクトリを検索して見つかった最初の.ruby-versionファイル。

ファイルシステムのルートに到達するまで、現在の作業ディレクトリとその各親ディレクトリを検索して見つかった最初の.ruby-versionファイル。現在の作業ディレクトリにある.ruby-versionファイルは、rbenv localコマンドを使用して変更できます。

グローバル〜/ .rbenv / versionファイル。このファイルは、rbenvグローバルコマンドを使用して変更できます。グローバルバージョンファイルが存在しない場合、rbenvは「システム」Rubyを使用することを想定しています。つまり、rbenvがパスになかった場合はどのバージョンでも実行されます。


34
OSXでは、OSXセッションからログアウトしてから再度ログインし、bashプロファイルへの変更を有効にしてください。
ジェレミーリケッツ2013年

15
または行うexec $SHELL -l(小文字L)
pduersteler 2013

3
「$ HOME / .rbenv / shims」と「$ HOME / .rbenv / bin」はどこに追加する必要がありますか?
ベネディクト2013

3
私はこのようにしました:export RBENV_ROOT="$HOME/.rbenv" if which rbenv > /dev/null; then eval "$(rbenv init -)"; fiかなりうまくいきます:)また、rbenv宣言の後のPATH initを確認してください。
merqlove 2013年

1
私の場合、これらの2行を.bashrc(UbuntuのBash)に追加する必要があります。その後、正しいRubyバージョンを取得しました。.bash_profileに追加しても機能しません。
alexhilton 2014年

98

以下を〜/ .bash_profileに追加してこれを修正しました:

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

これはhttps://github.com/sstephenson/rbenvで文書化されているものです

私が知ることができるものから、投稿で@rodowiによって言及された〜/ .rbenv / binディレクトリはありません。


リンクの+1。投票数の多い回答と矛盾する回答の+1。どちらがさらに疑問を投げかけますか-そして誰かがチャイムできるなら-どのようにexport PATH="$HOME/.rbenv/bin:$PATH働くことができますか(それは私にとって失敗していたので)?
ジェローム

1
~/.rbenv/bin/homebrewまたはlinuxbrewを介してインストールした場合はありません。また、シムパスを自分で設定する必要はありrbenv initません
Dennis

これで問題が解決しました。
Martyn Chamberlin

これはREADMEにあるはずです
onmyway133

他のことを何時間も試した後、私のために働いた。ありがとう!
cjs1978 2018年

91

これは古い質問かもしれませんが、Googleが私をここに導き、後世のために、私が共有したいと思いました。

上記の推奨される解決策の多くを試しても問題は解決しませんでした。OPのように、rbenvをインストールしてからRubyバージョンをインストールしましたが、私のラップトップはデフォルトでシステムに設定されていました。私が見落としていたのは、私が走ったときのことです。

[~/.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、2014年

同じ問題。同じソリューション。(グローバルRubyバージョンが〜/ .ruby-versionによって却下されたときにアドバイスするために、PRの提出を検討する必要があるかもしれません...)
Mark Glossop

Centos 7でYUMを使用してシステムを削除する必要がありましたが、その後、rbenvで正しいバージョンが選択されていることがわかりました
Joe Walker

答えを得るためにここまで掘り下げなければならなかったのにショックを受けました。これは私にとって正しい答えです。
Ian Hyzy

rbenv versionsコマンドは、おそらく2.3.1が.ruby-versionsでrvmによって設定されたと言っていることがわかりました。私はしばらく前にrvmの使用をやめ、rbenvに変更しました。.ruby-versionsを削除し、rbenvバージョンを再度実行し、rbenvによって最新のバージョンが選択されました(上記の.bash_profileにevalステートメントがあることを確認してください!)。これで、すべてが以前と同じように機能します。これを解決してくれてありがとう。
John Wooten

45

最初のステップは、呼び出されているルビを見つけることです。
which ruby

あなたのシステムは言う:
/usr/bin/ruby

これは、rbenvで使用されるシムではなく、MacOSでは次のようになります。
/Users/<username>/.rbenv/shims/ruby

シムは実際には、設定したルビのバージョンへのリダイレクトのように機能するスクリプトです。

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 -)"

パスを変更する方法は他にもあります。rbenvinitを実行する代わりに、それらを自由に置き換えてください。

注:以下を使用してRailsを再インストールします。
gem install rails

Ruby on Railsを実行しようとした場合は、最初にこれをすべて機能させてから、rails gemを再インストールする必要があります。Railsの以前のインストールでは、間違ったルビへのハードコードされたパスが使用され、他のいくつかのものが間違った場所にあるため、gemを再インストールしてください。

PS MacOSが従わない場合(*上記を参照)、パスを変更する別の方法を見つける必要があるかもしれませんが、「Macはそのまま動作する」ため、問題になる可能性はほとんどありません;)


1
ああ、やっと!私がこれを見つける前に、約25種類のソリューションを試してみました。ありがとう
Danny Santos

よく説明された解決策。ありがとうございました。
killscreen

23

私はこれと同じ問題を見つけました。私がしたことは、rbenvを(homebrew経由で)アンインストールして再インストールすることでした。私も追加しました

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

rbenvを再インストールしたときに〜/ .bash_profileに入れます。今は完全に動作します。


1
私と同じ問題が発生した他の人への注意:いくつかの理由により、どのrbenvが以前に機能していたため、この行は実行されませんでした。直接eval "$(rbenv init-)"を使用して修正しました。
dadoonet 2013年

このユースケースの素敵な小さなevalステートメント!
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に追加しました。
カンビョル

8

このコマンドを実行する

rbenvにrbenvを追加して、ターミナルを開くたびにロードされるようにします

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

これはあなたの問題を解決しますリファレンス


1
私はこれを修正するのに何時間も費やしました。最後に、あなたのソリューションが役立ちました。ありがとう!!
User7354632781 2018年

5

bashを使用している場合は、

~/.bash_profile

次の行を追加します(まだない場合)

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

Zshを使用している場合は、

~/.zshrc

.zshrcファイルの最後に同じコード行を追加します。

次に、単に端末を再起動します。これで問題ありません。


Mac os Catalinaの
ユーザー

4

rbenv help shell

「シェルで 'RBENV_VERSION'環境変数を設定することにより、シェル固有のRubyバージョンを設定します。このバージョンは、ローカルアプリケーション固有のバージョンとグローバルバージョンをオーバーライドします。rbenvで認識されているRubyバージョンと一致する文字列である必要があります。特別バージョンの文字列 'system 'デフォルトのシステムRubyを使用します。使用可能なRubyバージョンのリストについては、rbenvバージョンを実行してください。 "

rbenvが正しくインストールされていれば、ruby -vは

rbenv shell 1.9.3-p125


'rbenv shell xyz'が私にとってうまくいきました。OS X上で仕事をしませんでした上記の上位に記述「rbenvローカルxyzが」答えにランク
ジェレミー・レア

4

私とrbenv一緒に使用する最も簡単な方法zshrbenv.zshrcconfigのプラグインセクションに追加することです。私の場合は次のようになります。

# 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)

その後、インストール、切り替え、Rubyバージョンの使用に問題はありません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 -v私のrbenv localバージョンと私のバージョンは一致しました。

注:現在のディレクトリを終了してからそこに戻ることもできます。物事を機能させるために必要なことに気づきました。


3

同じ問題が発生しました。これを修正するには、「sudo」を指定して「rbenv global」コマンドを実行します。それは何か許可の問題だったと思います。

更新:私は最終的に解決策を見つけました。私のMacには「/usr/local/Cellar/rbenv/0.3.0/」の下に同じファイル「バージョン」が1つありました。たまに間違えて作ったと思います。削除する必要があります。


3

これらの症状があったとき、問題は、気づかずに、切り替えようとした新しいRubyバージョンのインストールが途中で失敗したことであることがわかりました。修正はそれを削除して再インストールすることでした。

(これは、利用可能なバージョンのrbenvリストにruby 1.9.3が表示されていても、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をインストールするcurl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bashと、OSXでFAILとなるため、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

これは、自作のインストールですでに行われています。Linuxのインストールの場合と同様に、自作のインストールでも実行する必要がある重要なステップが1つあります。パスにrbenvシムを追加する必要があります。これを行うには、シェルが起動したときに、次のコマンドを評価する必要があります(これにより、rbenv shimsが$ PATHの先頭に追加されます)。

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

を実行echo $PATHすると、rbenv shimsが表示されます。

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

Rubyバージョンを確認すると、インストールされているrbenv ruby​​が反映されます。

ruby -v
ruby 2.6.0p0 

0

奇妙なことに、rbenvバージョンは.rbenvファイルを設定しませんでした。ls -ltra-> rbenvが書き込まれたことを確認してください


0

あなたはchrubyを使ってみることができますか?chrubyは、それだけ修正代わりに、シムに依存しませんPATHGEM_HOMEGEM_PATH


-1

rbenvをインストールする前にrvmを削除するのを忘れました。rvmを削除してrbenvを再インストールしましたが、システムはまだrbenvによってグローバルとして指定されているRubyのバージョンを使用していませんでした。ターミナルをシャットダウンしようとしましたが、マシン全体を再起動したときにのみ機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.