rbenv yakut sürümünü değiştirmiyor


268

Rbenv'i github yönergelerine göre kurdum. OSX kullanıyorum ama bunu bir Ubuntu 12.04 VM'de denedim ve aynı sonuçları aldım. Ruby sürümlerini değiştirmeye çalıştığımda terminalimde aşağıdakiler var:

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

Herkes rbenv neden olduğunu düşündüğü gibi yakut sürüm geçiş değil hakkında herhangi bir fikri var mı? Ayrıca, yerel dizinde ruby ​​sürümünün 1.8.7'ye varsayılan olmasına neden olacak hiçbir .rbenv dosyası yoktur

rbenv local
rbenv: no local version configured for this directory

Init'i kesinlikle bashrc'nize doğru bir şekilde koydunuz mu? $ PATH neye benziyor?
d11wtq

Bu komutların hiçbiri rbenv'in Ruby sürümünü kullanmaz, ancak varsayılan Ruby'nizi kullanmadığı anlaşılır.
Andrew Marshall

@ d11wtq doğruydu. benim ~ / .bash_profile doğru görünüşte değildi.
ajorgensen

Yanıtlar:


518

PATH öğesinin $ HOME / .rbenv / shims ve $ HOME / .rbenv / bin içerip içermediğini kontrol edin

$ env | grep PATH

Ayrıca bash kullanıyorsanız ~ / .bash_profile dosyasında veya zsh kullanıyorsanız ~ / .zshenv öğesinde aşağıdakilerin bulunduğundan emin olun.

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

NOT: Bu ayarın ~ / .bash_profile dosyanızdaki son ayar olduğundan emin olun. .Bash_profile dosyamı güncelleyen ve PATH'i sıfırlayan bir program yüklediğim bir sorunla karşılaştım.

Son olarak, $HOMEklasörünüzde .ruby-versionyapmışsanız $ rbenv local <ruby-version>, $HOMEklasörünüzde yanlışlıkla oluşturmuş olabileceğiniz bir dosya olmadığından emin olun . Yapma $ rbenv global <ruby-version>' modifies the$ HOME / .rbenv / sürüm file, and the existence of a.ruby sürümü file in the$ ANA folder would override the version set by$ HOME / .rbenv / version`.

Dokümanlardan:

Ruby Sürümünü Seçme Bir şim yürüttüğünüzde, rbenv hangi Ruby sürümünün kullanılacağını aşağıdaki kaynaklardan bu sırayla okuyarak belirler:

Belirtilirse, RBENV_VERSION ortam değişkeni. Geçerli kabuk oturumunuzda bu ortam değişkenini ayarlamak için rbenv shell komutunu kullanabilirsiniz.

Yürüttüğünüz komut dosyasının dizinini ve her bir üst dizinini dosya sisteminizin kök dizinine ulaşıncaya kadar arayarak bulunan ilk .ruby sürümü dosyası.

Geçerli çalışma dizininde ve üst dizinlerinin her birinde, dosya sisteminizin kök dizinine ulaşana kadar bulunan ilk .ruby sürümü dosyası. Geçerli çalışma dizinindeki .ruby sürüm dosyasını rbenv local komutuyla değiştirebilirsiniz.

Global ~ / .rbenv / sürüm dosyası. Bu dosyayı rbenv global komutunu kullanarak değiştirebilirsiniz. Genel sürüm dosyası yoksa, rbenv "system" Ruby'yi kullanmak istediğinizi varsayar; yani, rbenv yolunuzda olmasaydı hangi sürümü çalıştırırsınız.


34
OSX'te, OSX oturumunuzdan çıkmayı ve ardından bash profilinizdeki değişikliklerin etkili olması için tekrar oturum açmayı unutmayın.
Jeremy Ricketts

15
Veya exec $SHELL -l(alt L)
pduersteler

3
"$ HOME / .rbenv / shims" ve "$ HOME / .rbenv / bin" 'i nereye eklemem gerekir?
Benedikt

3
Ben böyle yaptım: export RBENV_ROOT="$HOME/.rbenv" if which rbenv > /dev/null; then eval "$(rbenv init -)"; fiOldukça iyi çalışıyor :) Ayrıca rbenv beyanından sonra PATH init olup olmadığını kontrol edin.
merqlove

1
Benim durumum için, bu iki satırı .bashrc'ye (Ubuntu'daki Bash) eklemeliyim ve sonra doğru yakut sürümünü aldım. .Bash_profile dosyasına eklenirse çalışmaz.
alexhilton

98

