web-dev-qa-db-fra.com

Comment définir Ruby GEM_HOME et GEM_PATH

Je suis un utilisateur NOVICE de Linux et j'utilise Linux mint 17.1

J'ai réinstallé Linux Mint 20 fois au cours des 3 derniers jours pour ce problème, mais je n'ai pas pu le résoudre

J'essaie d'installer Ruby on Rails using rvm ce qui s'est passé est que si vous démarrez une nouvelle installation Linux et essayez d'installer des gemmes et Ruby et des trucs dans une session de terminal, il a été installé avec succès dès que je ferme la session de terminal, je ne peux pas obtenir ces gemmes.

En le réinstallant plus de 20 fois au cours des 3 derniers jours, j'ai également effectué une recherche sur le Web. On m'a dit de mettre la variable d'environnement dans /etc/environment J'ai répété le chemin dans cette session et l'ai collé dans /etc/environment fichier.

même maintenant, je ne reçois pas mes gemmes installées

quand j'ai tapé rvm -v Je reçois les erreurs suivantes

Warning: PATH set to RVM Ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by Shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this Shell session run: 'rvm use Ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

Je suis une personne très novice en ce qui concerne le travail avec le terminal, je peux exécuter quelques commandes de base pour travailler avec Ruby.

J'aimerais savoir

  1. Comment définir PATH
  2. Comment définir GEM_HOME
  3. Comment définir GEM_PATH

Voici mon chemin complet

echo $PATH
/home/sharif/.rvm/gems/Ruby-2.2.2/bin:/home/sharif/.rvm/gems/Ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/Ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin
10
Amjad

On dirait que vous voulez la commande export pour définir les variables d'environnement:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Cela ne prendra toutefois effet que pour la session en cours. Pour les rendre plus permanents, ajoutez ces lignes à votre ~/.bashrc.

18
Jonathan

Cela signifie généralement que rvm n'est pas configuré correctement. L'erreur habituelle est que vous n'avez pas modifié votre .bashrc correctement (ou similaire) ou vous n'avez pas rechargé votre terminal.

Vous ne devez pas définir GEM_HOME ou GEM_PATH manuellement lorsque vous utilisez rvm.

Tu peux essayer source ~/.rvm/scripts/rvm et voyez si cela fonctionne.

Il se peut également que vous n'ayez pas encore construit de gemmes. N'utilisez pas rvm et Sudo. Rvm fonctionne mieux lorsqu'il est installé dans votre compte et pas à l'échelle du système.

3
coteyr

J'ai trouvé que .profile est chargé en dernier et cela place ~/.local/bin et ~/bin à l'avant du chemin. J'ai déplacé /etc/profile.d/rvm.sh vers ~/.rvm et à la fin du .profile j'ai ajouté "source ~/.rvm/rvm.sh" et l'erreur a disparu. Je suis sous Linux Mint 18.3. J'ai pyenv, rvm et sdkman installés et ils veulent tous être les derniers. Ils fonctionnent tous bien maintenant. :)

S'il s'agit d'un système partagé, déplacez simplement rvm.sh quelque part hors du chemin et tout autre utilisateur peut le source, comme par exemple /opt/rvm/rvm.sh.

2
RandyB

Voici ce que j'ai appris et comment j'ai résolu ce problème apparemment courant des erreurs d'environnement GEM_HOME et GEM_PATH.


Contexte

L'installation de RVM est censée créer des vars env GEM_HOME et GEM_PATH pour chaque RVM configuré et il le fait. Mais il y a apparemment un bogue tel que dans certains cas, les vars env ne sont définis que temporairement, et pour les redéfinir, vous devez les définir avec la ligne de commande. J'ai trouvé une solution de contournement pour faire persister les variables d'env pour un RVM.

Solution

  1. Trouvez votre actif (dans le RVM) Ruby version: Sur votre serveur de production, allez dans le répertoire de votre application et tapez $rvm list. Cela se traduira par une liste des versions Ruby installées et laquelle est active pour le RVM. Exemple de réponse:

    rvm rubies Ruby-1.9.3-p547 [ x86_64 ] => Ruby-1.9.3-p551 [ x86_64 ]

Donc, je sais que le RVM utilise actuellement la version Ruby-1.9.3-p551. Vous avez besoin de ces informations pour la prochaine étape.

  1. Obtenez les chemins d'accès pour GEM_PATH et GEM_HOME: Pour ce faire, exécutez à partir de la ligne de commande $rvm use Ruby-1.9.3-p551. Ensuite, toujours à partir de la ligne de commande, affichez tous les paramètres d'environnement à l'aide de la commande env. Recherchez GEM_PATH et GEM_HOME et copiez-les dans leur intégralité dans un espace de travail.

    GEM_PATH=/usr/local/rvm/gems/Ruby-1.9.3-p551:/usr/local/rvm/gems/Ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/Ruby-1.9.3-p551

  2. Définissez les variables d'environnement GEM_HOME et GEM_PATH: Maintenant, définissez ces variables d'environnement dans l'un des nombreux fichiers de profil. Je voulais maintenir la structure d'isolement de la version RVM, j'ai donc mis à jour le /profile.d/appspecific.sh avec ces deux lignes:

    export GEM_PATH=/usr/local/rvm/gems/Ruby-1.9.3-p551:/usr/local/rvm/gems/Ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/Ruby-1.9.3-p551

2
Va As

Comme @coteyr l'a mentionné, vous ne devez pas définir manuellement GEM_HOME et GEM_PATH lorsque vous utilisez rvm. Si vous vérifiez votre variable d'environnement PATH, en exécutant $ echo $PATH et $ HOME/.rvm/bin en fait partie, alors vous devez vous assurer que votre terminal exécute les commandes en tant que shell de connexion. Par exemple si vous êtes sur une machine Ubuntu, vous ouvrez votre terminal puis allez dans: menu> Edition> Préférences de profil> Commande puis sélectionnez "Exécuter la commande en tant que shell de connexion"

Cela semble être un ancien problème avec rvm qui, je suppose, n'est pas anodin à résoudre car il existe depuis un certain temps.

1
Lym

Pour remplir $GEM_PATH avec mon système (Manjaro/Arch) gems J'ai ajouté à mon .bashrc:

for _entry in /usr/lib/Ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
1
Tom Hale