Instalando um Ruby Gem para uma versão específica do Ruby no Ubuntu

1

Eu tenho Ruby 1.8 e Ruby 1.9.1 no meu sistema operacional Ubuntu. Quando eu faço um gem install php_http_build_query , ele instala a gem no Ruby 1.8. Como faço para instalá-lo no Ruby 1.9.1?

    
por John 07.04.2015 / 18:18

5 respostas

1

Prefácio O RVM (Ruby Version Manager) pode ser a melhor alternativa a longo prazo.

Eu acredito que conheço o seu cenário porque eu já estive lá antes quando usei o Ubuntu 12.04. Antes de qualquer coisa, depois de passar por esses bastidores, aprendi que a melhor maneira de gerenciar Ruby em um sistema é usar o RVM (Ruby Version Manager) . Não faz parte da configuração oficial do gerenciador de pacotes Ubuntu / Debian, mas se você levar a sério o desenvolvimento do Ruby, o RVM é a melhor maneira de configurar e usar múltiplas versões do Ruby sem conflitos.

Mas se você simplesmente estiver usando o Ruby 1.9.1 e quiser que ele seja reconhecido como a versão padrão do Ruby, faça o seguinte.

Dito isso, se você estiver em uma configuração em que o RVM não atenda às suas necessidades ou se preferir ficar no Ruby 1.9.1, continue lendo ...

Suponho que você instalou o Ruby 1.8 por meio do repositório padrão no Ubuntu 12.04 e, em seguida, após o fato, percebeu que precisava do Ruby 1.9.1, portanto, instalou-o por meio de um comando como este:

sudo aptitude install ruby1.9.1 ruby1.9.1-dev \
                      rubygems1.9.1 irb1.9.1 ri1.9.1 rdoc1.9.1 \
                      build-essential libopenssl-ruby1.9.1 \
                      libssl-dev zlib1g-dev

Bem, isso irá colocar o Ruby 1.9.1 instalado no seu sistema, mas não fará do Ruby 1.9.1 o padrão. A chave para obter este conjunto é usar update-alternatives e como oficial A página man update-alternatives explica:

It is possible for several programs fulfilling the same or similar functions to be installed on a single system at the same time. For example, many systems have several text editors installed at once. This gives choice to the users of a system, allowing each to use a different editor, if desired, but makes it difficult for a program to make a good choice for an editor to invoke if the user has not specified a particular preference.

Debian’s alternatives system aims to solve this problem. A generic name in the filesystem is shared by all files providing interchangeable functionality. The alternatives system and the system administrator together determine which actual file is referenced by this generic name.

Portanto, neste caso, há três etapas que você precisa executar para obter o Ruby 1.9.1 corretamente reconhecido como o padrão Ruby no sistema.

Primeiro, execute este comando:

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 400 \
                         --slave   /usr/share/man/man1/ruby.1.gz ruby.1.gz \
                                   /usr/share/man/man1/ruby1.9.1.1.gz \
                         --slave   /usr/bin/ri ri /usr/bin/ri1.9.1 \
                         --slave   /usr/bin/irb irb /usr/bin/irb1.9.1 \
                         --slave   /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1

Em seguida, execute update-alternatives novamente para escolher seu interpretador Ruby. Isso também altera os links simbólicos para itens principais do Ruby:

sudo update-alternatives --config ruby

Faça sua seleção e, em seguida, vá para o update-alternatives dos GEMs Ruby relacionados:

sudo update-alternatives --config gem

Finalmente, confirme que a versão do Ruby foi atualizada assim:

 ruby --version
    
por 28.09.2015 / 07:31
0

Não é a melhor solução, mas estou com pressa. Fui para a pasta /var/lib/gems/1.8/gems/ e copiei o conteúdo para a pasta /var/lib/gems/1.9.1/gems . Eu não tinha uma pasta de gemas no 1.9.1, então tive que criá-la manualmente.

    
por 07.04.2015 / 18:25
0
O comando

Gem está vinculado à versão do Ruby instalada.

Gem for Ruby 1.8 é diferente de gem para ruby 1.9.

Portanto, se o seu caminho estiver apontando para o 1.8, o comando gem instalará o gem no caminho respectivo para 1.8.

Solução: A maneira rápida e simples é alterar o caminho do ruby na variável de ambiente para 1.9 e fazer gem install.

Nota: Se você precisar do Ruby 1.8, precisará alterar o caminho novamente. Além disso, a gem tem que ser instalada para cada versão do Ruby separadamente da maneira mencionada acima.

    
por 28.09.2015 / 07:13
0

Os comandos gem também vêm com um nome de arquivo por versão. Dê uma olhada em este pacote por exemplo: Ele contém gem1.8 . Isso significa que você pode segmentar a versão do Ruby desejada, independentemente da versão do Ruby padrão do sistema.

    
por 28.09.2015 / 08:12
0

Use o caminho absoluto para instalar a versão específica do gem para uma versão específica do ruby. por exemplo, /opt/sensu/embedded/bin/gem install vmstat .

ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]

/opt/sensu/embedded/bin/ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

Mesmo que minha versão padrão seja a ruby 1.9.3p392, eu posso instalar gems específicos para o ruby 2.3.0p0.

    
por 28.10.2016 / 23:29

Tags