Ben ~ / .bash_profile için aşağıdaki ekleyerek düzeltildi:

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

Https://github.com/sstephenson/rbenv adresinde belgelenen budur .

Ne söyleyebilirim yok @rodowi tarafından yazı belirtilen hiçbir ~ / .rbenv / bin dizini vardır.


Bağlantı için +1. Daha iyi oy kullanan bir cevapla çelişen cevap için +1. Hangisi daha fazla soruyu gündeme getiriyor - ve eğer biri chime girebiliyorsa - nasıl export PATH="$HOME/.rbenv/bin:$PATHçalışabilir (benim için başarısız olduğu için)?
Jerome

1
Bir olmayacak ~/.rbenv/bin/sen homebrew veya linuxbrew aracılığıyla yüklü eğer. Ve şimler yolunu kendiniz ayarlamak zorunda kalmamalısınız rbenv init, bu sizin için (ve daha fazlası) olduğu gibi .
Dennis

Bu benim sorunumu çözdü.
Martyn Chamberlin


Saatlerce başka şeyler denedikten sonra benim için çalıştı. Teşekkürler!
cjs1978

91

Bu eski bir soru olabilir, ancak Google beni buraya getirdi ve gelecek nesiller için paylaşacağımı düşündü.

Yukarıdaki önerilen çözümlerin çoğundan sonra sorunum devam etti. OP gibi, rbenv'i ve sonra bir yakut sürümünü kurdum, ancak dizüstü bilgisayarım varsayılan olarak sisteme ayarlandı. Ben gözden kaçmıştı ki ben koştu zaman oldu:

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

IOW, hala sisteme geçiyordu. Hızlı

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

yeni sürüme geçirdi.


7
Evet - komik nasıl rbenv kurulum kılavuzları yerel komut çalıştırmak hiç bahsetmiyorum. Birçok blog rbenv global çalıştırmanızı hatırlatıyor ama yerel değil. Mükemmel cevap.
Steve Midgley

Aynı sorun. Aynı çözüm. (Genel Ruby sürümü ~ / .ruby sürümü tarafından geçersiz kılındığında tavsiyede bulunmak için bir PR göndermeye bakmak zorunda kalabilir.)
Mark Glossop

Centos 7'de YUM'u kaldırarak sistemden kurtulmak zorunda kaldım, ancak bundan sonra rbenv'de seçilen doğru sürümü görebiliyordum
Joe Walker

Şok oldum bir cevap için bu kadar kazmak zorunda kaldım, bu benim için doğru olanı.
Ian Hyzy

