Recebendo “Aviso! O PATH não está configurado corretamente ”ao fazer o rvm usar 2.0.0 - padrão


115

Acima não funciona na primeira vez, funciona na segunda vez.

Tente definir a versão do ruby ​​para 2.0.0 para qualquer nova janela de shell.

Fazendo

$ 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

Então fazendo o mesmo

$ rvm use 2.0.0 --default

agora não dá nenhum erro, ou seja

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

mas novas janelas ainda estão me dando ruby ​​1.9.3, não 2.0.0

Meu .bashrcarquivo contém:

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

Meu .bash_profile tem:

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

Tentando

rvm get stable

parece funcionar, mas no final de muitos shows verdes:

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

Uma nova janela de terminal rvm list rubiesmostra isso:

$ 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

Respostas:


176

Fiquei preso depois de desinstalar o rvm com

rvm implode

depois de reinstalar o rvm, ele recebeu a mesma mensagem de erro. Depois de examinar a página git hub de wayne seguin. Ele lista as ferramentas em sua página e recomendou o uso

rvm reset 

após uma instalação. Isso corrigiu minha mensagem de erro. Nenhuma edição de PATH necessária.


13
Depois de verificar e re-verificar meu ~/.bashrc, ~/.bash_profile, correndo rvm get stable --auto-dotfiles, re-checking ~/.bashrc, ~/.bash_profilee ~/.profilemuitas vezes ... esta resposta, finalmente, fixa-lo! Ran: rvm resete se livrou dos avisos! (IMHO ... RVM é muito meticuloso em ser o primeiro no caminho ... Se eu definir outra coisa primeiro no meu caminho, eu sei o que estou fazendo)
TrinitronX

11
: tu:rvm reset
JBird

18
isso funcionou para mim! nenhuma edição de PATH necessária, apenas rvm reset(a mensagem será exibida uma última vez), agora, sempre que eu emitir um comando rvm, não haverá mais avisos de PATH.
JohnRDOrazio

1
Quando eu uso o rvm, reinicie o problema no terminal em que executei a reinicialização do rvm. No entanto, quando eu mudo para o novo terminal, o erro / aviso persiste, a menos que eu não execute o reset do rvm novamente
Apurva Mayank

rvm helpretornos dica bastante assustador para rvm reset: remover todas as configurações padrão e do sistema 😄
Muhamed Huseinbašić

171

A resposta foi colocar o seguinte:

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

** no BOTTOM ** (última linha - importante!) do meu arquivo .bashrc. Eu o tinha em meu arquivo .bash_profile (estou no Ubuntu) e ele funcionou apenas parcialmente, levando a erros confusos.


1
Parece contra-intuitivo ir para a parte inferior se o RVM quiser estar no topo da cadeia?
reneruiz

9
O rvm precisa estar no final do arquivo, caso haja outras linhas dentro. [ba | z] shrc que redefine o caminho. export PATH="/usr/local/bin:/usr/local/sbin:$PATH"para Homebrew é provavelmente um comum que entra em conflito com o rvm.
TimeEmit

4
Coloquei no final do meu .bash_profile, pois havia redefinido o caminho várias vezes. Isso também funcionou.
Kyle Suss

1
funcionou bem para mim depois de reiniciar o terminal
NSTJ

24
esta é definitivamente a solução certa, mas se você apenas fizer rvm resetisso, fará isso para você automaticamente ...
Ralph Callaway

34

Talvez não seja a melhor maneira de resolver isso, mas adicionei essa linha na parte inferior do meu .zshrc (ela funcionará em .bashrc também!)

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

Esta é uma solução mais limpa, IMO, com as atualizações para RVM.
Dan L

Eu discordo, acho que essa é a melhor maneira de resolver isso :) Tive que colocar isso como a última linha do meu .bash_profile da última vez que é executado e tem outras declarações de caminho nele.
applejack42

Esta é realmente uma das melhores soluções para resolver este problema. Passou quase 3 horas e finalmente estava prestes a desistir: D você o homem. :)

