Ottenere "Attenzione! PATH non è impostato correttamente ”quando si esegue rvm, utilizzare 2.0.0 --default


115

Sopra non funziona la prima volta, funziona la seconda volta.

Prova a impostare la versione di ruby ​​su 2.0.0 per tutte le nuove finestre della shell.

fare

$ rvm use 2.0.0 --default

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

Quindi fare lo stesso

$ rvm use 2.0.0 --default

ora non dà errori, ad es

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

ma le nuove finestre mi danno ancora ruby ​​1.9.3, non 2.0.0

Il mio .bashrcfile contiene:

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

Il mio .bash_profile ha:

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

Provando

rvm get stable

sembra funzionare ma alla fine di molti risultati ecologici mostra:

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

Una nuova finestra di terminale con rvm list rubiesmostra questo:

$ 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

Risposte:


176

Sono rimasto bloccato dopo aver disinstallato rvm con

rvm implode

quindi dopo aver reinstallato rvm ha ricevuto lo stesso messaggio di errore. Dopo aver guardato nella pagina dell'hub git di wayne seguin. Elenca gli strumenti sulla sua pagina e ne consiglia l'utilizzo

rvm reset 

dopo un'installazione. Questo ha risolto il mio messaggio di errore. Non sono necessarie modifiche al PATH.


13
Dopo aver controllato e ricontrollato il mio ~/.bashrc, ~/.bash_profile, corsa rvm get stable --auto-dotfiles, ri-controllo ~/.bashrc, ~/.bash_profilee ~/.profilemolte volte ... questa risposta finalmente risolto! Ran: rvm resete si è sbarazzato degli avvertimenti! (IMHO ... RVM è troppo pignolo nell'essere il primo nel percorso ... Se imposto qualcos'altro prima nel mio percorso so cosa sto facendo)
TrinitronX

11
: tu:rvm reset
JBird

18
questo ha funzionato per me! non sono necessarie modifiche al PATH, solo rvm reset(il messaggio verrà visualizzato un'ultima volta), ora ogni volta che emetto un comando rvm non più avvisi PATH.
JohnRDOrazio

1
Quando uso rvm resetta il problema nel terminale in cui ho eseguito rvm reset viene risolto. Tuttavia, quando mi sposto sul nuovo terminale l'errore / avviso persiste a meno che non esegua di nuovo rvm reset
Apurva Mayank

rvm helprestituisce un suggerimento piuttosto spaventoso per rvm reset: rimuovere tutte le impostazioni predefinite e di sistema 😄
Muhamed Huseinbašić

171

La risposta è stata mettere questo:

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

** in BASSO ** (ultima riga - importante!) del mio file .bashrc. L'avevo nel mio file .bash_profile (sono su Ubuntu) e ha funzionato solo parzialmente portando a errori confusi.


1
Sembra controintuitivo andare in fondo se RVM vuole essere in cima alla catena?
reneruiz

9
rvm deve essere in fondo al file nel caso in cui ci siano altre righe in. [ba | z] shrc che ridefiniscono il percorso. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"per Homebrew è probabilmente uno comune che entra in conflitto con rvm.
TimeEmit

4
L'ho messo in fondo al mio .bash_profile poiché avevo ridefinito il percorso più volte. Anche questo ha funzionato.
Kyle Suss

1
questo ha funzionato bene per me dopo aver riavviato il terminale
NSTJ

24
questa è sicuramente la soluzione giusta, ma se lo fai rvm resetlo farà automaticamente per te ...
Ralph Callaway

34

Forse non è il modo migliore per risolverlo, ma ho aggiunto questa riga in fondo al mio .zshrc (funzionerà anche in .bashrc!)

export PATH="$GEM_HOME/bin:$PATH"

Questa è una soluzione più pulita, IMO, con gli aggiornamenti a RVM.
Dan L

Non sono d'accordo, penso che questo sia il modo migliore per risolverlo :) Ho dovuto metterlo come ultima riga del mio .bash_profile poiché viene eseguito per ultimo e contiene altre dichiarazioni di percorso.
applejack42

Questa è davvero una delle migliori soluzioni per risolvere questo problema. Trascorse quasi 3 ore e finalmente sul punto di mollare: D tu l'uomo. :)

Ho aggiunto il mio al mio ~ / .profile, che viene caricato dall'ultima riga di ~ / bash_profile e mi sono assicurato che non ci fossero riferimenti a $ PATH in nessun altro file. In questo modo, funzionerà in Bash e verrà raccolto da altre conchiglie.
Dmitri

Sì questa è la soluzione migliore, perché è chiaro e specifica dove mettere l'esportazione. Grazie!!!
Albert Català

23

Ho provato la soluzione di Michael Durrant e non ha funzionato per me. ma ho corso rvm get stable --auto-dotfilese ha iniziato a funzionare come desiderato.

Spero che sia d'aiuto


Questo ha funzionato su Mavericks, ha dovuto riavviare il terminale per completare la correzione.
Brett Bim

1
Su Mac 10.12.3 con iTerm2 3.0.15, fish 2.5.0 e rvm defaultin fondo al mio config.fishfile. il comando rvm resetnon aiutava a mantenere aperta la finestra del terminale. Questo comando ha funzionato. Il mio output: pastebin.com/1jUCSGnP
Pysis

Ah, probabilmente quando stavo eseguendo i comandi, stavano usando l' bashinterprete, e avrei dovuto controllare anche quei file di configurazione ..
Pysis

No, era ancora rotto in altre finestre del terminale, anche dopo aver riavviato iTerm, e il controllo di un numero qualsiasi di script del profilo non ha aiutato, quindi ho imploso rimosso tutte le linee di configurazione, riavviato il mio computer, reinstallato RVM con l'integrazione della funzione fish e abilitato il una rvm defaultriga. Adesso va meglio ..
Pysis

8

Questa non è una risposta alla domanda posta, ma alla domanda correlata che la maggior parte dei commentatori / rispondenti ha posto: Perché è necessario inserire la riga rvm in fondo al file rc della shell?

La risposta è semplice.

  1. Il codice rvm che viene caricato mette le directory binarie rvm ruby ​​nella "parte anteriore" di $PATH, e
  2. .bashrc (o equivalente per la shell predefinita) viene letto e interpretato riga per riga dall'alto verso il basso.

Quindi immagina il seguente scenario:

$ 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

Chiaramente se qualcosa è presente nel file di inizializzazione della shell dopo la riga RVM e apporta modifiche a $ PATH, più specificamente se antepone le directory a $PATH, allora quelle modifiche spingeranno le directory aggiunte da rvm verso il basso dalla loro prima posizione. RVM, quando invocato, scoprirà che le sue directory binarie ruby non sono all'inizio di $PATHe BAM! riceverai l'avviso :).

