rvm kurulumu çalışmıyor: “RVM bir işlev değil”


234

RVM'yi yeni kurdum, ancak çalıştıramıyorum. Dosyamın sonunda böyle bir satır var .profile:

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

source .profileTerminali çalıştırmayı ve yeniden başlatmayı denedim , ama yine de, çalıştırdığımda rvm use 1.9.2:

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

Sistemim Ubuntu 11.10.


2
RVM'ye alternatif olarak rbenv'i tavsiye ederim . Kabuğunuza yüklenmesi gerekmez.
içki

10
Birinin belirli teknolojiyle ilgili bir sorunu olduğunda, parlak zırhta her zaman bir kahraman vardır, bu teknolojiyi atmak ve tamamen alternatif, kesinlikle şaşırtıcı başka bir tane çekmek için değerli bir tavsiye vardır. Sanki yakut bir soru sordum ve bu kahraman hemen "sadece java yükle" =) ile geldi
Clergyman

Yanıtlar:


236

Bir giriş kabuğu kullanmıyorsunuz.

Giriş bayrağını etkinleştirme süreci burada açıklanmıştır , ayrıca bir giriş kabuğunun ne olduğuna dair bazı detaylar burada bulunabilir .

Bu nedenle, Gnome terminalinin ayarlarında "Oturum açma kabuğu olarak çalıştır" seçeneğini işaretlemeniz gerekir . Bayrağı ayarladıktan sonra yeni terminalin açılması gerekir.

Bazen komutun ayarlanması gerekir /bin/bash --login.


İçin uzak bağlantıları interaktif çalışan arasındaki differene anlamak önemlidir sshoturum ve tek komutları çalıştırma.

ssh serverSunucuyu etkileşimli olarak çalıştırıp çalıştırırken varsayılan olarak oturum açma kabuğunu kullanıyorsunuz ve her şey yolunda, ancak ssh server "command"oturum açma kabuğunu kullanmıyorsunuz ve çalıştırmanız gerekiyor ssh server 'bash -lc "command"'.

Herhangi bir uzaktan çağırma, tek komut yürütme ile aynı soruna sahip olabilir ssh.


4
Mac'te eşdeğer çözüm ne olurdu?
Adam Grant

8
deneyin rvm get stable --autove terminal ayarlarınızı kontrol edin
mpapis

10
fyi: Bunu ayarladıktan sonra yeni bir terminale başlamamız gerekiyordu.
oma

2
@mpapis Gnome terminalini, X sunucusunu makineme yönlendiremediğim uzak bir sunucuda "Komutu giriş kabuğu olarak çalıştır" olarak nasıl ayarlayabilirim?
Waseem

12
@ Mpapis'nin önerisini takip etmek için, --autoartık emirden vazgeçildi , --auto-dotfilesbu yüzden komut şu an rvm get stable --auto-dotfiles
Mart Van de Ven

432

Aşağıdakileri çalıştırmanız gerekiyor

$ source ~/.rvm/scripts/rvm

o zaman bunu çalıştır

$ type rvm | head -n 1

ve eğer alırsan

rvm is a function

problem çözüldü.

user$ rvm requirementsİşletim sisteminizin bağımlılık gereksinimlerini görmek için de çalıştırmanız gerekir

Kaynak: https://rvm.io/rvm/install/

Bu kodu size ~ / .bashrc veya ~ / .zshrc dosyasına koymanız gerektiğini ve bu kodu tekrar yazmanız gerekmediğini unutmayın. Şerefe!


2
Teşekkürler. Benim için Ubuntu 10.04 üzerinde çalıştı.
vekozlov

19
Bu çözüm yalnızca geçerli kabuk oturumunda çalışır. Bu çözümü izlerseniz, konsolda her oturum açışınızda bu adımları tekrarlamanız gerekir. Daha kalıcı bir çözüm aşağıdakileri ~ / .bashrc dosyasına eklemektir: if test -f ~ / .rvm / scripts / rvm; sonra ["$ (type -t rvm)" = "işlev"] || kaynak ~ / .rvm / scriptler / rvm fi
Stanley

