Como definir Ruby GEM_HOME e GEM_PATH


10

Eu sou um usuário NOVICE do Linux e uso o Linux mint 17.1

Reinstalei o Linux Mint 20 vezes nos últimos 3 dias para esse problema, mas não foi possível corrigi-lo

Estou tentando instalar o ruby ​​on rails usando o rvm, o que aconteceu foi se iniciar uma nova instalação do Linux e tentar instalar gemas e ruby ​​e outras coisas em uma sessão de terminal instalada com sucesso assim que eu fechar a sessão do terminal, não consigo obter essas gemas .

Ao reinstalá-lo mais de 20 vezes nos últimos 3 dias, pesquisei na web também. Foi-me dito para colocar a variável de ambiente no /etc/environmenteco do caminho nessa sessão e colá-lo no /etc/environmentarquivo.

mesmo agora não recebo minhas gemas instaladas

quando digitei rvm -v, recebo os seguintes erros

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 <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Eu sou uma pessoa muito iniciante quando se trata de trabalhar com terminal. Posso executar alguns comandos básicos para trabalhar com ruby.

Eu gostaria de saber

  1. Como definir PATH
  2. Como definir GEM_HOME
  3. Como definir GEM_PATH

Abaixo está o meu caminho completo

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

mr @mohsen pahlevanzades posso perguntar qual é o ponto de apagar essas duas linhas, se você não mente me dizendo, que diz respeito
Amjad

Se bem me lembro, você escreveu cumprimentos ou agradeceu:
PersianGulf

Respostas:


18

Parece que você deseja o comando exportpara definir variáveis ​​de ambiente:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Isso só terá efeito para a sessão atual. Para torná-los mais permanentes, adicione essas linhas ao seu ~/.bashrc.


3

Geralmente, isso significa que o rvm não está configurado corretamente. O erro usual é que você não modificou seu .bashrc(ou similar) corretamente ou não recarregou seu terminal.

Você não deve configurar GEM_HOME ou GEM_PATH manualmente ao usar o rvm.

Você pode tentar source ~/.rvm/scripts/rvme ver se isso funciona.

Também pode ser que você ainda não tenha construído um conjunto de gemas. Não use rvm e sudo. O Rvm funciona melhor quando instalado na sua conta e não em todo o sistema.


Você também pode adicionar source ~/.rvm/scripts/rvmao seu ~/.bashrcpara garantir que ele seja carregado toda vez que você iniciar um novo shell.
Niel de Wet

2

Aqui está o que aprendi e como resolvi esse problema aparentemente comum das variáveis ​​de ambiente GEM_HOME e GEM_PATH não configuradas como erro.


fundo

A instalação do RVM deve criar envios GEM_HOME e GEM_PATH para cada RVM configurado e faz isso. Mas há um bug aparentemente tal que, em alguns casos, os envios são configurados apenas temporariamente e, para configurá-los novamente, é necessário configurá-los com a linha de comando. Eu encontrei uma solução alternativa para fazer os ambientes persistirem para um RVM.

Gambiarra

  1. Encontre sua versão Ruby ativa (na RVM): no servidor de produção, vá para o diretório do aplicativo e digite $rvm list. Isso resultará em uma lista das versões do Ruby instaladas e qual está ativa para o RVM. Exemplo da resposta:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Então, eu sei que o RVM está atualmente usando a versão ruby-1.9.3-p551. Você precisa dessas informações para a próxima etapa.

  1. Obtenha os caminhos para GEM_PATH e GEM_HOME : Faça isso executando na linha de comando $rvm use ruby-1.9.3-p551. Em seguida, ainda a partir da linha comman mostrar todas as configurações de ambiente usando o comando env. Procure por GEM_PATH e GEM_HOME e copie-os na totalidade para um espaço de trabalho.

    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. Defina as variáveis ​​de ambiente GEM_HOME e GEM_PATH: Agora defina essas variáveis ​​de ambiente em um dos muitos arquivos de perfil. Como eu queria manter a estrutura de isolamento da versão do RVM, atualizei o /profile.d/appspecific.sh com estas duas linhas:

    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


aparentemente GEM_HOME e GEM_PATH não são específicos para RVM?
barlop

2

Eu descobri que .profile é carregado por último e coloca ~ / .local / bin e ~ / bin na frente do caminho. Mudei o /etc/profile.d/rvm.sh para ~ / .rvm e, no final do .profile, adicionei "source ~ / .rvm / rvm.sh" e o erro desapareceu. Estou no Linux Mint 18.3. Tenho pyenv, rvm e sdkman instalados e todos querem ser os últimos. Eles estão todos funcionando bem agora. :)

Se for um sistema compartilhado, mova o rvm.sh para algum lugar fora do caminho e qualquer outro usuário poderá obtê-lo, como em /opt/rvm/rvm.sh, por exemplo.


1

Como o @coteyr mencionado, você não deve definir manualmente GEM_HOME e GEM_PATH ao usar rvm. Se você checar sua variável de ambiente PATH, executando $ echo $PATH$ HOME / .rvm / bin, será necessário garantir que seu terminal execute comandos como um shell de login. Por exemplo, se você estiver em uma máquina Ubuntu, abra seu terminal e vá para: menu> Editar> Preferências de perfil> Comando e selecione "Executar comando como um shell de login"

Este parece ser um problema antigo com o rvmqual suponho que não é trivial de corrigir, uma vez que já existe há algum tempo.


1

Para preencher $GEM_PATHcom o meu sistema (Manjaro / Arch) gems, adicionei ao meu .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
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.