Spero che questo renda le cose chiare.


6

Aggiungo solo la mia esperienza: se stai usando .bash_profile, controlla se .bashrcnon sta interferendo . In questo caso, uccidere .bashrca favore di una singola configurazione di Bash .bash_profilefunziona.


1
Questo ha risolto il mio problema. Non sono nemmeno sicuro di come .bashrc sia arrivato lì poiché tutte le mie configurazioni sono in .bash_profile. Rvm mette qualcosa in bashrc durante l'installazione? Presumo che sia così considerando che bashrc aveva solo una riga e aveva a che fare con rvm.
kevindeleon

1
Dio sa che tipo di programma di installazione da riga di comando lo ha inserito. Tendono a inquinarlo :(
Ain Tohvri

2
Questa non è una soluzione generale, FWIW. .bashrcviene eseguito per ogni shell interattiva annidata; .bash_profileviene eseguito solo sulla prima shell bash inserita, cioè la shell di login. Le variabili dovrebbero generalmente essere impostate in .bash_profile, mentre funzioni, alias ecc. (Cose che non vengono trasmesse con il normale ambiente ereditato) dovrebbero essere impostate in .bashrc.
Barry Kelly

5

Ho una domanda di follow-up a questo (vorrei poter semplicemente aggiungere un commento - ma non ho abbastanza crediti). Ho avuto lo stesso problema - e quando ho seguito lo script rvm che è stato suggerito di utilizzare --auto-dotfiles, mi sono messo nei guai perché in qualche modo lo script della shell ha cancellato il mio file .bashrc_profile .

Ad ogni modo, alla fine sono arrivato alla stessa risposta sopra elencata, inserendo questa riga in fondo al file .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Ti è capitato di scoprire perché funziona in questo modo e non con la riga nel mezzo del file .bashrc? Hai un po 'di chiarezza sul modo in cui Unix carica la variabile d'ambiente che fa funzionare RVM in un'istanza e non in un'altra?


No. Ha funzionato e sono andato avanti :) Un sacco di pesci più interessanti da friggere :)
Michael Durrant