Bu gerçekten RVM'nin gnome entegrasyon sayfasında olmalı, çok daha özlü ve yine de KDE & Cinammon'u çalıştıran nane
nadia'da

1
Ve tüm bunları yaptıktan sonra hala bir işlev değilse?
Br.Bill

@ Stanley'nin çözümü işe yaramazsa, bunu da yapın: stackoverflow.com/questions/820517/bashrc-at-ssh-login
Adam Grant

105

Bunu kalıcı olarak çözmek için aşağıdaki satırı kesin / yapıştırın:

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

Gönderen: ~/.bash_profiledosya

Alıcı: ~/.bashrcdosya

Bunun nedeni, .bashrcterminale .bash_profileher girdiğinizde ve her giriş yaptığınızda yürütülmesidir . Bu yüzden çözüm /bin/bash --loginişe yarıyor, ancak terminale her girdiğinizde bunu yapmanız gerekiyor. Bu şekilde bir sonraki formata kadar ayarlanır ve tüm bunları o zamana kadar unutacaksınız :)


Bir ekran kullanıcısı olarak, bu satırı her zaman ~/.bashrcyerine koymak zorundayım ~/.bash_profile.
ryenus

2
Teşekkürler! GNOME'un giriş yapması için gereken iki saniyelik gecikme beni son derece rahatsız etti. Bu gecikmeyi önleyecektir.
justinpage

6
RVM kurulumu neden otomatik olarak yapılmıyor?
balki

@mpapis rvm'in yayın yöneticisidir ve bunu bu şekilde yapmanın "X oturumlarını başarısız kılabilir (doğru hatırlıyorsam Fedora 17), rsync oturumlarını başarısız kılar ... ve şu an hatırlayamadığım daha fazla neden" diyor. Sanırım sadece / bin / bash --login ile yapışacağım.
kimbaudi

29

Ben de bu problemle karşılaştım. Sonunda bu hattı terminalde yürüttüm.

source ~/.rvm/scripts/rvm

Sorun giderildi. Çünkü bu satır RVM örneğini belirli bir süre için bir işlev haline getirecektir.


2
En basit cevap. sadece bu satırı ~ / .bashrc'nize koyun ve herhangi bir terminal öykünücüsüne gitmeye hazırsınız.
Nikkolasg

1
Merhaba - Bu komut, içinde bulunduğum dönem için 'sabit' şeyler olmasına rağmen, sonuçlar yapışkan değildi ve yeni (veya diğer) dönem oturumlarına yardımcı olmadı. Ve masaüstü de değişiklikleri bilmiyor gibi görünüyor. Ben oturumu / oturum açma tabanlı olduğundan ben de "anti-" giriş şeyim. Şahsen ben aynı programı farklı Ruby ve sürümlerle karşılaştırabilmek istiyorum.
will

1
Sen gerçek mvp'sin. Bunu denemeden başka hiçbir şey işe yaramadı. Geçici olup olmadığı umurumda değil, sadece bir düzeltmeye ihtiyacım vardı.
ian-campbell

Rvm için yükleme dosyası nerede, bu yüzden yüklediğinizde, bu ve diğer sorunlarla ilgileniyor? Ana sayfalarında anlatılan işlemi kullandım ve "sadece çalışmak" için saatler harcadım. "Yum install rvm" gibi bir şey olmalı ve her şey yapılır ve gitmeye hazır.
JosephK

21

En son RVM (rvm 1.11.6 (kararlı)) Ubuntu üzerinde çalışmayı durdurdu (10.10 - 64 bit - nerdy gnat or whatever) - Ben almaya devam ettim

"RVM bir işlev değil, 'rvm use ...' ile rubies seçimi çalışmaz."

Daha önce mesajı aldım, ama 'rvm 1.9.3-p0@rails321' işe yarayacaktı. Şimdi, işe yaramaz - değerli taşları değiştiremezsiniz.

Bunu bulana kadar hiçbir şey işe yaramadı - bunu SON satır yap /home/your-name/.bashrc

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