Eu adicionei o meu ao meu ~ / .profile, que é carregado pela última linha de ~ / bash_profile e certifiquei-me de que não havia referências a $ PATH em nenhum outro arquivo. Dessa forma, ele funcionará no Bash e será captado por outros shells.
Dmitri,

Sim esta é a melhor solução, pois é claro e especifica onde colocar a exportação. Obrigado!!!
Albert Català

23

Tentei a solução de Michael Durrant e não funcionou para mim. mas corri rvm get stable --auto-dotfilese começou a funcionar como desejado.

Espero que ajude


Isso funcionou no Mavericks, teve que reiniciar o terminal para completar a correção.
Brett Bim

1
No Mac 10.12.3 com iTerm2 3.0.15, pesque 2.5.0 e rvm defaultno final do meu config.fisharquivo. o comando rvm resetnão ajudou em manter a janela do terminal aberta. Este comando funcionou. Minha saída: pastebin.com/1jUCSGnP
Pysis

Ah, provavelmente quando eu estava executando comandos, eles estavam usando o bashinterpretador, e eu deveria ter verificado esses arquivos de configuração também ..
Pysis

Não, ele ainda estava quebrado em outras janelas de terminal, mesmo depois de reiniciar o iTerm, e verificar qualquer número de scripts de perfil não ajudou, então implodi removi todas as linhas de configuração, reiniciei meu computador, reinstalei o RVM com a integração da função de peixe e habilitei o uma rvm defaultlinha. É melhor agora ..
Pysis

8

Esta não é uma resposta para a pergunta feita, mas para a pergunta relacionada que a maioria dos comentadores / respondentes fez - Por que você precisa colocar a linha rvm na parte inferior do arquivo rc shell?

A resposta é simples.

  1. O código rvm que é carregado coloca os diretórios binários rvm ruby ​​na "frente" de $PATH, e
  2. .bashrc (ou equivalente para seu shell padrão) é lido e interpretado linha por linha de cima para baixo.

Então imagine o seguinte cenário:

$ 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, se algo estiver presente no arquivo de inicialização do shell após a linha RVM e fizer qualquer alteração em $ PATH, mais especificamente se incluir diretórios antes $PATH, essas alterações empurrarão os diretórios adicionados pelo rvm para baixo de sua primeira posição. O RVM, quando chamado, descobrirá que seus diretórios binários ruby não estão no início de $PATHe BAM! você receberá o aviso :).

Espero que isso deixe as coisas claras.


6

Só acrescentando minha experiência: se você está usando .bash_profile, verifique se .bashrcnão está interferindo . Matar a .bashrcfavor de uma configuração Bash única .bash_profilefunciona neste caso.


1
Isso resolveu meu problema. Eu nem tenho certeza de como .bashrc apareceu, já que todas as minhas configurações estão em .bash_profile. O rvm coloca algo em bashrc durante a instalação? Eu suporia que sim, considerando que bashrc tinha apenas uma linha e tinha a ver com rvm.
kevindeleon

1

2
Esta não é uma solução geral, FWIW. .bashrcé executado para cada shell interativo aninhado; .bash_profilesó é executado no primeiro shell bash inserido, ou seja, o shell de login. As variáveis ​​geralmente devem ser definidas em .bash_profile, enquanto funções, apelidos etc. (coisas que não são transmitidas com o ambiente herdado normal) devem ser definidas em .bashrc.
Barry Kelly,

5

Tenho uma pergunta de acompanhamento para isso (gostaria de poder simplesmente adicionar um comentário - mas não tenho créditos suficientes). Eu tive esse mesmo problema - e quando segui o script rvm que foi sugerido usar --auto-dotfiles, tive problemas, pois de alguma forma o script de shell excluiu meu arquivo .bashrc_profile .

De qualquer forma, acabei obtendo a mesma resposta listada acima, colocando esta linha no final do arquivo .bashrc . [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Você descobriu por que isso funciona dessa maneira, e não com a linha no meio do arquivo .bashrc? Você tem alguma clareza sobre a forma como o Unix está carregando a variável de ambiente que faz o RVM funcionar em uma instância e não em outra?


Não. Funcionou e eu segui em frente :) Muitos peixes mais interessantes para fritar :)
Michael Durrant

