Comment définir Ruby GEM_HOME et GEM_PATH

10

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 ​​sur des rails à l'aide de 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 d'autres choses dans une seule 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 le /etc/environmentchemin en écho dans cette session et de le coller dans le /etc/environmentfichier.

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

quand j'ai tapé rvm -vj'obtiens 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
Amjad
la source
monsieur @mohsen pahlevanzades puis-je vous demander quel est l'intérêt de supprimer ces deux lignes, si cela ne vous dérange pas de le dire, salutations
Amjad
Si je me souviens bien, vous avez écrit mes salutations ou merci,
PersianGulf
1
Concernant la modification: "Salut", "merci", slogans et salutations devraient-ils être supprimés des messages?
Gilles 'SO- arrête d'être méchant'

Réponses:

18

On dirait que vous voulez la commande exportpour 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.

Jonathan
la source
3

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

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

Vous pouvez essayer de source ~/.rvm/scripts/rvmvoir 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.

coteyr
la source
Vous pouvez également ajouter source ~/.rvm/scripts/rvmà votre ~/.bashrcpour vous assurer qu'il est chargé à chaque démarrage d'un nouveau shell.
Niel de Wet
2

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 définir à nouveau, 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 de contournement

  1. Trouvez votre version Ruby active (dans la RVM): Sur votre serveur de production, allez dans le répertoire de votre application et tapez $rvm list. Il en résultera une liste des versions de Ruby installées et celle qui 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 : vous faites cela en exécutant à 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: définissez maintenant 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

Va As
la source
apparemment GEM_HOME et GEM_PATH ne sont pas spécifiques à RVM?
barlop
2

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 toute fin de .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.

RandyB
la source
1

Comme @coteyr l'a mentionné, vous ne devez pas définir manuellement GEM_HOME et GEM_PATH lors de l'utilisation rvm. Si vous vérifiez votre variable d'environnement PATH, en exécutant $ echo $PATHet $ HOME / .rvm / bin en fait partie, alors vous devez vous assurer que votre terminal exécute les commandes comme un 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 rvmlequel je suppose qu'il n'est pas trivial à résoudre car il existe depuis un certain temps.

Lym
la source
1

Pour remplir $GEM_PATHavec mon système (Manjaro / Arch) gemsj'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
Tom Hale
la source