Obteniendo “¡Advertencia! PATH no está configurado correctamente ”al hacer rvm use 2.0.0 --default

115

Lo anterior no funciona la primera vez, funciona la segunda vez.

Intente establecer la versión de ruby ​​en 2.0.0 para cualquier nueva ventana de shell.

Haciendo

$ rvm use 2.0.0 --default

da

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

Entonces haciendo lo mismo

$ rvm use 2.0.0 --default

ahora no da error, es decir

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

pero las nuevas ventanas todavía me dan ruby ​​1.9.3, no 2.0.0

Mi .bashrcarchivo tiene en él:

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

Mi .bash_profile tiene:

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

Molesto

rvm get stable

parece funcionar, pero al final de una gran cantidad de programas de salida verde:

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

Una nueva ventana de terminal con rvm list rubiesmuestra esto:

$ 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
fuente

Respuestas:

176

Me quedé atascado después de desinstalar rvm con

rvm implode

luego, después de reinstalar rvm, recibió el mismo mensaje de error. Después de revisar la página de git hub de wayne seguin. Enumera herramientas en su página y recomienda usar

rvm reset 

después de una instalación. Esto solucionó mi mensaje de error. No se necesitan ediciones de PATH.

brandoncontreras
fuente
13
Después de comprobar y volver a comprobar mi ~/.bashrc, ~/.bash_profile, correr rvm get stable --auto-dotfiles, repetirá la comprobación ~/.bashrc, ~/.bash_profiley ~/.profilemuchas veces ... esta respuesta se fijó finalmente! Ran: ¡ rvm resety se deshizo de las advertencias! (En mi humilde opinión ... RVM es demasiado quisquilloso para ser el primero en el camino ... Si pongo algo más en mi camino, sé lo que estoy haciendo)
TrinitronX
11
: tu:rvm reset
JBird
18
esto funcionó para mí! no se necesitan ediciones de PATH, solo rvm reset(el mensaje se mostrará una última vez), ahora, cada vez que emito un comando rvm, no más advertencias de PATH.
JohnRDOrazio
1
Cuando utilizo rvm reset, el problema en el terminal donde ejecuté rvm reset se resuelve. Sin embargo, cuando me muevo a la nueva terminal, el error / advertencia persiste a menos que no vuelva a ejecutar rvm reset
Apurva Mayank
rvm helpdevuelve una pista bastante aterradora para rvm reset: eliminar todas las configuraciones predeterminadas y del sistema 😄
Muhamed Huseinbašić
171

La respuesta fue poner esto:

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

** en la PARTE INFERIOR ** (última línea - ¡importante!) de mi archivo .bashrc. Lo tenía en mi archivo .bash_profile (estoy en Ubuntu) y eso solo funcionó parcialmente, lo que provocó errores confusos.

Michael Durrant
fuente
1
¿Parece contrario a la intuición moverse hacia abajo si RVM quiere estar en la parte superior de la cadena?
reneruiz
9
rvm debe estar al final del archivo en caso de que haya otras líneas en. [ba | z] shrc que redefinan la ruta. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"para Homebrew es probablemente uno común que entra en conflicto con rvm.
TimeEmit
4
Lo puse al final de mi .bash_profile ya que había redefinido la ruta varias veces. Esto también funcionó.
Kyle Suss
1
esto funcionó bien para mí después de reiniciar la terminal
NSTJ
24
esta es definitivamente la solución correcta, pero si simplemente lo hace, rvm resetlo hará automáticamente ...
Ralph Callaway
34

Tal vez no sea la mejor manera de resolver esto, pero agregué esta línea en la parte inferior de mi .zshrc (¡también funcionará en .bashrc!)

export PATH="$GEM_HOME/bin:$PATH"
Plaza Pedro José Piquero
fuente
Esta es una solución más limpia, en mi opinión, con las actualizaciones de RVM.
Dan L
No estoy de acuerdo, creo que esta es la mejor manera de resolver esto :) Tuve que poner esto como la última línea de mi .bash_profile ya que se ejecuta en último lugar y tiene otras declaraciones de ruta.
applejack42
Esta es realmente una de las mejores soluciones para resolver este problema. Pasó casi 3 horas y finalmente a punto de rendirse: D eres el hombre. :)
Agregué el mío a mi ~ / .profile, que se carga en la última línea de ~ / bash_profile y me aseguré de que no hubiera referencias a $ PATH en ningún otro archivo. De esta manera, funcionará en Bash y será recogido por otros shells.
Dmitri
Si esta es la mejor solución, porque es clara y especifica donde poner la exportación. ¡¡¡Gracias!!!
Albert Català
23

