rvm Installation funktioniert nicht: "RVM ist keine Funktion"

234

Ich habe gerade RVM installiert, kann es aber nicht zum Laufen bringen. Ich habe eine solche Zeile am Ende meiner .profileDatei:

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

Ich habe versucht, das source .profileTerminal auszuführen und neu zu starten, aber trotzdem rvm use 1.9.2bekomme ich beim Ausführen Folgendes:

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

Mein System ist Ubuntu 11.10.

Amorfis
quelle
2
Ich empfehle Ihnen rbenv als Alternative zu RVM. Es muss nicht in Ihre Shell geladen werden.
Drinor
10
Überall dort, wo man ein Problem mit einer bestimmten Technologie hat, gibt es immer einen Helden in glänzender Rüstung, mit einem wertvollen Rat, diese Technologie wegzuwerfen und eine völlig alternative, absolut erstaunliche andere ohne Nachteile zu installieren. Es ist, als hätte ich eine Rubinfrage gestellt und dieser Held kam sofort auf "Just Install Java" =)
Clergyman

Antworten:

236

Sie verwenden keine Login-Shell.

Der Vorgang zum Aktivieren des Anmeldeflags wird hier beschrieben Einige Details zur Anmelde-Shell finden Sie hier .

Daher müssen Sie die Option aktivieren in den Einstellungen des Gnome-Terminals "Als Anmeldeshell ausführen" aktivieren. Nach dem Setzen des Flags muss ein neues Terminal geöffnet werden.

Manchmal ist es erforderlich, den Befehl auf zu setzen /bin/bash --login .


Für Fernbedienung ist es wichtig, den Unterschied zwischen dem Ausführen einer interaktiven sshSitzung und dem Ausführen einzelner Befehle zu verstehen .

Während dem Rennen ssh server und dann interaktiv mit dem Server arbeiten, verwenden Sie standardmäßig die Anmeldeshell und alles ist in Ordnung, aber ssh server "command"Sie verwenden keine Anmeldeshell und es wäre erforderlich, sie auszuführen ssh server 'bash -lc "command"'.

Jeder Remote-Aufruf kann das gleiche Problem haben wie das Ausführen eines einzelnen Befehls mit ssh.

mpapis
quelle
4
Was wäre die äquivalente Lösung auf dem Mac?
Adam Grant
8
versuchen Sie rvm get stable --auto, Ihre Terminaleinstellungen zu überprüfen
mpapis
10
fyi: wir mussten ein neues terminal starten nachdem wir dies eingestellt hatten.
Oma
2
@mpapis Wie würde ich gnome-terminal so einrichten, dass "Befehl als Anmeldeshell ausführen" auf einem Remote-Server ausgeführt wird, für den ich den X-Server nicht an meinen Computer weiterleiten kann?
Waseem
12
Dem Vorschlag von @ mpapis zu folgen, --autowurde zugunsten von abgelehnt, --auto-dotfilesso dass der Befehl jetzt lautet rvm get stable --auto-dotfiles
Mart Van de Ven
432

Sie müssen Folgendes ausführen

$ source ~/.rvm/scripts/rvm

Führen Sie dies dann aus

$ type rvm | head -n 1

und wenn du bekommst

rvm is a function

das Problem ist behoben.

Sie müssen auch ausführen user$ rvm requirements, um die Abhängigkeitsanforderungen für Ihr Betriebssystem anzuzeigen

Quelle: https://rvm.io/rvm/install/

Ich habe vergessen zu erwähnen, dass Sie diesen Code in Ihre ~ / .bashrc- oder ~ / .zshrc-Datei einfügen müssen und diesen Code nicht erneut schreiben müssen. Prost!

Jorge García
quelle
2
Vielen Dank. Arbeitete für mich am Ubuntu 10.04.
Vekozlov
19
Diese Lösung funktioniert nur in der aktuellen Shell-Sitzung. Wenn Sie dieser Lösung folgen, müssen Sie diese Schritte jedes Mal wiederholen, wenn Sie sich erneut an der Konsole anmelden. Eine dauerhaftere Lösung besteht darin, der Datei ~ / .bashrc Folgendes hinzuzufügen: if test -f ~ / .rvm / scripts / rvm; dann ["$ (Typ -t rvm)" = "Funktion"] || Quelle ~ / .rvm / scripts / rvm fi
Stanley
Dies sollte wirklich auf der Gnome-Integrationsseite von RVM sein, viel prägnanter und wie ein Zauber auf Mint Nadia funktionieren, auf dem KDE & Cinammon ausgeführt wird
k4t434sis
1
Und was ist, wenn es nach all dem immer noch keine Funktion ist?
Br.Bill
Wenn die Lösung von @ Stanley nicht funktioniert, gehen Sie auch folgendermaßen vor: stackoverflow.com/questions/820517/bashrc-at-ssh-login
Adam Grant
105