5

Eu estava enfrentando o mesmo problema. Eu encontrei isso no arquivo 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

várias entradas para rvm. Eu comentei uma entrada e está funcionando bem.

#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

Limpei tudo o que tinha um .rvm na minha linha PATH = no meu .zshrc

Isso resolveu o problema para mim, onde as outras respostas aqui (fornecer o script rvm ou ficar estável com arquivos dot automáticos) não.


2

Achei este comando muito útil. Resolve meu caso. Portanto, se alguém estiver tendo o mesmo problema, experimente: rvm get stable --auto-dotfiles


1

rvm install ruby-head Corrigido o problema para mim - consumia pouco tempo, mas funcionava. Não tenho certeza se isso fez alguma atualização não anunciada em meus arquivos bash.


1

Acabei removendo ~/.profile, ~/.bashrce ~/.zshrc.

Basicamente, eu só mantive ~/.bash_profilemeu mac. E funciona.

Acho que no meu caso existem:

exportar PATH = "$ PATH: $ HOME / .rvm / bin"
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Carregar RVM em uma sessão shell * como uma função *

nesses arquivos, e essas configurações duplicadas confundidas rvm


1

aviso Legal

Porque eu desenvolvo principalmente usando python, então não tenho certeza se esta solução alternativa forneceria um env ruby ​​correto ou apenas alteraria o caminho e se livraria do aviso

fundo

No meu caso, instalei rvmprimeiro e pyenvdepois. A configuração de ambos será alterada $PATH. Pelo aviso, parece que o rvm sempre quer ser o primeiro no caminho

$ echo $PATH

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

Mas se você adicionar eval "$(pyenv init -)"conforme exigido por pyenv, isso mudará seu $PATHpara

$ echo $PATH

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

Minha solução alternativa

$ rvm use system # Volte para o rubi do sistema

$ rvm use ruby-2.6.3 # Mude para a versão que você precisa usar

rvm mudará o caminho para o que quiser, então você não verá o aviso irritante novamente.


0

Funcionou depois de comentar as 2 primeiras linhas duplicadas e adicioná-las na parte inferior. Não se esqueça de reiniciar o 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/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

Você pode adicionar

rvm_silence_path_mismatch_check_flag=1

ao seu ~/.rvmrcarquivo. Isso é o que a mensagem de aviso sugere agora.


1
Isso é apenas ignorar a mensagem, não consertá-la, que é o que o usuário está pedindo. Além disso, para um novo projeto, o problema reaparecerá.
ma3x

@ ma3x Na verdade, o OP apenas declarou um problema sem fazer uma pergunta, então considero 'ignorar' uma mensagem de aviso uma sugestão válida. Além disso, não entendo a parte sobre novos projetos.
AkaZecik

1
Mesmo se não houver nenhum ponto de interrogação, você pode definitivamente entender pelo contexto que ele está tentando consertar o erro, e não ocultá-lo :) Além disso, sua resposta está incompleta porque isso é apenas uma parte do que a mensagem de aviso sugere. Inicialmente, sugere obter o RVM estável mais recente e fazer o autodot de seus arquivos. Para os novos projetos, esse foi meu erro, pois queria me referir a novos conjuntos de joias.
ma3x

@ ma3x Obrigado por seus insights :) Talvez seja apenas porque nossas formas de raciocínio diferem, mas depois de ler a pergunta e outras respostas, cheguei à conclusão de que o OP simplesmente quer se livrar deste aviso. Quero enfatizar novamente que isso não é um erro , é um aviso . E porque impor uma ordem de caminhos PATHme parece intrusivo e, no máximo , protetor , decidi postar esta resposta. Vou
reservar um

-3

CORRIGI ESSE PROBLEMA. TENTE USAR O COMANDO ASSIM:

rvm use 2.0.0-p353

ADICIONE -p353 ou outro detalhe de sua versão ao final da linha


6
Isso só resolve o problema da sessão de shell atual, portanto, não é exatamente a melhor resposta.
IIllIIll
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.