Probé la solución de Michael Durrant y no funcionó para mí. pero corrí rvm get stable --auto-dotfilesy empezó a funcionar como deseaba.

Espero eso ayude

Sparkmasterflex
fuente
Esto funcionó en Mavericks, tuvo que reiniciar el terminal para completar la corrección.
Brett Bim
1
En Mac 10.12.3 con iTerm2 3.0.15, pesca 2.5.0 y rvm defaulten la parte inferior de mi config.fisharchivo. el comando rvm resetno ayudó a mantener abierta la ventana del terminal. Este comando funcionó. Mi salida: pastebin.com/1jUCSGnP
Pysis
Ah, probablemente cuando estaba ejecutando comandos, estaban usando el bashintérprete, y debería haber verificado esos archivos de configuración también ..
Pysis
No, todavía estaba roto en otras ventanas de terminal, incluso después de reiniciar iTerm, y verificar cualquier número de scripts de perfil no ayudó, por lo que implosioné, eliminé todas las líneas de configuración, reinicié mi computadora, reinstalé RVM con la integración de la función fish y habilité el una rvm defaultlínea. Es mejor ahora ..
Pysis
8

Esta no es una respuesta a la pregunta formulada, sino a la pregunta relacionada que la mayoría de los comentaristas / respondedores han preguntado: ¿Por qué necesita poner la línea rvm en la parte inferior del archivo rc de shell?

La respuesta es simple.

  1. El código rvm que se carga coloca los directorios binarios rvm ruby ​​al "frente" de $PATH, y
  2. .bashrc (o equivalente para su shell predeterminado) se lee e interpreta línea por línea de arriba a abajo.

Así que imagina el siguiente escenario:

$ 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

Claramente, si algo está presente en el archivo de inicio de shell después de la línea RVM y realiza algún cambio en $ PATH, más específicamente si antepone directorios a $PATH, entonces esos cambios empujarán los directorios agregados por rvm hacia abajo desde su primera posición. RVM, cuando se invoca, encontrará que sus directorios binarios ruby no están al principio de $PATHy BAM! recibirás la advertencia :).

Espero que eso aclare las cosas.

Sankalp
fuente
6

Solo agrego mi experiencia: si está usando .bash_profile, verifique si .bashrcno está interfiriendo . Matar .bashrca favor de una configuración Bash única .bash_profilefunciona en este caso.

Ain Tohvri
fuente
1
Esto resolvió mi problema. Ni siquiera estoy seguro de cómo .bashrc llegó allí, ya que todas mis configuraciones están en .bash_profile. ¿RVM pone algo en bashrc en la instalación? Asumiría que sí considerando que bashrc solo tenía una línea y tenía que ver con rvm.
kevindeleon
1
Dios sabe qué tipo de instalador de línea de comandos lo
introdujo
2
Esta no es una solución general, FWIW. .bashrcse ejecuta para cada shell interactivo anidado; .bash_profilesólo se ejecuta en el primer shell bash introducido, es decir, el shell de inicio de sesión. Las variables generalmente deben establecerse .bash_profile, mientras que las funciones, alias, etc. (cosas que no se transmiten con el entorno heredado normal) deben establecerse .bashrc.
Barry Kelly
5

Tengo una pregunta de seguimiento a esto (me gustaría poder simplemente agregar un comentario, pero no tengo suficientes créditos). Tuve este mismo problema, y ​​cuando seguí el script rvm que se sugirió usar --auto-dotfiles, me metí en problemas, ya que de alguna manera el script de shell borró mi archivo .bashrc_profile .

De todos modos, finalmente llegué a la misma respuesta enumerada anteriormente, colocando esta línea en la parte inferior del archivo .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

¿Descubrió por qué funciona de la manera que lo hace, y no con la línea en el medio del archivo .bashrc? ¿Tiene algo de claridad sobre la forma en que Unix está cargando la variable de entorno que hace que RVM funcione en una instancia y no en otra?

David Kim
fuente
No. Funcionó y seguí adelante :) Mucho más pescado interesante para freír :)
Michael Durrant
5

