É possível instalar versões Ruby pré-compiladas com RVM?

5

Estou usando o EC2 e às vezes lanço servidores que desejo usar apenas por um curto período de tempo. Geralmente eu quero instalar algumas versões ou versões do Ruby nelas, e para isso o RVM é muito conveniente - se não fosse pelo fato de levar uma eternidade para compilar o Ruby. É muito chato ter que esperar quase meia hora para que o Ruby compile quando o resto da configuração do servidor for feito em minutos. Elimina completamente a experiência da computação em nuvem.

Existe uma maneira de obter a conveniência do RVM sem a inconveniência de compilar cada versão do Ruby para cada novo servidor que eu inicio? Posso pré-compilar uma versão em Ruby e mantê-la em algum lugar acessível, e depois usar o RVM em vez de compilá-la a partir do código-fonte? Posso simplesmente arquivar algum diretório sob o diretório raiz do RVM depois de instalar uma versão em Ruby, salvá-la em algum lugar e depois extraí-la no lugar certo no próximo servidor que eu iniciar? Nesse caso, quais arquivos e diretórios eu preciso manter?

Eu quero usar o RVM não apenas para poder alternar entre versões do Ruby, mas também porque me permite manter conjuntos separados para diferentes aplicativos, portanto, não usar RVM seria muito inconveniente.

Todos os servidores têm o mesmo sistema operacional e arquitetura, Ubuntu 10.04, 32 bits.

    
por Theo 29.10.2010 / 23:03

5 respostas

0

Se você criar e implantar sua pasta ~ / .rvm pré-configurada e verificar se o .bashrc remoto está configurado para usá-la, você tem algum problema? Pelo que posso dizer, o rvm é projetado para permitir que você faça isso.

Os únicos obstáculos que imagino podem estar por perto, garantindo que você tenha as gemas e os pacotes corretos no lugar para permitir que seu código seja executado. Mas então, você prepararia seu .rvm na plataforma de destino, certo? Além disso, leve em consideração todos os pacotes de sistema operacional exigidos pelo seu ambiente Ruby.

    
por 24.11.2010 / 14:39
5

Provavelmente um pouco longo no dente agora, mas a partir de 1.16 rvm suporta o download de binários pré-compilados.

Eu estava com dificuldades quando pedi a versão principal (ou seja, 1.9.3)

20130212 00:31:00 dev@domU-xxxx:~ rvm install 1.9.3
Searching for binary rubies, this might take some time.
No binary rubies available for: ubuntu/12.04/i386/ruby-1.9.3-p385.
Continuing with compilation. Please read 'rvm mount' to get more information on binary rubies.

Então, olhei para o que estava realmente disponível em binários pré-criados:

20130212 00:31:27 dev@domU-xxxx:~ rvm list remote

# Rubies available for 'ubuntu/12.04/i386':

   ruby-1.9.3-p194
   ruby-1.9.3-p286
   ruby-1.9.3-p327
   ruby-1.9.3-p362
   ruby-1.9.3-p374
   ruby-2.0.0-rc1

E modifiquei minha instalação para solicitar a última versão pré-compilada

20130212 00:34:25 dev@domU-xxxx:~ rvm install 1.9.3-p374
Searching for binary rubies, this might take some time.
ruby-1.9.3-p374 - #configure
ruby-1.9.3-p374 - #download
######################################################################## 100.0%
ruby-1.9.3-p374 - #validate archive
ruby-1.9.3-p374 - #extract
ruby-1.9.3-p374 - #validate binary
ruby-1.9.3-p374 - #setup
Saving wrappers to '/home/dev/.rvm/bin'.
ruby-1.9.3-p374 - #importing default gemsets, this may take time ...
20130212 00:35:59 dev@domU-xxxxx:~

Como você pode ver, isso levou menos de dois minutos para ser executado (ao contrário dos 15 a 20 minutos necessários para compilar em uma pequena instância do EC2). Espero que isso ajude alguém com o mesmo problema.

    
por 12.02.2013 / 01:41
1

Hmm .. por que não criar um EBS AMI com RVM e as versões Ruby e lançá-lo quando você quiser? Apenas um pensamento:)

    
por 30.10.2010 / 11:13
1

Se você não quiser continuar usando o RVM, talvez queira usar os pacotes binários do ruby-enterprise? Eu estou usando não só porque é muito mais rápido de instalar, mas também por causa dos pacotes terrivelmente feitos no Ubuntu / Debian atualmente.

Portanto, existem pacotes binários para o Ubuntu e tenho certeza de que além da versão mais recente , eles também permitem que você baixe a versão anterior, etc.

Confira: link

O único problema é que isso provavelmente não permitirá que você alterne entre as instalações do ruby na mesma instância. Não tenho certeza se isso é algo que você absolutamente exige.

Mas além disso, seria simples desinstalar o script e instalá-lo no bash ou talvez com uma receita do chef. Mas é claro que não é tão conveniente quanto RVM.

Editar:

Se você não puder usar o REE .deb, o mais fácil seria criar uma AMI baseada em EBS e incluir uma instalação rvm junto com as versões mais usadas do Ruby. Essa é apenas uma solução para o problema.

Outra solução seria verificar /etc/rvm (assumindo toda a instalação do sistema) para rvm_path , rvm_prefix , rvm_bin_path e rvm_man_path e obtendo esses arquivos e fazendo o download deles em uma instância quando você o lançou .

Esse processo pode ser automatizado com um pequeno script de shell que você passa para a instância do EC2 (consulte user-data ) ao iniciá-lo.

Como medida geral, eu também verificaria a passagem de ./configure flags para rvm quando você cria versões adicionais em ruby para talvez acelerar a compilação. Não tenho certeza, mas aposto que você pode salvá-los em um arquivo .rvm ou similar.

A alternativa para acima é obter uma instância mais robusta, mas isso pode não funcionar a longo prazo, pois os custos associados à execução de um também são maiores.

    
por 30.10.2010 / 17:47
0

Em versões recentes do RVM, você pode passar a opção --binary

rvm install ruby-2.2.1 --binary --max-time 20

Você pode encontrar uma lista completa dos binários disponíveis com rvm list remote

rvm list remote

# Remote rubies available:

   jruby-0.9.0
   jruby-1.6.5
   jruby-1.7.8
   jruby-1.7.9
   jruby-9.0.0.0.pre1
   jruby-9.0.0.0.pre2
   jruby-9.0.0.0.pre2200
   jruby-9.0.0.0.rc1
   jruby-9.0.0.0.rc1200
   jruby-9.0.0.0.rc2
   jruby-9.0.0.0.rc2200
   rubinius-1.4.6
   rubinius-2.3.0
   rubinius-2.5.3
   rubinius-2.5.4
   rubinius-2.5.5
   rubinius-2.5.7
   ruby-1.9.3-p547
   ruby-1.9.3-p551
   ruby-2.0.0-p481
   ruby-2.0.0-p576
   ruby-2.0.0-p598
   ruby-2.1.2
   ruby-2.1.3
   ruby-2.1.5
   ruby-2.2.0
   ruby-2.2.1

# * - installed already

# To download and install: rvm install {name} --binary
    
por 16.07.2015 / 03:49