Obtenir «Attention! PATH n'est pas correctement configuré »lors de l'utilisation de rvm 2.0.0 - par défaut

115

Ci-dessus ne fonctionne pas la première fois, fonctionne la deuxième fois.

Essayez de définir la version ruby ​​sur 2.0.0 pour toute nouvelle fenêtre shell.

Faire

$ rvm use 2.0.0 --default

donne

Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/
bin' is not at first place,
         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 --au
to-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'
.
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247

Puis faire de même

$ rvm use 2.0.0 --default

ne donne plus d'erreur, c'est-à-dire

$ rvm use 2.0.0 --default
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
durrantm.../durrantm$ 

mais les nouvelles fenêtres me donnent toujours ruby ​​1.9.3, pas 2.0.0

Mon .bashrcfichier contient:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "/home/durrantm/.rvm/scripts/rvm" ]] && . "/home/durrantm/.rvm/scripts/rvm"

Mon .bash_profile a:

source ~/.profile
case $- in *i*) . ~/.bashrc;; esac

En essayant

rvm get stable

semble fonctionner mais à la fin de beaucoup de sorties vertes:

Could not update RVM, get some help at #rvm IRC channel at freenode servers.

Une nouvelle fenêtre de terminal avec rvm list rubiesmontre ceci:

$ rvm list rubies
Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/bin' is not at first place,
         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-1.9.3-p125'.

rvm rubies

=> ruby-1.9.3-p125 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
 * ruby-2.0.0-p247 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
Michael Durrant
la source

Réponses:

176

J'étais coincé après avoir désinstallé rvm avec

rvm implode

puis après avoir réinstallé rvm, il a reçu le même message d'erreur. Après avoir parcouru la page git hub de wayne seguin. Il répertorie les outils sur sa page et recommande d'utiliser

rvm reset 

après une installation. Cela a corrigé mon message d'erreur. Aucune modification de PATH requise.

brandoncontreras
la source
13
Après avoir vérifié et revérifier mon ~/.bashrc, ~/.bash_profile, en cours d' exécution rvm get stable --auto-dotfiles, un nouveau contrôle ~/.bashrc, ~/.bash_profileet ~/.profileplusieurs fois ... cette réponse enfin réparée! Ran: rvm resetet il s'est débarrassé des avertissements! (IMHO ... RVM est beaucoup trop capricieux pour être le premier sur le chemin ... Si je mets quelque chose d'autre en premier sur mon chemin, je sais ce que je fais)
TrinitronX
11
: tu: rvm reset
JBird
18
cela a fonctionné pour moi! aucune modification de PATH n'est nécessaire, juste rvm reset(le message s'affichera une dernière fois), maintenant à chaque fois que j'émets une commande rvm, plus d'avertissements de PATH.
JohnRDOrazio
1
Lorsque j'utilise rvm reset, le problème dans le terminal où j'ai exécuté rvm reset est résolu. Cependant, lorsque je passe au nouveau terminal, l'erreur / l'avertissement persiste à moins que je ne lance pas à nouveau la réinitialisation rvm
Apurva Mayank
rvm helprenvoie un indice assez effrayant pour rvm reset: supprimer tous les paramètres par défaut et système 😄
Muhamed Huseinbašić
171

La réponse était de mettre ceci:

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

** en BAS ** (dernière ligne - important!) de mon fichier .bashrc. Je l'avais dans mon fichier .bash_profile (je suis sur Ubuntu) et cela n'a fonctionné que partiellement, ce qui a conduit à des erreurs déroutantes.

Michael Durrant
la source
1
Cela semble contre-intuitif de se déplacer vers le bas si RVM veut être au sommet de la chaîne?
reneruiz le
9
rvm doit être au bas du fichier au cas où il y aurait d'autres lignes dans. [ba | z] shrc qui redéfinissent le chemin. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"pour Homebrew est probablement un élément courant qui entre en conflit avec rvm.
TimeEmit
4
Je l'ai mis en bas de mon .bash_profile car j'avais redéfini le chemin plusieurs fois. Cela a également fonctionné.
Kyle Suss
1
cela a bien fonctionné pour moi après le redémarrage du terminal
NSTJ
24
c'est certainement la bonne solution, mais si vous le faites simplement, rvm resetelle le fera automatiquement pour vous ...
Ralph Callaway
34

Ce n'est peut-être pas la meilleure façon de résoudre ce problème, mais j'ai ajouté cette ligne au bas de mon .zshrc (cela fonctionnera aussi dans .bashrc!)