Um dies dauerhaft zu beheben, schneiden Sie einfach die folgende Zeile aus / fügen Sie sie ein:

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

Von: ~/.bash_profile Datei

Zu: ~/.bashrc Datei

Grund dafür ist, dass dies .bashrcjedes Mal ausgeführt wird, wenn Sie das Terminal betreten und .bash_profilewenn Sie sich anmelden. Aus diesem Grund /bin/bash --loginfunktioniert die Lösung , aber Sie müssen dies jedes Mal tun, wenn Sie das Terminal betreten. Auf diese Weise werden Sie bis zu Ihrem nächsten Format eingestellt und Sie werden dies alles bis dahin vergessen :)

Haris Krajina
quelle
Als Bildschirmbenutzer muss ich diese Zeile immer ~/.bashrcanstelle von eingeben ~/.bash_profile.
Ryenus
2
Vielen Dank! Die Verzögerung von zwei Sekunden, die erforderlich ist, damit sich Gnome anmelden kann, hat mich sehr gestört. Dies verhindert diese Verzögerung.
Justinpage
6
Warum führt die rvm-Installation dies nicht automatisch durch?
Balki
@mpapis ist der Release-Manager für rvm und sagt, dass dies so funktioniert: "X-Sitzungen können fehlschlagen (Fedora 17, wenn ich mich richtig erinnere), rsync-Sitzungen können fehlschlagen ... und weitere Gründe, an die ich mich derzeit nicht erinnern kann". Ich denke, ich bleibe einfach bei `/ bin / bash --login.
Kimbaudi
29

Auch ich war mit diesem Problem konfrontiert. Schließlich habe ich diese Zeile am Terminal ausgeführt.

source ~/.rvm/scripts/rvm

Problem ist behoben. Weil diese Zeile die RVM-Instanz für eine bestimmte Zeit zu einer Funktion macht.

Bastin Robin
quelle
2
Einfachste Antwort von allen. Fügen Sie diese Zeile einfach in Ihr ~ / .bashrc ein und Sie können mit jedem Terminalemulator arbeiten.
Nikkolasg
1
Hallo - obwohl dieser Befehl die Dinge für die Term-Sitzung, in der ich mich befand, "repariert" hat, waren die Ergebnisse nicht klebrig und halfen neuen (oder anderen) Term-Sitzungen nicht. Und es scheint, dass der Desktop die Änderungen nicht kennt. Ich bin auch gegen die Anmeldesache, weil sie pro Sitzung / Anmeldung basiert. Persönlich möchte ich die Möglichkeit haben, dasselbe Programm mit verschiedenen Ruby-s und Versionen zu vergleichen.
wird
1
Du bist der echte MVP. Nichts anderes hat funktioniert, bis ich es versucht habe. Es ist mir egal, ob es nur vorübergehend ist. Ich brauchte nur eine Lösung.
Ian-Campbell
Wo befindet sich die Installationsdatei für rvm? Wenn Sie sie installieren, werden dieses und andere Probleme behoben? Ich habe den auf ihrer Homepage beschriebenen Prozess verwendet und stundenlang versucht, ihn "nur zum Laufen" zu bringen. Sollte so etwas wie "yum install rvm" sein und alles ist fertig und bereit zu gehen.
JosephK
21

Das neueste RVM (rvm 1.11.6 (stabil)) funktionierte nicht mehr unter Ubuntu (10.10 - 64 Bit - nerdige Mücke oder was auch immer) - ich bekam es immer wieder

"RVM ist keine Funktion. Die Auswahl von Rubinen mit 'rvm use ...' funktioniert nicht."

Vorher habe ich die Nachricht erhalten, aber 'rvm 1.9.3-p0@rails321' würde funktionieren. Jetzt würde es nicht funktionieren - Sie konnten Edelsteine ​​überhaupt nicht ändern.

Nichts hat funktioniert, bis ich das gefunden habe - machen Sie dies zur LETZTEN Zeile in /home/your-name/.bashrc

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

Rod McLaughlin
quelle
2
"rvm get stabile --auto" wurde zu .bash_login [[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" hinzugefügt und aus .bashrc - I entfernt Quelle ~ / .bash_login am Ende von .bashrc und am ANFANG eines Skripts hinzugefügt, das Gemsets im Midstream ändert
Rod McLaughlin
9

Wie Sie sagten, könnte der angezeigte Fehler der folgende sein.

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.

Wie oben erwähnt, geben Sie einfach ' / bin / bash --login ein ' in Ihr Terminal ein (nach dem Neustart Ihres Terminals), geben Sie dann den Befehl 'rvm use 1.9.3' ein (z. B.) und es wird dieselbe Version verwendet.

Führen Sie einfach den Befehl 'ruby -v' aus, um zu bestätigen, dass die RVM die aktualisierte Version von Ruby verwendet.

Rajesh Omanakuttan
quelle
8

Ich hatte dieses Problem auch bei einer neuen RVM-Installation, und keine der Antworten hier hat es behoben. Wenn sie auf die offizielle rvm-Site im Abschnitt "Grundlagen" gehen, haben sie diesen Befehl:

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

source $ (rvm 1.9.3 do rvm env --path)

Sie sollten 1.9.3 für die gewünschte Ruby-Version ändern, damit rvm unabhängig vom Shell-Typ zu einer Funktion wird.

vcanales
quelle
7

Obwohl Sie eine Antwort akzeptiert haben, möchte ich einen anderen Weg vorschlagen. ~ / .bashrc wird geladen, bevor eine Shell geöffnet wird. Fügen Sie diese Zeile am Ende hinzu, und Sie benötigen nichts von dieser Login-Shell

kapv89
quelle
"das Login-Shell-Ding" gibt es aus einem Grund, ich habe viele Tests mit RVM-Sourcing durchgeführt und es ist der einzige Weg, der Arbeit ohne nicht nachweisbare und schwer zu lösende Fehler garantiert
mpapis
@mpapis Kannst du den Grund erklären? Aus anderen Antworten geht hervor, dass es den meisten
recht ist,
Zum Beispiel können X-Sitzungen fehlschlagen (Fedora 17, wenn ich mich richtig erinnere), rsync-Sitzungen fehlschlagen ... und weitere Gründe, an die ich mich
momentan
7

Vielleicht können Sie unten versuchen:

  • Ihr Terminal ->
  • Bearbeiten ->
  • Profileinstellungen ->
  • Titel und Befehl ->
  • Überprüfen Sie den Befehl "Als Anmeldeshell ausführen".
  • Getan
Feuda
quelle
Dies ist die einfachste und richtige Lösung, da eine normale Shell .profile überspringt. Wenn Sie diese Option verwenden, wird sie geladen und muss .bashrc überhaupt nicht bearbeiten.
DWils
6

Laufen bash --loginund dann laufen rvm use 2.0.0.

Gowri Tumma
quelle
4

Öffnen Sie das Terminal und gehen Sie zu Bearbeiten> Profileinstellungen. Gehen Sie dann zur Registerkarte " Titel und Befehl " und aktivieren Sie " Befehl als Anmeldeshell ausführen ".

Booten Sie einen Bash und jetzt können Sie Gems ohne Verwendung von sudo direkt vom Terminal aus installieren. Der Fehler " RVM ist keine Funktion, die Auswahl von Rubinen mit 'rvm use ...' funktioniert nicht. " Wird behoben.

Prost.

ajknzhol
quelle
4

Alle obigen Antworten sind gültig. Aber als ich vor dem gleichen Problem stand, war die Lösung die folgende:

  • Aktualisieren Sie ZSH. (Versucht, direkt zu aktualisieren, funktioniert aus irgendeinem Grund nicht. Also deinstallierte und neu installierte aktualisierte Version von hier )
  • Legen Sie die Standard-Shell mit zsh fest (dh wenn Sie zsh bevorzugen)sudo chsh -s $(which zsh) $USER
  • Stellen Sie sicher, dass sich der folgende Code am unteren Rand Ihres Codes befindet, .zshrcnachdem Sie die neueste RVM installiert haben, die wahrscheinlich CURL von der offiziellen RVM-Site verwendet

    [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
    source ~/.profile
  • WICHTIGSTER PUNKT: Stellen Sie sicher, dass in Ihrer .zshrcDatei jeder Export an PATHangehängt wird :$PATH. Was ich glaube, war die Wurzel meiner Probleme, selbst nachdem ich die obigen Schritte befolgt habe.

  • poste dies alle meine Probleme mit RVM Nicht eine Funktion zu sein, verschwand. Wenn es immer noch nicht funktioniert, geben Sie hier eine Fehlersuche an. Nach ein paar Stunden Kampf um die Lösung dieses Problems bin ich sicher, dass ich alle damit verbundenen Fehler gesehen habe.

Ich hoffe es hilft. Prost!

Vishnu Narang
quelle
Jawohl. Das hat bei mir funktioniert. Ich habe den WICHTIGSTEN PUNKT-Teil nicht verstanden, aber es hat funktioniert.
Ricbermo
Wenn Sie versuchen, RVM zu installieren, wird eine Warnung ausgegeben, wenn Sie dies getan haben export PATH="/usr/bin:". Es wird Sie bitten, daran anzuhängen $PATH. Dies war eine Ursache für eines meiner Probleme. Jeder Daher export PATHhätte $PATHangefügt , so dass vor dem Export, was auch immer die PATHVariable hatte angehängt wird. Wie auch immer, gut, dass dies hilfreich war.
Vishnu Narang
3

Verfahren zum Installieren von Ruby 1.9.3-p125 unter Mac OSX 10.8 Mountain Lion

  1. Sie haben bereits den neuesten XCode (> = 4.3) und den Befehlszeilen-Objective-C-Compiler "clang" installiert.
  2. Sie müssen die "bash" -Shell ausführen, damit diese Prozedur funktioniert.
  3. Gehen Sie zu den Systemeinstellungen
  4. Klicken Sie auf "Benutzer & Gruppen"
  5. Klicken Sie auf das Schloss unten links im Bedienfeld und geben Sie Ihr Passwort ein, um es zu entsperren.
  6. Klicken Sie bei gedrückter Strg-Taste auf Ihr Benutzersymbol im linken Bereich des Bedienfelds und wählen Sie "Erweiterte Optionen ...".
  7. Ändern Sie die Login-Shell in "/ bin / bash".
  8. Schließen Sie die Einstellungen
  9. Öffnen Sie ein Terminalfenster (drücken Sie Befehl + Leertaste und geben Sie "terminal" ein)
  10. Befolgen Sie die Anweisungen unter:

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

Anmerkungen:

  • Um Ruby zu installieren, müssen Sie möglicherweise den Clang-Compiler angeben:

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

  • Wenn RVM Griffe über / usr / local / rvm nicht gefunden hat, müssen Sie einen Link erstellen:

    $ ln -s / Users / [Ihr Benutzername] /. rvm / usr / local / rvm

George Campbell
quelle
Ich denke, sie sind jetzt bis P194. Wenn Sie rvm 1.9.3 --with-gcc = clang installieren, erhalten Sie automatisch die neueste Version von 1.9.3.
George Campbell
1

Ich hatte den gleichen Fehler erhalten, weil ich jemals die alte RVM-Version ruby-rvm mit dem Befehl apt-get installiert hatte.

Ich habe das Problem gelöst, indem ich die Skriptzeile entfernt habe, um das alte rvm in der .bashrc-Datei zu konfigurieren.

Überprüfen Sie das alte rvm-Konfigurationsskript und führen Sie dann das Quellprofil aus

Ryancheung
quelle
1

Ich habe es behoben, indem ich diese Zeile zu .bash_profile hinzugefügt habe:

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

Ich hatte den gleichen Fehler, aber keine der Lösungen auf dieser Seite schien zu funktionieren. Für mich war es genug, die rvmausführbare Datei meinem Pfad hinzuzufügen :

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

Et voila!

Rafael Bugajewski
quelle
0

Ich hatte das gleiche Problem und habe dies in meinem .bash_profile getan und es hat funktioniert. source "$HOME/.rvm/scripts/rvm".

Sadiksha Gautam
quelle
0

Für diejenigen, die mit dem gleichen Problem kommen und Lubuntu wie ich verwenden, bin ich diesem Link gefolgt :

Sie starten Ihr Terminal mit

lxterminal -e "bash -il"

Vielen Dank an @mpapsis, der mich in die richtige Richtung gelenkt hat

Nizzin
quelle
Da Links manchmal vorübergehend sind, ist es möglicherweise eine gute Idee, eine winzige Zusammenfassung für die Nachwelt in Ihre Antwort einzufügen.
Marcel Wilson
0

Mein unreiner Weg, die Ruby-Version zu ändern, ist

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

Es funktioniert, weil ich die Zeile unten in meinem ~ / .bashrc habe, aber seltsamerweise erledigt es den Job nicht automatisch.

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

Ich habe versucht, mit --login eine Verbindung zu meinem Docker-Container herzustellen

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

In diesem Fall bleibt der Container im Hintergrund geöffnet und ich kann keine Befehle eingeben.

Ich habe sowohl zhc als auch terminal mit der Option "open with /bin/bash --login" ausprobiert.

Bormat
quelle