5

Stavo affrontando lo stesso problema. L'ho trovato nel file 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

più voci per rvm. Ho commentato una voce e funziona bene.

#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

3

Ho ripulito tutto ciò che conteneva un .rvm dalla mia riga PATH = nel mio .zshrc

Questo ha risolto il problema per me, dove le altre risposte qui (procurandosi lo script rvm o diventando stabile con auto dotfile) non lo facevano.


2

Ho trovato questo comando molto utile. Risolve il mio caso. Quindi, se qualcuno ha lo stesso problema, provalo: rvm get stable --auto-dotfiles


1

rvm install ruby-head Risolto il problema per me: richiedeva poco tempo ma ha funzionato. Non sono sicuro che ciò abbia apportato aggiornamenti non pronunciati ai miei file bash.


1

Ho finito per rimuovere ~/.profile, ~/.bashrce ~/.zshrc.

Fondamentalmente ho tenuto solo ~/.bash_profileil mio Mac. E funziona.

Penso che nel mio caso ci siano:

export PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Carica RVM in una sessione di shell * come funzione *

in questi file e quelle impostazioni duplicate confuse rvm


1

disconoscimento

Perché sviluppo principalmente usando python, quindi non sono sicuro che questa soluzione alternativa ti darebbe un env ruby ​​corretto o semplicemente cambierebbe il percorso e sbarazzarsi dell'avviso

sfondo

Nel mio caso, ho installato rvmprima e poi pyenvsuccessivamente. La configurazione per entrambi cambierà $PATH. Dall'avviso, sembra che rvm voglia sempre essere il primo nel percorso

$ echo $PATH

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

Ma se aggiungi eval "$(pyenv init -)"come richiesto da pyenv, cambierà il tuo $PATHin

$ echo $PATH

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

La mia soluzione alternativa

$ rvm use system # Torna al sistema ruby

$ rvm use ruby-2.6.3 # Passa alla versione che devi usare

rvm cambierà il percorso in quello che gli piace, quindi non vedrai più il fastidioso avviso.


0

Ha funzionato dopo aver commentato le prime 2 righe duplicate e averle aggiunte in basso. Non dimenticare di riavviare il terminale affinché funzioni.

#[[ -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/postgresql@9.6/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/postgresql@9.6/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*

0

Puoi aggiungere

rvm_silence_path_mismatch_check_flag=1

al tuo ~/.rvmrcfile. Questo è ciò che suggerisce ora il messaggio di avviso.


1
Questo è solo ignorare il messaggio, non risolverlo, che è ciò che l'utente sta chiedendo. Inoltre, per un nuovo progetto, il problema si ripresenterà.
ma3x

@ ma3x In realtà, l'OP ha solo segnalato un problema senza formulare una domanda, quindi considero "ignorare" un messaggio di avviso un suggerimento valido. Inoltre, non capisco la parte sui nuovi progetti.
AkaZecik

1
Anche se non ci sono punti interrogativi, puoi sicuramente capire dal contesto che sta cercando di correggere l'errore, non nasconderlo :) Inoltre, la tua risposta è incompleta perché è solo una parte di ciò che suggerisce il messaggio di avviso. Inizialmente, suggerisce di ottenere l'ultimo RVM stabile e di registrare automaticamente i file. Per i nuovi progetti è stato un mio errore perché volevo fare riferimento a nuove gemme.
ma3x

@ ma3x Grazie per le tue intuizioni :) Forse è solo che i nostri modi di ragionare differiscono, ma dopo aver letto la domanda e altre risposte, sono giunto alla conclusione che l'OP vuole semplicemente sbarazzarsi di questo avvertimento. Voglio sottolineare ancora una volta che questo non è un errore , è un avvertimento . E poiché far rispettare un ordine di percorsi PATHa me sembra invadente, e al massimo protettivo , ho deciso di postare questa risposta. Mi prenderò del tempo per ripensare alla mia risposta e migliorarla in base ai tuoi commenti :)
AkaZecik

-3

HO RISOLTO QUESTO PROBLEMA. PROVA A USARE IL COMANDO IN QUESTO MODO:

rvm use 2.0.0-p353

AGGIUNGI -p353 o un altro dettaglio della tua versione alla fine della riga


6
Questo risolve solo il problema per la sessione corrente della shell, quindi non è esattamente la risposta migliore.
IIllIIll
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.