2
.bash_login [[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" klasörüne "rvm sabitleşiyor - otomatik" eklendi ve .bashrc - I kaynağından kaldırıldı .bashrc sonunda ve orta akıştaki değerli taşları değiştiren herhangi bir komut dosyasının BAŞLANGIÇına ~ / .bash_login kaynağı eklendi
Rod McLaughlin

9

Söylediğiniz gibi, gösterilen hata aşağıdaki olabilir.

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.

Yukarıda belirtildiği gibi, sadece terminalinize ' / bin / bash --login ' yazın (terminalinizi yeniden başlattıktan sonra), ardından 'rvm use 1.9.3' komutunu yazın (örneğin) ve aynı sürümü kullanmaya başlayacaktır.

RVM'nin Ruby'nin güncellenmiş sürümünü kullandığını doğrulamak için 'ruby -v' komutunu uygulamanız yeterlidir.


8

Bu sorunu yeni bir rvm kurulumunda da yaşadım ve buradaki cevapların hiçbiri düzeltilmedi. Resmi rvm sitesine girerek, temeller bölümünde, şu komuta sahipler:

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

kaynak $ (rvm 1.9.3 do rvm env --yol)

Gerçekten istediğiniz yakut sürümü için 1.9.3'ü değiştirmelisiniz ve rvm'yi kabuk türünden bağımsız olarak bir işlev haline getirecektir.


7

Bir yanıtı kabul etmenize rağmen, başka bir yol önermek istiyorum .. ~ / .bashrc herhangi bir kabuk açılmadan önce yüklenir. Sonuna bu satırı ekleyin ve bu giriş kabuğu öğesinin hiçbirine ihtiyacınız yok


"Bu giriş kabuğu şey" bir sebepten dolayı var, RVM kaynak ile birçok test yaptım ve tespit edilemeyen ve hataları çözmek zor olmadan garanti garanti etmenin tek yolu
mpapis

@mpapis Sebebini açıklayabilir misiniz? Diğer cevaplardan, çoğu çizgi rc dosyasına
taşımakla

örneğin X oturumlarında başarısız olabilir (doğru hatırlıyorsam Fedora 17), rsync oturumlarında başarısız olur ... ve şu anda hatırlayamıyorum için daha fazla neden
mpapis

7

Belki belows deneyebilirsiniz:

  • Terminaliniz ->
  • Düzenle ->
  • Profil Tercihleri ​​->
  • Başlık ve Komut ->
  • "Komutu giriş kabuğu olarak çalıştır" seçeneğini işaretleyin
  • Bitti

Bu, en kolay çözümdür ve doğru bir çözümdür.
DWils


4

Terminali açın ve Düzen> Profil Tercihleri'ne gidin ve " Başlık ve Komut " Sekmesine gidin ve " Komutu Giriş Kabuğu Olarak Çalıştır " ı işaretleyin .

Bir Bash Boot ve Şimdi sudo kullanmadan doğrudan terminalleri Gems yükleyebilirsiniz ve " RVM bir işlev değildir, 'rvm kullanımı ...' ile yakut seçimi çalışmaz. " Ortadan kaldırılacaktır.

Şerefe.


4

Yukarıdaki yanıtların tümü geçerlidir. Ama aynı sorunla karşılaştığımda, çözüm şuydu:

  • ZSH'yi güncelleyin. (Bazı nedenlerden dolayı doğrudan din't güncellemeye çalıştım. Bu yüzden güncellenmiş sürümü buradan kaldırın ve yeniden yükleyin )
  • Kullanarak varsayılan kabuğu zsh olarak ayarlayın (örn. Zsh'yi tercih ediyorsanız)sudo chsh -s $(which zsh) $USER
  • .zshrcMuhtemelen resmi RVM sitesinden CURL kullanarak en son RVM'yi yükledikten sonra aşağıdaki kodun alt kısmında olduğundan emin olun

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • EN ÖNEMLİ NOKTA:.zshrc Dosyanıza her dışa aktarmanın PATHeklendiğinden emin olun :$PATH. Hangi yukarıdaki adımları takip ettikten sonra bile benim sorunların kök olduğuna inanıyorum.

  • post the RVM tüm sorunlarım bir fonksiyon olmak değil gitti. Hala çalışmıyorsa, buraya bir miktar hata izi verin. Bu sorunu çözmek için mücadele ettikten birkaç saat sonra, ilgili tüm hataları görmüş olmalıyım.

Umarım yardımcı olur. Şerefe!


Evet efendim. Bu benim için çalıştı. EN ÖNEMLİ NOKTA kısmını anlamadım ama çalıştı.
Ricbermo

RVM'yi yüklemeye çalıştığınızda, varsa bir uyarı verecektir export PATH="/usr/bin:". Sizden ona eklemenizi isteyecektir $PATH. Sorunlarımdan birinin nedeni buydu. Bu nedenle, dışa aktarmadan önce, değişken ne olursa olsun eklenecek her şey export PATHeklenmelidir . Neyse, bu yardımcı oldu iyi. $PATHPATH
Vishnu Narang

3

Mac OSX 10.8 Mountain Lion'a Ruby 1.9.3-p125 kurulum prosedürü

  1. En son XCode'u (> = 4.3) ve Objective-C derleyicisi "clang" komut satırını zaten yüklediniz.
  2. Bu yordamın çalışması için "bash" kabuğunu çalıştırmanız gerekir.
  3. Sistem Tercihlerine Git
  4. "Kullanıcılar ve Gruplar" ı tıklayın
  5. Panelin sol alt tarafındaki kilidi tıklayın ve kilidini açmak için şifrenizi girin.
  6. Panelin sol bölmesindeki kullanıcı simgenizde "Ctrl-Click" seçeneğini tıklayın ve "Gelişmiş Seçenekler ..." i seçin
  7. Giriş Kabuğunu "/ bin / bash" olarak değiştirin
  8. Tercihleri ​​kapatın
  9. Bir terminal penceresi açın (command + boşluk çubuğuna basın ve "terminal" yazın)
  10. Şu adresteki talimatları uygulayın:

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

Notlar:

  • Ruby'yi yüklemek için clang derleyicisini belirtmeniz gerekebilir:

    $ rvm kurulum 1.9.3p125 --with-gcc = clang

  • RVM / usr / local / rvm ile ilgili bilgi bulamazsa, bir bağlantı oluşturmanız gerekir:

    $ ln -s / Kullanıcılar / [kullanıcı adınız] /. rvm / usr / local / rvm


Sanırım şimdi P194'e kadar. Rvm install 1.9.3 --with-gcc = clang yaparsanız, otomatik olarak 1.9.3'ün en son sürümünü alırsınız.
George Campbell


1

Aynı hatayı alırdım çünkü eski rvm sürümünü ruby-rvm'yi apt-get komutuyla yükledim.

Ben .bashrc dosyasında eski rvm yapılandırmak için komut dosyası satırını kaldırarak sorunu çözdü.

Eski rvm yapılandırma komut dosyasını denetleyin ve kaynak .profile dosyasını çalıştırın



1

Bu satırı .bash_profile dosyasına ekleyerek düzelttim:

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

0

Aynı hatayla karşılaştım, ancak bu sayfadaki çözümlerin hiçbiri işe yaramadı. Benim için rvmyürütülebilir dosyayı yoluma eklemek yeterliydi :

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

Et voila!


0

Aynı sorunu yaşadım ve bunu .bash_profile dosyamda yaptım ve işe yaradı. source "$HOME/.rvm/scripts/rvm".


0

Aynı sorunla gelenler ve benim gibi lubuntu kullanıyorlar için bu bağlantıyı takip ettim :

Terminalinize şu şekilde başlıyorsunuz:

lxterminal -e "bash -il"

Beni doğru yöne yönlendiren @mpapsis'e teşekkürler


Bağlantılar bazen geçici olduğu için, cevabınıza gelecek nesiller için küçük bir özet yapıştırmak iyi bir fikir olabilir.
Marcel Wilson

0

Ruby versiyonunu değiştirmenin kirli yolu

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

çünkü çalışır çünkü benim / / .bashrc satır feryat var ama garip olarak işi otomatik olarak yapmaz.

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

Docker konteynerine --login ile bağlanmaya çalıştım

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

ancak bu durumda kap arka planda açık kalır ve komut giremiyorum.

Zhc ve terminali "açık /bin/bash --login" seçeneği ile denedim

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.