O RVM não consegue encontrar a nova versão do Ruby instalada (instalada anteriormente usando o Homebrew)

1

Sou iniciante, desculpe-me se estou dizendo ou fazendo coisas que você considera totalmente estúpidas. Eu não estou fazendo isso de propósito.

Como isso começou: Eu queria instalar gemas, mas recebi a seguinte mensagem de erro:

ERROR:  While executing gem ... (Gem::FilePermissionError)
   You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory

De alguma forma, meu sistema aparentemente ainda está usando a versão Ruby que acompanha o MacOS, o que dá esse erro de permissão. Ele deve estar usando a versão recém-instalada, 2.6.1., Que eu instalei usando o Homebrew.

Portanto, após uma pesquisa na Internet, instalei o rvm e tentei tornar o Ruby 2.6.1 o padrão:

~rvm --default use 2.6.1
Required ruby-2.6.1 is not installed.

Então o rvm me diz que o Ruby 2.6.1 não está instalado. Mas o homebrew insiste que está instalado:

~brew upgrade ruby
Error: ruby 2.6.1 already installed

Devo desinstalar o Homebrew Ruby e instalar o Ruby novamente via rvm?

Hanneke L
fonte

Respostas:

0

Primeiro de tudo, nada que você diga ou faça parecerá estúpido. Todos nós fomos iniciantes em algum momento.

A razão pela qual o seu Mac não reconheceu automaticamente a versão Ruby instalada pelo Homebrew é porque, por padrão, o computador procura apenas programas executáveis ​​em determinados diretórios. A lista de diretórios e a ordem em que o computador os consulta é chamada de PATH. Se você digitar echo $PATHTerminal, verá a lista de diretórios separados por dois pontos. Por padrão, em uma nova instalação do macOS, acredito que a lista fique assim:

/usr/bin:/bin:/usr/sbin:/sbin

Durante a instalação do Homebrew, um novo diretório /usr/local/biné criado e adicionado ao início do PATH. No entanto, quando você instala o Ruby com Homebrew, o Ruby é instalado /usr/local/opt/ruby/bin, o que não é adicionado PATHautomaticamente. Eu sei disso porque é mencionado pelo Homebrew no final da instalação do Ruby. É certo que a mensagem pode não significar muito para um iniciante:

If you need to have ruby first in your PATH run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

Desde a versão Homebrew de Ruby não estava na sua PATH, quando digitado gem install [some gem], o computador olhou para o programa chamado gemem /usr/local/binprimeiro lugar e não encontrá-lo, então ele olhou para ele em /usr/bine achei porque é onde o sistema gem(a versão do gemque vem com o macOS) está instalado.

Se você deseja saber qual versão de um programa específico está sendo usada na sessão atual do Terminal, você pode usar o whichcomando Por exemplo:

which ruby
which gem

Isso informará a localização do programa em que o computador o encontrou pela primeira vez.

Outro comando que você pode usar para verificar se está usando a versão correta do Ruby é:

ruby -v

Se você tivesse executado este comando:

echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile

e, em seguida, abrisse uma nova janela ou guia do Terminal (ou executada source ~/.bash_profile) para que as alterações entrassem em vigor. O diretório Homebrew Ruby seria o primeiro no seu PATH, o que significa que o computador procuraria gemlá primeiro e teria usado a versão Homebrew de Ruby.

Para explicar o comando acima, ele pega tudo entre aspas simples e o adiciona ( >>) a um arquivo chamado .bash_profileno diretório raiz do usuário ( ~/). Toda vez que você abre uma nova janela ou guia do Terminal, .bash_profileé lida e qualquer coisa definida lá é usada.

Da mesma forma, a razão pela qual o RVM não conseguiu reconhecer que o Ruby 2.6.1 foi instalado pelo Homebrew é porque o RVM e o Homebrew instalam o Ruby em dois locais separados que não se conhecem. Quando você instalou o RVM, ele instalou a versão 2.6.0. Não sei por que não instalou o 2.6.1, mas lembro-me no passado, quando usei o RVM, de que ele nem sempre instalava a versão mais recente. Pessoalmente, prefiro chrubye ruby-installgerencie versões do Ruby.

O legal de ferramentas como RVM, chruby e rbenv é que elas permitem a instalação de várias versões do Ruby no mesmo computador e você pode alternar de uma para outra facilmente. O Homebrew, por outro lado, pode gerenciar apenas uma versão do Ruby por vez.

monfresh
fonte
0

Eu desinstalei o Ruby usando o Homebrew. brew uninstall ruby

Em seguida, tentei instalar o Ruby usando o RVM. rvm install ruby

Deu Already installed ruby-2.6.0. To reinstall use:

rvm reinstall ruby-2.6.0

Então eu escolhi reinstalá-lo com o RVM. Isso finalmente resolveu o problema, eu consegui instalar gemas. No entanto, ainda não sei por que houve um problema com a instalação do Homebrew do Ruby.

Hanneke L
fonte