237 votes

L'installation de rvm ne fonctionne pas : "RVM n'est pas une fonction"

Je viens d'installer RVM, mais je n'arrive pas à le faire fonctionner. J'ai une telle ligne à la fin de mon .profile fichier :

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

J'ai essayé d'exécuter source .profile et en redémarrant le terminal, mais toujours, lorsque j'exécute rvm use 1.9.2 J'y vais :

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

Mon système est Ubuntu 11.10.

445voto

Jorge García Points 2895

Vous devez exécuter ce qui suit

$ source ~/.rvm/scripts/rvm

puis exécutez ceci

$ type rvm | head -n 1

et si vous obtenez

rvm is a function

le problème est résolu.

Vous devez également exécuter user$ rvm requirements pour connaître les exigences en matière de dépendances pour votre système d'exploitation

Source : https://rvm.io/rvm/install/

J'ai oublié de mentionner que vous devez mettre ce code dans votre fichier ~/.bashrc ou ~/.zshrc et vous n'aurez plus besoin d'écrire ce code à nouveau. A la vôtre !

2 votes

Merci. Cela a fonctionné pour moi sur ubuntu 10.04.

19 votes

Cette solution ne fonctionne que dans la session actuelle du shell. Si vous suivez cette solution, vous devrez répéter ces étapes chaque fois que vous vous connecterez à nouveau à la console. Une solution plus permanente consiste à ajouter ce qui suit au fichier ~/.bashrc : if test -f ~/.rvm/scripts/rvm ; then [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm fi

0 votes

Cela devrait vraiment être sur la page d'intégration de gnome de RVM, beaucoup plus concis et fonctionnant comme un charme sur mint nadia sous KDE et Cinammon néanmoins.

243voto

mpapis Points 32015

Vous n'utilisez pas un shell de connexion.

Le processus d'activation de l'indicateur de connexion est décrit aquí Vous trouverez également des détails sur ce qu'est un shell de connexion. aquí .

Ainsi, vous devez vérifier l'option "Exécuter en tant que shell de connexion" dans les paramètres du terminal Gnome. Il est nécessaire d'ouvrir un nouveau terminal après ce réglage de l'indicateur.

Il est parfois nécessaire de régler la commande sur /bin/bash --login .


Pour à distance il est important de comprendre la différence entre l'exécution de connexions interactives et l'exécution d'activités de recherche. ssh et l'exécution de commandes uniques.

En cours d'exécution ssh server et que vous travaillez avec le serveur de manière interactive, vous utilisez le login shell par défaut et tout va bien, mais pour ssh server "command" vous n'utilisez pas le login shell et il serait nécessaire de l'exécuter avec ssh server 'bash -lc "command"' .

Toute invocation à distance peut avoir le même problème que l'exécution d'une commande unique avec ssh .

4 votes

Quelle serait la solution équivalente sur Mac ?

8 votes

Essayez rvm get stable --auto et vérifiez les paramètres de votre terminal

10 votes

Fyi : nous avons dû démarrer un nouveau terminal après avoir configuré ceci.

106voto

Haris Krajina Points 3051

Pour résoudre définitivement ce problème, il suffit de couper/coller la ligne suivante :

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

De : ~/.bash_profile fichier

A : ~/.bashrc fichier

La raison pour laquelle cela fonctionne est que .bashrc est exécuté chaque fois que vous entrez dans le terminal, et .bash_profile à chaque fois que vous vous connectez. C'est pourquoi la solution /bin/bash --login fonctionne, mais vous devez le faire à chaque fois que vous entrez dans le terminal. De cette façon, vous êtes prêt jusqu'à votre prochain formatage, et vous aurez oublié tout cela d'ici là :)

0 votes

En tant qu'utilisateur d'écran, j'ai toujours besoin de mettre cette ligne dans ~/.bashrc au lieu de ~/.bash_profile .

2 votes

Merci ! J'étais extrêmement gêné par le délai de deux secondes nécessaire à gnome pour se connecter. Cela évitera ce délai.

6 votes

Pourquoi l'installation de rvm ne le fait-elle pas automatiquement ?

30voto

Bastin Robin Points 101

J'ai aussi rencontré ce problème. Finalement, j'ai exécuté cette ligne dans le terminal.

source ~/.rvm/scripts/rvm

Le problème est réglé. Parce que cette ligne va faire de l'instance RVM une fonction pour un temps particulier.

2 votes

La réponse la plus simple de toutes. Il suffit de mettre cette ligne dans votre ~/.bashrc et vous pouvez utiliser n'importe quel émulateur de terminal.

1 votes

Bonjour - bien que cette commande ait "réglé" les choses pour la session trimestrielle à laquelle j'ai participé, les résultats n'étaient pas les mêmes. collant et n'a pas aidé les nouvelles (ou autres) sessions à terme. Et il semble que le bureau ne soit pas non plus au courant de ces changements. Je suis également opposé à la connexion parce qu'elle est basée sur la session/la connexion. Personnellement, je veux avoir la possibilité de comparer le même programme avec différents Ruby-s et versions.

1 votes

Tu es le vrai MVP. Rien d'autre ne marchait jusqu'à ce que j'essaie ça. Je m'en fous si c'est temporaire, j'avais juste besoin d'une solution.

21voto

Rod McLaughlin Points 139

La dernière version de RVM (rvm 1.11.6 (stable)) a cessé de fonctionner sur Ubuntu (10.10 - 64 bit - nerdy gnat ou autre) - je n'arrêtais pas d'avoir le message suivant

"RVM n'est pas une fonction, sélectionner des rubis avec 'rvm use ...' ne fonctionnera pas."

Avant, j'avais le message, mais 'rvm 1.9.3-p0@rails321' fonctionnait. Maintenant, ça ne marche pas - on ne peut pas changer de gemset du tout.

Rien ne fonctionnait, jusqu'à ce que je trouve ceci - faites de cette ligne la DERNIÈRE dans /home/your-name/.bashrc

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

2 votes

"rvm get stable --auto" ajouté à .bash_login [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" et supprimé de .bashrc - J'ai ajouté source ~/.bash_login à la fin de .bashrc et au DÉBUT de tout script qui change de gemsets en cours de route

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X