Ben rbenv sürümleri komut 2.3.1 belki rvm tarafından .ruby sürümlerinde ayarlandığını söyledi bulundu. Bir süre önce rvm kullanmayı bırakmıştım ve rbenv olarak değiştirmiştim. .Ruby-sürümleri silindi ve rbenv sürümlerini tekrar çalıştırdı ve rbenv tarafından en son seçildi (yukarıdaki .bash_profile! Şimdi, hepsi eskisi gibi çalışıyor. Bunu çözmeme yardım ettiğin için teşekkürler.
John Wooten

45

İlk adım, hangi yakutun arandığını bulmaktır:
which ruby

Sisteminiz diyor ki:
/usr/bin/ruby

Bu, rbenv tarafından kullanılan (MacOS'ta) aşağıdaki gibi olması gereken şim DEĞİLDİR:
/Users/<username>/.rbenv/shims/ruby

Şim aslında, ayarladığınız yakut sürümüne yönlendirme gibi davranan bir komut dosyasıdır.

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
Sorun giderme için projeye özgü "yerel" sürümü ve kabuğa özel "kabuk" sürümünü ayarlamamanızı ve ~ / .rbenv / verion'da düz metin dosyasında belirlenen "genel" sürüm ayarını kullanarak test etmenizi öneririm. sizin durumunuzda yalnızca "1.9.3" sürüm numarası olacaktır. Artık ".ruby-version" dosyası olmadığından emin olmak için proje klasörünüzün kök dizininde (ana klasör değil) "ls -laG" yapabilirsiniz.

Hangi rbenv sürümünün kullanılacağını (ve bunu ayarlayan dosyanın konumunu ve adını) belirlemek için "rbenv sürümleri" ni kullanabilirsiniz.

rbenv versions

ÖNEMLİ YOK: yolu doğru şekilde ayarlayana kadar.

* MacOS'unuzun size uyacağından emin olmak için bunu kullanın:
eval "$(rbenv init -)"

Bunu takiben:
which ruby

Göründüğünden emin olmak için: /Users//.rbenv/shims/ruby

Ardından, satırı yeni bir terminal penceresi her açışınızda çalışacak şekilde profilinize ekleyin:
~/.bash_profile eval "$(rbenv init -)"

Yolu değiştirmenin başka yolları da var, rbenv init'i çalıştırmak yerine herhangi birini değiştirmekten çekinmeyin.

NOT: Rayları şununla yeniden takın:
gem install rails

Ruby on Rails'i çalıştırmaya çalışıyorsanız, önce tüm bunların çalışmasını sağlamanız, ardından ray gemini tekrar yüklemeniz gerekir. Rails'in önceki yüklemesi, yanlış yakut için sabit kodlanmış bir yol kullanacak ve birkaç şey yanlış yerde olacak, bu yüzden gemiyi tekrar yükleyin.

PS MacOS'unuz size uymayacaksa (yukarıda belirtilen *), yolunuzu değiştirmenin başka bir yolunu bulmak zorunda kalabilirsiniz, ancak "Mac'ler sadece çalışır";)


1
Ah dostum, sonunda! Bunu bulmadan önce yaklaşık 25 farklı çözüm denedim, teşekkürler
Danny Santos

İyi açıklanmış çözüm. Teşekkür ederim.
killscreen

23

Ben de aynı problemi buldum. Yaptığım şey rbenv'i kaldırmak (homebrew aracılığıyla) ve yeniden kurmaktı. Ben de ekledim

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

rbenv'i yeniden yüklediğimde ~ / .bash_profile içine. Şimdi mükemmel çalışıyor.


1
Benimle aynı konuya gelen diğerleri için not: Bazı nedenlerden dolayı, rbenv daha önce çalışıyordu, bu yüzden bu satır asla yürütülmedi. Ben doğrudan "$ (rbenv init -)" eval kullanarak düzeltti.
dadoonet

Bu kullanım durumu için güzel küçük eval ifadesi!
killscreen

18

Benim durumumda değiştirmek ~/.zshenvişe yaramadı. İçindeki değişiklikleri yapmak zorundaydım ~/.zshrc.

Az önce ekledim:

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

üstündeki ~/.zshrckabuk yeniden başlatıldı ve oturumu kapattı.

Çalışıp çalışmadığını kontrol edin:

  ~ 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]

Bu mükemmel çalışıyor. Bunu / zshenv değil .bash_profile içine ekledim.
Kang Byul

8

Bu komutu çalıştır

Terminali her açtığınızda yüklenmesi için bash'e rbenv ekleyin

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

bu sorununuzu çözecektir Referans


1
Bunu düzeltmek için saatler harcadım. Sonunda çözümünüz yardımcı oldu. Teşekkürler!!
Kullanıcı7354632781

5

Eğer bash kullanıyorsanız ,

~/.bash_profile

ve aşağıdaki satırı ekleyin (henüz orada değilse)

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

Zsh kullanıyorsanız,

~/.zshrc

ve aynı kod satırını .zshrc dosyasının sonuna ekleyin.

Sonra sadece terminalinizi yeniden başlatın ve şimdi iyi olmalı.


Mac os Catalina'daki insanlar zsh talimatını takip etmelidir
Abhinay

4

rbenv help shell

"Kabuğunuzdaki 'RBENV_VERSION' ortam değişkenini ayarlayarak kabuğa özgü bir Ruby sürümü ayarlar. Bu sürüm, yerel uygulamaya özel sürümleri ve genel sürümü geçersiz kılar. Rbenv.The özel sürüm dizesi 'sistemi tarafından bilinen bir Ruby sürümü ile eşleşen bir dize olmalıdır. 'Ruby varsayılan sisteminizi kullanır. rbenv sürümlerini çalıştırın' kullanılabilir Ruby sürümlerinin listesi için. "

Rbenv doğru bir şekilde kurulduysa, ruby ​​-v

rbenv shell 1.9.3-p125


Benim için işe yarayan 'rbenv shell xyz'. Yukarıda daha üst sıralarda yer alan cevapta açıklanan 'rbenv yerel xyz' OS X üzerinde çalışmadı.
Jeremy Rea

4

Bana gelince, rbenvbirlikte kullanmanın en kolay yolu yapılandırmadaki eklentiler bölümüne zsheklemektir . Benim durumumda şuna benzer: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)

Bundan sonra, ruby ​​versiyonlarını yardımıyla kurarken, değiştirirken, kullanırken sorun olmaz rbenv.

Değişiklik yaptıktan sonra terminal oturumunuzu yeniden başlatmayı unutmayın.