export PATH="$GEM_HOME/bin:$PATH"
Place Pedro José Piquero
la source
Il s'agit d'une solution plus propre, IMO, avec les mises à jour de RVM.
Dan L
Je ne suis pas d'accord, je pense que c'est la meilleure façon de résoudre ce problème :) J'ai dû mettre ceci comme dernière ligne de mon .bash_profile car il s'exécute en dernier et contient d'autres déclarations de chemin.
applejack42
C'est vraiment l'une des meilleures solutions pour résoudre ce problème. Passé près de 3 heures et enfin sur le point d'abandonner: D vous l'homme. :)
J'ai ajouté le mien à mon ~ / .profile, qui est chargé par la dernière ligne de ~ / bash_profile et je me suis assuré qu'il n'y avait aucune référence à $ PATH dans aucun autre fichier. De cette façon, il fonctionnera dans Bash et sera capté par d'autres shells.
Dmitri le
Oui, c'est la meilleure solution, car elle est claire et précise où placer l'exportation. Merci!!!
Albert Català
23

J'ai essayé la solution de Michael Durrant et cela n'a pas fonctionné pour moi. mais j'ai couru rvm get stable --auto-dotfileset cela a commencé à fonctionner comme souhaité.

J'espère que ça aide

Sparkmasterflex
la source
Cela a fonctionné sur Mavericks, a dû redémarrer le terminal pour terminer le correctif.
Brett Bim
1
Sur Mac 10.12.3 avec iTerm2 3.0.15, fish 2.5.0 et rvm defaultau bas de mon config.fishfichier. la commande rvm resetn'a pas aidé en gardant la fenêtre du terminal ouverte. Cette commande a fonctionné. Ma sortie: pastebin.com/1jUCSGnP
Pysis
Ah, probablement quand bash
j'exécutais des
Non, il était toujours cassé dans d'autres fenêtres de terminal, même après le redémarrage d'iTerm, et la vérification d'un nombre quelconque de scripts de profil n'a pas aidé, j'ai donc implosé supprimé toutes les lignes de configuration, redémarré mon ordinateur, réinstallé RVM avec l'intégration de la fonction fish et activé le une rvm defaultligne. C'est mieux maintenant ..
Pysis
8

Ce n'est pas une réponse à la question posée, mais à la question connexe que la plupart des commentateurs / répondants ont posée - Pourquoi avez-vous besoin de mettre la ligne rvm au bas du fichier shell rc?

La réponse est simple.

  1. Le code rvm chargé place les répertoires binaires rvm ruby ​​au "devant" de $PATH, et
  2. .bashrc (ou équivalent pour votre shell par défaut) est lu et interprété ligne par ligne de haut en bas.

Alors imaginez le scénario suivant:

$ echo $PATH
  /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
  /Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

$ export PATH=<something>:$PATH
$ echo $PATH
  <something>:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

Clairement, si quelque chose est présent dans le fichier d'initialisation du shell après la ligne RVM et apporte des modifications à $ PATH, plus spécifiquement s'il ajoute des répertoires à $PATH, alors ces changements pousseront les répertoires ajoutés par rvm vers le bas de leur première position. RVM, lorsqu'il est appelé, constatera que ses répertoires binaires ruby ne sont pas au tout début de $PATHet BAM! vous recevrez l'avertissement :).

J'espère que cela clarifie les choses.

Sankalp
la source
6

En ajoutant simplement mon expérience: si vous utilisez .bash_profile, vérifiez si cela .bashrcn'interfère pas . Tuer .bashrcen faveur de la configuration unique de Bash par .bash_profilefonctionne dans ce cas.

Ain Tohvri
la source
1
Cela a résolu mon problème. Je ne sais même pas comment .bashrc est arrivé là car toutes mes configurations sont dans .bash_profile. Est-ce que rvm met quelque chose dans bashrc lors de l'installation? Je suppose que cela étant donné que bashrc n'avait qu'une seule ligne et que c'était à voir avec rvm.
kevindeleon le
1
Dieu sait quel type d'installation de ligne de commande l'a poussé. Ils ont tendance à le polluer :(
Ain Tohvri
2
Ce n'est pas une solution générale, FWIW. .bashrcest exécuté pour chaque shell interactif imbriqué; .bash_profilen'est exécuté que sur le premier shell bash entré, c'est-à-dire le shell de connexion. Les variables doivent généralement être définies dans .bash_profile, tandis que les fonctions, les alias, etc. (les éléments qui ne sont pas transmis avec l'environnement hérité normal) doivent être définis dans .bashrc.
Barry Kelly
5

J'ai une question de suivi à ce sujet (j'aimerais simplement ajouter un commentaire - mais je n'ai pas assez de crédits). J'ai eu ce même problème - et quand j'ai suivi le script rvm qui avait été suggéré d'utiliser --auto-dotfiles, j'ai eu des problèmes car le script shell a supprimé mon fichier .bashrc_profile .

Quoi qu'il en soit, je suis finalement arrivé à la même réponse indiquée ci-dessus, en mettant cette ligne au bas du fichier .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Avez-vous trouvé pourquoi cela fonctionne comme ça, et non avec la ligne au milieu du fichier .bashrc? Avez-vous une certaine clarté sur la façon dont Unix charge la variable d'environnement qui fait fonctionner RVM dans une instance et pas dans une autre?