Estaba enfrentando el mismo problema. Encontré eso en el archivo 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

múltiples entradas para rvm. Comenté una entrada y está funcionando 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
fuente
3

Limpié todo lo que tenía un .rvm de mi línea PATH = en mi .zshrc

Eso solucionó el problema para mí, donde las otras respuestas aquí (obtener el script rvm o estabilizarse con archivos de puntos automáticos) no lo hicieron.

Caleb
fuente
2

He encontrado que este comando es muy útil. Resuelve mi caso. Entonces, si alguien tiene el mismo problema, pruebe esto: rvm get stable --auto-dotfiles

castro4000
fuente
1

rvm install ruby-head Se solucionó el problema para mí: consumía poco tiempo, pero funcionó. No estoy seguro si eso hizo alguna actualización no pronunciada en mis archivos de bash.

usuario2164305
fuente
1

Terminé eliminando ~/.profile, ~/.bashrcy ~/.zshrc.

Básicamente, solo lo mantuve ~/.bash_profileen mi mac. Y funciona.

Creo que en mi caso hay:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Cargar RVM en una sesión de shell * como una función *

en estos archivos, y esas configuraciones duplicadas confunden rvm

Steven Yue
fuente
1

Descargo de responsabilidad

Porque desarrollo principalmente usando Python, por lo que no estoy seguro de si esta solución te proporcionaría un env ruby ​​correcto o simplemente cambiaría la ruta y eliminaría la advertencia

Antecedentes

En mi caso, lo instalé rvmprimero y luego pyenvmás tarde. La configuración de ambos cambiará $PATH. De la advertencia, parece que rvm siempre quiere ser el primero en el camino

$ echo $PATH

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

Pero si agrega eval "$(pyenv init -)"lo requerido por pyenv, cambiará su $PATHa

$ echo $PATH

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

Mi solución

$ rvm use system # Volver al sistema ruby

$ rvm use ruby-2.6.3 # Cambie a la versión que necesita usar

rvm cambiará la ruta a lo que le gusta, entonces no volverá a ver la advertencia molesta.

infinity_coding7
fuente
0

Funcionó después de comentar las 2 líneas duplicadas superiores y agregarlas en la parte inferior. No olvide reiniciar el terminal para que funcione.

#[[ -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
fuente
0

Puedes añadir

rvm_silence_path_mismatch_check_flag=1

a su ~/.rvmrcarchivo. Eso es lo que sugiere ahora el mensaje de advertencia.

AkaZecik
fuente
1
Esto es simplemente ignorar el mensaje, no arreglarlo, que es lo que pide el usuario. Además, para un nuevo proyecto, el problema reaparecerá.
ma3x
@ ma3x En realidad, el OP solo indicó un problema sin formular una pregunta, por lo que considero que 'ignorar' un mensaje de advertencia es una sugerencia válida. Además, no entiendo la parte de nuevos proyectos.
AkaZecik
1
Incluso si no hay un signo de interrogación, definitivamente puede entender por el contexto que está tratando de corregir el error, no de ocultarlo :) Además, su respuesta está incompleta porque eso es solo una parte de lo que sugiere el mensaje de advertencia. Inicialmente, sugiere obtener el RVM estable más reciente y autodot sus archivos. Para los nuevos proyectos ese fue mi error porque quería referirme a nuevos conjuntos de gemas.
ma3x
@ ma3x Gracias por sus ideas :) Quizás es solo que nuestras formas de razonar difieren, pero después de leer la pregunta y otras respuestas, llegué a la conclusión de que el OP simplemente quiere deshacerse de esta advertencia. Quiero enfatizar nuevamente que esto no es un error , es una advertencia . Y debido a que imponer un orden de caminos en me PATHsuena intrusivo, y como mucho protector , decidí publicar esta respuesta. Me tomaré el tiempo para repensar mi respuesta y mejorarla en función de sus comentarios :)
AkaZecik
-3

ARREGLÉ ESTE PROBLEMA. INTENTE UTILIZAR EL COMANDO COMO ESTE:

rvm use 2.0.0-p353

AÑADIR -p353 u otro detalle de su versión al final de la línea

David tsang
fuente
6
Esto solo resuelve el problema de la sesión de shell actual, por lo que no es exactamente la mejor respuesta.
IIllIIll