4

Aynı problemim vardı, ancak Homebrew'un neden olduğu:

[~]$ 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

Bir şekilde Ruby'yi Homebrew aracılığıyla da kurmuştum ve Homebrew yolu, rbenv yolumun önündeydi $PATH. Koşmak brew uninstall rubybenim için düzeltti.


4

Çalıştırmak:

rbenv init

Bunu çalıştırdıktan sonra, yerel rbenv versiyonumu ayarladığımda:

rbenv local 2.4.0

o zaman benim ruby -vve rbenv localversiyonlarım çakıştı.

Not: Ayrıca içinde bulunduğunuz dizinden çıkmak ve daha sonra geri gitmek isteyebilirsiniz, bir şeyleri işe almak için benim için gerekli olduğunu fark ettim.


3

Ben de aynı soruna geldim. Bu, "sudo" ile "rbenv global" komutunu çalıştırarak düzeltildi. Bence izin sorunu gibi bir şeydi.

güncelleme: Sonunda çözümü buldum. Mac'imde "/usr/local/Cellar/rbenv/0.3.0/" altında aynı dosya "sürümü" vardı. Bence zaman zaman yanlışlıkla yaratıldı. kaldırmalısınız.


3

Bu belirtilere sahip olduğumda, sorun, fark etmeden, geçmeye çalıştığım yeni Ruby sürümü için yüklemenin yarıda başarısız olduğu ortaya çıktı. Düzeltme, silmek ve yeniden yüklemekti.

(Bu, ruby ​​1.9.3'ün mevcut sürümlerin rbenv listesinde görünmesine rağmen, rbenv'in kabul edeceği yolda bir yürütülebilir dosya bulunmadığı anlamına geliyordu. Rbenv, sadece yolunuz, aslında hazırladığı yerde hiçbir şey yoksa, işletim sisteminiz varsayılan yolunuzu aramaya ve sistem sürümünüzü bulmaya devam edecektir.


3

balık kabuğu kullanıcısı için

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/

2

Bu yeniden yüklendikten hemen sonra başıma geldi rbenv. Görünüşe göre .ruby-versiongiriş dizinimde artık var olmayan bir sürümü belirten bir dosya vardı. Dosyayı sildikten sonra her şey işe yaradı.


2

Son satırınızın .bash_profile:

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

1

Kabul edilen cevap aşağıdakileri eklemenizi önerir:

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

Bu OP'nin başvurduğu Mac OSX üzerinde çalışmaz. Aslında, brew install rbenvOSX'te curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bashBAŞARISIZ olacağından Mac OSX'teki tek kurulum yöntemi olan rbenv aracılığıyla yüklerseniz , rbenv yürütülebilir dosyası şu şekilde yüklenir:

$ which rbenv
/usr/local/bin/rbenv

Ancak, OSX'te bile, rbenv kökü $ HOME dizininde kalır:

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

Ne anlama geliyor? Bu, rubies'i yüklediğinizde, verilen ana dizine .rbenv altında yüklenecekleri anlamına gelir:

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

Şimdi demleme kurulumu, Linux'ta manuel olarak yapmanız gereken bazı işler yaptı. Örneğin, Linux'ta, ruby-build'i manuel olarak bir eklenti olarak yüklemeniz gerekir:

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

Bu zaten homebrew kurulumu ile yapılır. Linux kurulumunda olduğu gibi homebrew kurulumunda yapılması gereken önemli bir adım vardır. Rbenv dolgularını yolunuza eklemelisiniz. Bunu yapmak için, kabuğunuz başladığında, aşağıdaki komutu değerlendirmelisiniz (bu da rbenv şimlerini $ PATH'ınızın başına ekleyecektir):

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

Şimdi koştuğunuzda echo $PATH, rbenv şimlerini göreceksiniz:

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

Şimdi yakut versiyonunuzu kontrol edin ve yüklü rbenv yakutu yansıtacaktır:

ruby -v
ruby 2.6.0p0 

0

Garip bir şekilde, rbenv sürümü .rbenv dosyasını ayarlamadı Kontrol ile: ls -ltra -> rbenv yazıldığını görmek için



-1

Rbenv'i kurmadan önce rvm'yi silmeyi unuttum. RVM'yi sildim ve rbenv'i yeniden kurdum, ancak sistem yine de Ruby'nin rbenv tarafından global olarak atanan sürümünü kullanmıyordu. Terminal'i kapatmayı denedim, ancak sadece tüm makineyi yeniden başlattığımda çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.