David Kim
la source
Non. Cela a fonctionné et j'ai continué :) Beaucoup plus de poissons intéressants à faire frire :)
Michael Durrant
5

J'étais confronté au même problème. J'ai trouvé ça dans le fichier bashrc

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

plusieurs entrées pour rvm. J'ai commenté une entrée et cela fonctionne très bien.

#export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
#export PATH=$HOME/local/bin:$PATH

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
Deepak Kabbur
la source
3

J'ai nettoyé tout ce qui contenait un .rvm de ma ligne PATH = dans mon .zshrc

Cela a résolu le problème pour moi, alors que les autres réponses ici (sourçage du script rvm ou stabilisation avec les fichiers dotfiles automatiques) ne l'ont pas été.

Caleb
la source
2

J'ai trouvé cette commande très utile. Cela résout mon cas. Donc, si quelqu'un a le même problème, essayez ceci: rvm get stable --auto-dotfiles

castro4000
la source
1

rvm install ruby-head Correction du problème pour moi - peu de temps mais a fait l'affaire. Je ne sais pas si cela a fait des mises à jour non annoncées de mes fichiers bash.

user2164305
la source
1

J'ai fini par supprimer ~/.profile, ~/.bashrcet ~/.zshrc.

En gros, je n'ai gardé que ~/.bash_profilesur mon mac. Et il fonctionne.

Je pense que dans mon cas, il y a:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Charger RVM dans une session shell * en tant que fonction *

dans ces fichiers, et ces paramètres en double confondus rvm

Steven Yue
la source
1

Avertissement

Parce que je développe principalement en utilisant python, donc je ne suis pas sûr que cette solution de contournement vous donne un env ruby ​​correct ou modifie simplement le chemin et supprime l'avertissement

Contexte

Dans mon cas, j'ai installé d' rvmabord, puis pyenvplus tard. La configuration pour les deux changera $PATH. D'après l'avertissement, il semble que rvm veuille toujours être le premier sur le chemin

$ echo $PATH

$HOME/.rvm/gems/ruby-2.6.3/bin: ......

Mais si vous ajoutez eval "$(pyenv init -)"comme requis par pyenv, cela changera votre $PATHen

$ echo $PATH

$HOME/.pyenv/shims:$HOME/.rvm/gems/ruby-2.6.3/bin: ......

Ma solution de contournement

$ rvm use system # Revenir au système ruby

$ rvm use ruby-2.6.3 # Passez à la version dont vous avez besoin

rvm changera le chemin en ce qu'il aime, vous ne verrez plus l'avertissement ennuyeux.

infinity_coding7
la source
0

Cela a fonctionné après avoir commenté les 2 premières lignes en double et les avoir ajoutées en bas. N'oubliez pas de redémarrer le terminal pour qu'il fonctionne.

#[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
#[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
export PATH="/usr/local/opt/[email protected]/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
Dave
la source
0

Vous pouvez ajouter

rvm_silence_path_mismatch_check_flag=1

à votre ~/.rvmrcdossier. C'est ce que suggère maintenant le message d'avertissement.

AkaZecik
la source
1
Il s'agit simplement d'ignorer le message, pas de le réparer, ce que l'utilisateur demande. De plus, pour un nouveau projet, le problème réapparaîtra.
ma3x
@ ma3x En fait, l'OP n'a fait qu'énoncer un problème sans poser de question, donc je considère «ignorer» un message d' avertissement comme une suggestion valide. De plus, je ne comprends pas la partie sur les nouveaux projets.
AkaZecik
1
Même s'il n'y a pas de point d'interrogation, vous pouvez certainement comprendre du contexte qu'il essaie de corriger l'erreur, pas de la cacher :) De plus, votre réponse est incomplète car ce n'est qu'une partie de ce que le message d'avertissement suggère. Initialement, il suggère d'obtenir le dernier RVM stable et de mettre automatiquement vos fichiers en mémoire. Pour les nouveaux projets c'était mon erreur car je voulais faire référence à de nouveaux gemsets.
ma3x
@ ma3x Merci pour vos idées :) C'est peut-être juste que nos façons de raisonner diffèrent, mais après avoir lu la question et d'autres réponses, je suis arrivé à la conclusion que le PO veut simplement se débarrasser de cet avertissement. Je tiens à souligner à nouveau que ce n'est pas une erreur , c'est un avertissement . Et parce que faire respecter un ordre de chemins dans des PATHsons intrusifs pour moi, et tout au plus protecteurs , j'ai décidé de poster cette réponse. Je prendrai le temps de repenser ma réponse et de l'améliorer en fonction de vos commentaires :)
AkaZecik
-3

J'ai corrigé ce problème. ESSAYEZ D'UTILISER UNE COMMANDE COMME CECI:

rvm use 2.0.0-p353

AJOUTER -p353 ou tout autre détail de version vous à la fin de la ligne

David Tsang
la source
6
Cela ne résout le problème que pour la session shell actuelle, donc ce n'est pas exactement la meilleure réponse.
IIllIIll